← kloudie MCP

Tool reference

All 122 tools, with parameters and cost. The server URL lists the 37 marked Default; add ?toolsets=all for every tool. Over plain HTTP with an API key, every tool is callable. Paid tools spend AI credits (1 credit = $0.002) and every result reports what it cost.

MCP (Claude, Cursor, ChatGPT)

https://app.kloudboard.com/mcp

REST (scripts, cron, your own code)

POST https://app.kloudboard.com/api/v1/tools/<tool>

REST calls send Authorization: Bearer <key> (create a key in Settings, API) and the tool's arguments as the JSON body. The reply is { ok, data, cost }; out of credits answers 402. Connect guide · OpenAPI spec (Postman, Insomnia, SDK generators)

Start and credits (always on)?toolsets=core

buy_creditsFree · read-onlyDefaultHow to add AI credits: the credit packs and prices, and the kloudboard billing link where the workspace owner buys them (Stripe Checkout). Does not charge anything. Give the person the link; never retry a paid tool in a loop while out of credits.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/buy_credits \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_credit_balanceFree · read-onlyDefaultThis workspace's AI credit balance: credits left, this period's allowance and use, and the most recent charges (tool, credits, when). Paid tools (voice, music, images, video, transcripts, research, ask_kloudie) draw from this balance; 1 credit = $0.002. Use before a large batch, or when a call fails for lack of credits. Free.
ParameterTypeDescription
recentintegerHow many recent charges to include.Default: 10

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_credit_balance \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_jobFree · read-onlyDefaultCheck a long job by the job_id a tool returned (generate_video, create_youtube_video, transcribe, render_composition, run_system, ask_kloudie). Returns status running, done or failed, when to poll again, and the job's result once it is done (the video link, transcript, System deliverables or kloudie's reply). Free; never starts or pays for anything again.
ParameterTypeDescription
job_idrequiredstringThe job_id from the tool that started the job, e.g. video:…, transcript:…, system:… or kloudie:….

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_job \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"job_id":"<job_id>"}'
get_pricingFree · read-onlyDefaultQuote AI credits before running anything. With no arguments: the price list for every paid job. With jobs: the exact cost of each planned call (same pricing the tools charge with), the total, and whether this workspace can afford it. Use before batches (a short's voiceover + images + video) and tell the person the total. Free.
ParameterTypeDescription
jobsobject[]Planned calls to quote. Omit for the price list.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_pricing \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_startedFree · read-onlyDefaultStart here. What this kloudboard connection can do for the "your workspace" workspace, the AI credit balance, five example prompts to try, and links to the docs and billing. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_started \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_workspace_overviewFree · read-onlyDefaultOrient yourself in the "your workspace" kloudboard workspace: boards with their stages, saved Systems (production workflows), recent runs, and the month's research allowance. Call this first. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_workspace_overview \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Create: voice, images, video, thumbnails?toolsets=create

attach_creation_to_cardFree · changes your workspaceAttach a Library creation to a board card as a file. Needs the card (video) id. Free.
ParameterTypeDescription
creationIdrequiredstringLibrary creationId to attach (from list_library).
cardIdrequiredstringCard id from list_cards or create_card.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/attach_creation_to_card \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"creationId":"<creationId>","cardId":"<cardId>"}'
create_youtube_videoSpends AI creditsCreate a narrated 16:9 stock-footage rough cut from a brief or Library script, up to 650 narration words. Library script narration is preserved, never rewritten. Pass the user's constraints in brief and targetDuration. Use dryRun=true for a FREE preflight before paid generation. Illustrative stock and timed captions cannot supply explanatory diagrams or establish publish readiness. Returns a jobId; poll get_job with its job_id. Generation costs credits, including completed narration if a later stage fails.
ParameterTypeDescription
topicstringShort topic; used as the brief when brief is omitted.
creationIdstringLibrary script id (list_library kind script, under 12,000 characters) to narrate word for word.
briefstringWhat the video is about plus the user's constraints (audience, tone, must-include points). Needed unless creationId is set.
dryRunbooleanFree deterministic preflight only. Does not generate narration, footage or a render, create a job, or spend credits.
targetDurationobjectRequested runtime window. Pass the user's actual range, for example 120 to 180 for 2–3 minutes. Never shorten an approved script to fit.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_youtube_video \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
generate_audioSpends AI creditsDefaultGenerate ElevenLabs audio: tts (a voiceover of the text), sfx (a sound effect from a description) or music (a background track from a mood). Saved to the workspace Library and filed in Drive under kloudie/<today>/; returns asset (asset_id, drive_file_id, a 24h url, expires_at). With timestamps, tts also returns every word's start/end in seconds for captions and word-synced cuts. Costs AI credits: tts about 60 per 1,000 characters (half with quality fast), sfx about 45, music about 55 per 30 s.
ParameterTypeDescription
capabilityrequiredenumtts = voiceover, sfx = sound effect, music = background track.One of: ttssfxmusic
promptrequiredstringtts: the exact words to speak (up to 5,000 characters). sfx/music: a description of the sound or mood.
voiceIdstringtts voice id (list_voices, in the create toolset, lists the workspace's voices). Default: a neutral stock voice.
timestampsbooleantts only: also return word timings [{ word, start, end }] in seconds.
qualityenumtts only: standard (Multilingual v2, best) or fast (Flash v2.5, half the credits). Default standard.One of: standardfast
durationSecondsnumbersfx only: clip length in seconds. Omit to let the model choose.
lengthSecondsnumbermusic only: track length in seconds. Default 30.
folderstringDrive folder for the copy, e.g. "kloudie/episode-12" (created if missing). Default kloudie/<today>.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_audio \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capability":"tts","prompt":"<prompt>"}'
generate_imageSpends AI creditsDefaultGenerate one or two images from a text prompt with Nano Banana (nano-banana-2 fast, nano-banana-pro sharper). Optionally edit a reference image via referenceUrl and set aspect (1:1, 4:3, 3:2, 16:9, 9:16, 2:3). Saves to the Library and Drive (kloudie/<today>/), returns assets with 6h links. Costs AI credits.
ParameterTypeDescription
promptrequiredstringWhat the image should show, or the edit to make to referenceUrl.
modelenumDefault nano-banana-2 (about 50 credits); nano-banana-pro is sharper (about 100).One of: nano-banana-2nano-banana-pro
aspectenumAspect ratio. Default 1:1.One of: 1:14:33:216:99:162:3
countintegerHow many images to generate, each charged. Default 1.
referenceUrlstringPublic image URL (max 8 MB) to edit or use as a style/subject reference.
folderstringDrive folder for the copy, e.g. "kloudie/episode-12" (created if missing). Default kloudie/<today>.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_image \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"<prompt>"}'
generate_reportSpends AI creditsWrite a titled markdown report on a topic and save it to the Library. Costs about 10 AI credits, billed by the model's actual usage.
ParameterTypeDescription
briefrequiredstringThe topic plus every fact the report should rely on; the brief is its only evidence.
instructionsstringExtra direction on length, format or audience.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_report \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"brief":"<brief>"}'
generate_thumbnailSpends AI creditsDefaultCreate a YouTube thumbnail with Pikzels: tool generate (text prompt), recreate (model a reference image, imageUrl required), or edit (change an image per instruction, imageUrl required). Saves to the workspace thumbnail library and Drive (kloudie/<today>/), returns asset with a 6h url. Costs AI credits (about 130 for pkz_3).
ParameterTypeDescription
toolrequiredenumgenerate = from text, recreate = model a reference image, edit = change an image per the prompt.One of: generaterecreateedit
promptrequiredstringWhat the thumbnail should show (generate/recreate) or the change to make (edit).
imageUrlstringPublic image URL; required for recreate (the reference) and edit (the image to change).
modelenumPikzels model for generate/recreate. Default pkz_3; edit ignores it.One of: pkz_2pkz_3pkz_4pkz_4_5
formatenumAspect ratio. Default 16:9.One of: 16:99:161:1
folderstringDrive folder for the copy, e.g. "kloudie/episode-12" (created if missing). Default kloudie/<today>.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_thumbnail \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool":"generate","prompt":"<prompt>"}'
generate_titlesSpends AI creditsDefaultThree to five YouTube title suggestions from Pikzels, from a topic, a thumbnail URL, or both. Costs about 60 credits.
ParameterTypeDescription
promptstringThe video topic or idea. Give this, imageUrl, or both.
imageUrlstringPublic URL of the thumbnail the titles should pair with.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_titles \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
generate_videoSpends AI creditsDefaultGenerate a short (4-8s) video clip from a text prompt with Google Veo (veo-3.1-lite cheapest, veo-3.1-fast, veo-3.1 sharpest). Set aspect (16:9 or 9:16) and duration; optionally animate a first frame via referenceUrl or a Library image via sourceCreationId. Async: returns a job_id; poll get_job until the clip lands in the Library and Drive. Costs AI credits (about 300 for 8 s of veo-3.1-lite; get_pricing quotes exactly).
ParameterTypeDescription
promptrequiredstringWhat happens in the clip: subject, action, camera, style.
modelenumDefault veo-3.1-lite (cheapest). Credits scale with model and duration.One of: veo-3.1-liteveo-3.1-fastveo-3.1
durationintegerClip length in seconds, 4 to 8. Default 6.
aspectenumAspect ratio. Default 16:9.One of: 16:99:16
referenceUrlstringPublic image URL to use as the first frame. Takes precedence over sourceCreationId.
sourceCreationIdstringLibrary image creationId (from generate_image or list_library) to use as the first frame.
generateAudiobooleanGenerate a native soundtrack with the clip. Default true.
folderstringDrive folder for the copy, e.g. "kloudie/episode-12" (created if missing). Default kloudie/<today>.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/generate_video \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"<prompt>"}'
get_creationFree · read-onlyDefaultFetch one Library creation by id: text in 15,000-character pages, or a fresh 6h media link (use it when an earlier link expired). If nextOffset is present, call again with that offset to read the rest. Free.
ParameterTypeDescription
creationIdrequiredstringCreation id from list_library or from the tool that made it.
offsetintegerCharacter offset to read from; pass the previous nextOffset. Default 0.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_creation \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"creationId":"<creationId>"}'
get_voice_profileFree · read-onlyRead the creator's voice before writing anything: the workspace voice profile (hooks, cadence, recurring phrases, structure, CTA style) or a named voice, plus the workspace's custom instructions. Write scripts, posts and titles to match it. Lists the available voices; if none exists, refresh_voice_profile builds one from imported videos. Free.
ParameterTypeDescription
namestringA named voice (as listed in "voices"), e.g. "X" or "Narrator". Omit for the workspace's own voice profile.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_voice_profile \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_libraryFree · read-onlyBrowse the workspace Library: saved scripts, post packs, voiceovers, images, videos and reports (titles only), with optional kind filter and title search. Free.
ParameterTypeDescription
kindenumOnly this kind of creation. Omit for all kinds.One of: scriptpoststtsimagevideoreport
querystringCase-insensitive match on the title.
limitintegerMax items, newest first. Default 20, max 50.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_library \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_saved_referencesFree · read-onlyList the workspace's saved style references with preview links. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_saved_references \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_voicesFree · read-onlyList the workspace's ElevenLabs voices (id, name, category) for generate_audio. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_voices \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_quality_standardsFree · changes your workspaceRead or replace the workspace Quality standards: the bar AI review judges every video and audio against (hook, retention, audio, visuals, text, accuracy, brand) plus the lessons past reviews added. Kept as the Brain doc "Quality standards". get is free; set replaces the whole text (owners and admins).
ParameterTypeDescription
actionrequiredenumget returns the standards; set replaces them.One of: getset
contentstringset only: the full new standards in markdown. Keep the '## Lessons from AI review' section if you want to keep past lessons.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_quality_standards \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"get"}'
refresh_voice_profileSpends AI creditsDistill a durable VOICE PROFILE (hook formulas, cadence, recurring phrases, structure, cta style) from the workspace's imported video transcripts and save it as a Brain doc that script writing follows. Needs 2+ matching transcripts. The default profile studies only the workspace's OWN channel; a NAMED voice takes name + titleMatch. For a posting voice, pass a platform ('X', 'tiktok', 'instagram') as titleMatch with a name. Costs a few AI credits.
ParameterTypeDescription
namestringName for a separate named voice (saved as "Voice: <name>"). Omit to refresh the workspace's own voice profile.
titleMatchstringChannel name or title text picking which transcripts to study, or a platform (X, tiktok, instagram) to learn from imported posts.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/refresh_voice_profile \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
review_fileSpends AI creditsAI review of a video or audio file in Drive: Gemini watches and listens to the whole version, scores it 0-10 against the workspace Quality standards, and adds timestamped review notes (marked AI) with severity, issue and fix, plus a summary note. Durable lessons are appended to the standards. Pass quoteOnly true first to get the price ('this review will cost N AI credits'), then run. Use in a loop: fix, upload a new version (upload_file / finish_upload, or the app), review again until the score is 9.5+ with no HIGH notes.
ParameterTypeDescription
fileIdrequiredstringDrive fileId of the video or audio (search_drive, finish_upload, save_to_drive).
versionintegerVersion to review. Default: the current version.
contextstringWhat changed in this version or what to focus on (the script, the brief, the last review's fixes).
quoteOnlybooleantrue = only return the price and the length it is based on; nothing runs or is charged.
learnbooleanAppend new durable lessons to the Quality standards. Default true.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/review_file \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"<fileId>"}'
review_scriptSpends AI creditsBeat-by-beat critique of a video script, scored on hook, retention, pacing, cta, and seo, grounded in this workspace's brand voice and top-performing videos. Pass the script via scriptText, or creationId for a saved Library script. Returns a not-grounded flag when no brand voice or performance data exists yet. Costs a few AI credits.
ParameterTypeDescription
scriptTextstringThe script text to review, up to 60,000 characters. Give this or creationId.
creationIdstringLibrary script creationId (from list_library or save_creation) to review instead of scriptText.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/review_script \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
save_creationFree · changes your workspaceSave a script or social post pack into the workspace Library (Playground > Library). Free.
ParameterTypeDescription
kindrequiredenumscript = a video script, posts = a social post pack.One of: scriptposts
titlerequiredstringLibrary title, up to 200 characters.
bodyrequiredstringThe full text to save (plain text or Markdown), up to 60,000 characters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_creation \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"script","title":"<title>","body":"<body>"}'
save_creation_to_brainFree · changes your workspaceSave a text creation (script, posts, or report) from the Library into the workspace Brain as a searchable note. Free.
ParameterTypeDescription
creationIdrequiredstringLibrary creationId of a script, post pack or report (from list_library).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_creation_to_brain \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"creationId":"<creationId>"}'
save_referenceFree · changes your workspaceSave an image URL into the workspace style-reference set for reuse in image generation. Free.
ParameterTypeDescription
imageUrlrequiredstringPublic image URL to save (max 10 MB).
labelstringShort name to recognize the reference by.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_reference \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"imageUrl":"<imageUrl>"}'
score_thumbnailSpends AI creditsDefaultGrade any thumbnail image URL 0-100 with Pikzels (five subscores plus one suggestion). Works on competitor thumbnails (https://i.ytimg.com/vi/VIDEOID/hqdefault.jpg). Costs about 25 credits.
ParameterTypeDescription
imageUrlrequiredstringPublic URL of the thumbnail image to grade.
titlestringThe video title it will run with, so the grade judges the pair.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/score_thumbnail \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"imageUrl":"<imageUrl>"}'
transcribeSpends AI creditsDefaultTranscribe a video from its link (YouTube, Instagram, TikTok, Facebook) or an audio/video file in the workspace Drive (fileId, for example from upload_file). A YouTube video with captions costs about 15 AI credits; anything transcribed from audio (other platforms, Drive files, videos without captions) costs about 30 credits per started minute. A long link can return a job_id: poll get_job.
ParameterTypeDescription
urlstringVideo URL on YouTube, Instagram, TikTok or Facebook. Give this or fileId.
fileIdstringDrive fileId of an audio or video file (from finish_upload, save_to_drive or search_drive). Give this or url.
withTimestampsbooleanfileId only: also return start times per line (for captions and cuts). Default false.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/transcribe \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Research?toolsets=research

analyze_channelFree · read-onlyAnalyze any public YouTube channel from a @handle, URL, name, or UC… id: subscribers, views, and outlier uploads. Use it for competitors and channels you only know by name. Included with the plan. Instagram, TikTok, and X are not yet available. Free.
ParameterTypeDescription
channelrequiredstringYouTube @handle, channel URL, channel name, or UC… id.
platformenumDefault youtube; only YouTube lookups are available today.One of: youtubeinstagramtiktokx

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/analyze_channel \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<channel>"}'
deep_researchSpends AI creditsDefaultResearch a topic across many web sources and save a cited report to the workspace Library. Plans sub-questions, reads up to ~12 sources, and writes a long note citing them by number. Slower and pricier than web_search (a minute or two, about 325 AI credits); use web_search + read_url for a quick fact. Returns the report's Library id (get_creation reads it in full) and the sources read.
ParameterTypeDescription
topicrequiredstringThe topic to research. Be specific.
anglestringOptional framing/audience, e.g. 'for a faceless finance channel'.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/deep_research \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"topic":"<topic>"}'
find_nichesSpends AI creditsFind YouTube niches and winning channels using a curated research database: describe a topic, or leave the query empty to browse by filters (size, views, revenue, RPM, channel age). 24 channels per page. Included with the active plan, subject to the research allowance.
ParameterTypeDescription
querystringThe niche or topic in plain words. Omit to browse by filters only.
shortsbooleantrue searches Shorts channels; the long-form-only filters are then rejected.
facelessOnlybooleantrue keeps only faceless channels.
minSubscribersintegerMinimum subscriber count.
maxSubscribersintegerMaximum subscriber count.
minAvgViewsPerVideointegerMinimum average views per video.
minMonthlyRevenuenumberMinimum estimated revenue per month, in USD. Long-form only.
minRpmnumberMinimum estimated RPM (USD per 1,000 views). Long-form only.
firstUploadAfterstringChannel's first upload on or after this date (YYYY-MM-DD). Good for finding new channels.
pageintegerResults page, 1 to 20. Default 1.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/find_niches \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
find_outlier_videosSpends AI creditsDefaultFind faceless YouTube outlier videos from a curated research database. Describe a topic to find uploads substantially outperforming their channel's usual results. Included with the active plan, subject to the research allowance.
ParameterTypeDescription
querystringDescribe the niche, or leave empty / use * to browse by filters only.Default: ""
pageintegerResults page, 1 to 20. Default 1.Default: 1
limitintegerVideos per page, 1 to 50. Default 24.Default: 24
minOutlierScorenumberMinimum outlier score: the video's views as a multiple of its channel's usual views. Default 3 (3x).Default: 3
maxOutlierScorenumberMaximum outlier score.
minSubscribersintegerMinimum subscribers of the uploading channel.
maxSubscribersintegerMaximum subscribers of the uploading channel.
minViewsintegerMinimum video views.
maxViewsintegerMaximum video views.
minDurationnumberMinimum video length in seconds.
maxDurationnumberMaximum video length in seconds.
minUploadDatestringUploaded on or after this date (YYYY-MM-DD).
maxUploadDatestringUploaded on or before this date (YYYY-MM-DD).
videoTypeenumlong = long-form only, shorts = Shorts only. Omit for both.One of: longshorts
ytChannelIdstringOnly videos from this channel (UC… id, from search_youtube or find_niches).
isAiContentbooleantrue keeps only videos flagged as AI-made; false excludes them.
sortByenumSort field. Omit for best match to the query.One of: outlierScorevideoViewschannelSubCountvideoPublishedAt
sortDirectionenumSort direction for sortBy.One of: ascdesc

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/find_outlier_videos \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_channel_thumbnailsFree · read-onlyList a YouTube channel's recent thumbnails from a channel or video link, to copy its style. Public data, free.
ParameterTypeDescription
urlrequiredstringA YouTube channel URL, @handle URL, UC… channel id, or any video link from the channel.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_channel_thumbnails \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>"}'
get_youtube_channelSpends AI creditsLook up one YouTube channel by its UC… id (search_youtube returns them): subscribers, views, country, description, and outlier videos. From a @handle, URL or name, use analyze_channel. Included with the active plan, subject to the research allowance.
ParameterTypeDescription
channelIdrequiredstringYouTube channel id starting with UC (from search_youtube or a channel URL).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_youtube_channel \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channelId":"<channelId>"}'
get_youtube_commentsFree · read-onlyDefaultRead what an audience says: public YouTube comments on given videos, or on a channel's top or latest videos (yours or a competitor's), most-liked first, each with a link to the comment. Use it to find repeated wants, pains, questions and the words viewers use before choosing topics, titles or a product. Free; read-only.
ParameterTypeDescription
videosstring[]YouTube video links or ids (up to 10). Use this or channel.
channelstringYouTube @handle, channel URL, name, or UC… id: reads comments on that channel's videos.
pickenumWith channel: its most-viewed videos (top, default) or latest uploads (recent).One of: toprecent
video_countintegerWith channel: how many videos to read. Default 5.
per_videointegerComments per video, most relevant first. Default 40, max 100; 300 in total.
orderenumrelevance (default) or time (newest first).One of: relevancetime
searchstringOnly comments containing this text, e.g. a question word or product name.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_youtube_comments \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
read_urlSpends AI creditsDefaultOpen a single web page or video URL and read its full text (articles, docs, blog posts; video URLs return their transcript). Use it to read a web_search result or any link. Costs about 15 AI credits per page; a TikTok, Instagram or other video without captions costs about 30 per minute of video. An unreadable page is free.
ParameterTypeDescription
urlrequiredstringThe absolute http(s) URL to open and read.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/read_url \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>"}'
search_youtubeSpends AI creditsDefaultSearch live YouTube results with current views and recency for keyword and packaging research. Included with the active plan, subject to the research allowance.
ParameterTypeDescription
queryrequiredstringSearch terms, as typed into YouTube search.
typeenumOnly this result type. Omit for mixed results.One of: videochannelplaylistshorts
sortByenumResult order.One of: relevancepopularityratingdateviews

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_youtube \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<query>"}'

Drive and files?toolsets=drive

create_documentFree · changes your workspaceCreate a collaborative document in Drive from plain text or simple markdown (one paragraph per line). Free.
ParameterTypeDescription
titlerequiredstringDocument title (its Drive file name).
contentrequiredstringBody as plain text or simple Markdown, one paragraph per line, up to 60,000 characters.
folderIdstringDrive folder id (from search_drive or list_drive). Default: the Drive root.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_document \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"<title>","content":"<content>"}'
edit_documentFree · changes your workspaceRead or edit an existing native Drive document. Always read first; edit needs the returned revision and replaces ONE tab with contentText (plain text, newlines become paragraphs). Preserve facts and all unrequested content. Other tabs and previous-version history survive. Returns a conflict if someone edited it meanwhile. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: readedit
fileIdrequiredstringDrive file id of a native document (from search_drive or create_document).
tabIdstringTab id from read; required for multi-tab documents.
revisionstringThe exact revision returned by read, required for edit.
contentTextstringComplete replacement plain text for ONE tab. Newlines become paragraphs.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/edit_document \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"read","fileId":"<fileId>"}'
finish_uploadFree · changes your workspaceDefaultStep 2 of 2 after upload_file: confirms the PUT landed and adds the file to Drive. Pass the same uploadId, name, contentType and folder. Returns the Drive fileId and a download link. Free.
ParameterTypeDescription
uploadIdrequiredstringuploadId returned by upload_file.
namerequiredstringThe same file name passed to upload_file.
contentTyperequiredstringThe same MIME type passed to upload_file.
folderstringDrive folder path such as "kloudie/voiceovers". Missing folders are created. Default "kloudie".

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/finish_upload \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"uploadId":"<uploadId>","name":"<name>","contentType":"<contentType>"}'
get_drive_urlFree · read-onlyMint a fresh (~6h) download URL for any file: a Drive file id (search_drive) or a Library asset id (asset_id, libraryId, creationId or thumbId from a generator). Use it whenever an earlier link expired. Returns url, expires_at, mime, bytes and both ids; also share_url (a durable watch link) when the file is shared publicly. Free.
ParameterTypeDescription
fileIdrequiredstringA Drive file id (search_drive, drive_file_id) or a Library asset id (asset_id, libraryId, creationId, thumbId).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_drive_url \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"<fileId>"}'
list_driveFree · read-onlyList the workspace Drive by structure: with no arguments returns the Drive root (folders with item counts, plus root files); with `folder` (a name or id) returns that folder's contents and its path. Use before organizing or moving files. Free.
ParameterTypeDescription
folderstringA Drive folder's name (fuzzy) or id. Omit to list the Drive root.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_drive \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_file_versionsFree · read-onlyList a Drive file's saved document snapshots and uploaded media versions. Requires access to the file. Free.
ParameterTypeDescription
fileIdrequiredstringDrive file id (from search_drive).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_file_versions \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"<fileId>"}'
manage_drive_itemFree · changes your workspaceOrganize the workspace Drive: create_folder (name, optional parentId), rename (fileId + name), or move (fileId + parentId, null for the Drive root). Resolve ids with search_drive first. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: create_folderrenamemove
fileIdstringThe Drive file or folder id (rename / move / delete).
namestringFolder name (create_folder) or the new name (rename).
parentIdstringParent/destination folder id; omit or null for the Drive root.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_drive_item \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create_folder"}'
read_documentFree · read-onlyDefaultRead a native workspace document's content as text (headings + paragraphs) so you can summarize, quote, or work from it. Find the file id with search_drive first. Free.
ParameterTypeDescription
fileIdrequiredstringThe native document's Drive file id (from search_drive).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/read_document \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"<fileId>"}'
save_to_driveFree · changes your workspaceDefaultCopy a Library generation (voiceover, music, sound effect, image, video, thumbnail, dub) into another Drive folder, e.g. "kloudie/episode-12" (created if missing). New generations are already filed under kloudie/<date>/; use this for older items or a second copy. Returns the Drive fileId and a 6h download link. Free; counts toward Drive storage.
ParameterTypeDescription
creationIdrequiredstringLibrary id returned by a generator (libraryId / creationId).
namestringFile name in Drive; defaults to the creation's title.
folderstringDrive folder path such as "kloudie/voiceovers". Missing folders are created. Default "kloudie".

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_to_drive \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"creationId":"<creationId>"}'
search_driveFree · read-onlyDefaultFind a Drive file or folder by name (fuzzy). Returns each hit's id, name, type, and the folder it lives in. Use list_drive to list a folder's full contents by structure. Free.
ParameterTypeDescription
queryrequiredstringPart of the file or folder name; fuzzy matched.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_drive \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<query>"}'
share_drive_fileFree · reaches people outsideShare a Drive file publicly as view-only, or unshare to turn public access off. share makes it viewable by ANYONE with the link: explain that and only do it when the user asks to share publicly. unshare keeps existing individual invitations. Requires Drive management permission. Free.
ParameterTypeDescription
fileIdrequiredstringDrive file id (from search_drive).
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: shareunshare

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/share_drive_file \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"<fileId>","action":"share"}'
upload_fileFree · changes your workspaceDefaultSend a local file (audio, video, image, document, up to 2 GB) into the workspace Drive, for transcription, references, review or posting. Step 1 of 2: returns a presigned PUT uploadUrl and a ready curl command (valid 1 hour). Run it with the local path, then call finish_upload. The file never passes through this conversation. Free; counts toward Drive storage.
ParameterTypeDescription
namerequiredstringFile name with extension, no folders, e.g. "interview.mp4".
contentTyperequiredstringMIME type, e.g. "audio/mpeg", "video/mp4", "image/png".
sizeBytesrequiredintegerExact file size in bytes (max 2 GB), checked against the Drive quota.
folderstringDrive folder path such as "kloudie/voiceovers". Missing folders are created. Default "kloudie".

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/upload_file \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"<name>","contentType":"<contentType>","sizeBytes":1}'

Boards, cards and tasks?toolsets=workspace

apply_board_templateFree · changes your workspaceCreate a new board from a published template chosen from search_board_templates. Needs board management permission. Copies its published columns and any included example cards. Use only when the user wants that template applied; if multiple search results fit, ask which one. Free.
ParameterTypeDescription
templateIdrequiredstringtemplateId from search_board_templates.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/apply_board_template \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"templateId":"<templateId>"}'
complete_stage_cardsFree · changes your workspaceMark every accessible unfinished card in one column complete, in one operation (up to 500). Resolve exact boardId and stageId using list_boards. Preserves the column and existing assignees; never creates payouts. To credit an editor, resolve their userId with search_people and pass assigneeId to add them as an assignee (including already completed cards when retrying credit). Returns actual completedCount/cardIds and assignedCount/assignedCardIds. Up to 500 selected cards. Use for an explicit request to complete all cards in a column, not repeated update_card calls.
ParameterTypeDescription
boardIdrequiredstringBoard id from list_boards.
stageIdrequiredstringThe column (stage) id on that board, from list_boards.
assigneeIdstringExisting teammate userId from search_people. Adds editor credit without replacing assignees or creating payouts.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/complete_stage_cards \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"boardId":"<boardId>","stageId":"<stageId>"}'
create_boardFree · changes your workspaceCreate a new board in this workspace, seeded with the default production pipeline stages (Idea, Script, Film, Edit, Publish). Returns the boardId and its stageIds. Needs board management permission. Free.
ParameterTypeDescription
namerequiredstringThe board's name.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_board \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"<name>"}'
create_cardFree · changes your workspaceDefaultCreate a card on a board in the content pipeline. Get board and stage ids from get_workspace_overview; without stageId the card lands in the board's first stage. Free.
ParameterTypeDescription
boardIdrequiredstringBoard id from get_workspace_overview.
titlerequiredstringCard title, usually the working video title.
descriptionstringCard body (plain text or Markdown). Empty keeps the board's card template.Default: ""
stageIdstringStage id on that board (get_workspace_overview). Default: the board's first stage.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_card \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"boardId":"<boardId>","title":"<title>"}'
create_taskFree · changes your workspaceDefaultCreate a workspace task assigned to the authenticated caller (already assigned to me, no reassignment needed), optionally with a due date (ISO 8601) or attached to a card. Free.
ParameterTypeDescription
titlerequiredstringTask title, up to 300 characters.
dueAtstringDue date-time, ISO 8601 with offset, e.g. 2026-10-12T17:00:00Z.
cardIdstringCard id (from list_cards) to attach the task to.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_task \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"<title>"}'
get_cardFree · read-onlyDefaultOne card in full: title, description, stage, board, due date, and its latest comments. Free.
ParameterTypeDescription
cardIdrequiredstringCard id from list_cards.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_card \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cardId":"<cardId>"}'
get_card_templateFree · read-onlyThe board's card description template: the text new cards start from when created without a description. Empty when unset. Free.
ParameterTypeDescription
boardIdrequiredstringBoard id from list_boards.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_card_template \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"boardId":"<boardId>"}'
get_card_timelineFree · read-onlyChronological event history of one card, grouped into sessions (default), days, or individual events, with the columns each move went between; from/to are ISO and when reads them in the key owner's time zone. Use for 'walk me through this card', 'what happened to X', 'who worked on it'. Free.
ParameterTypeDescription
cardIdrequiredstringCard id from list_cards.
granularityenumsession (default) groups bursts of activity, day groups by date, event lists every event.One of: eventsessiondayDefault: "session"

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_card_timeline \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cardId":"<cardId>"}'
get_whats_newFree · read-onlyDefaultThe published changelog, newest first: what shipped, with dates and bullet items. Use for 'what's new', 'what's new in <area>', 'did you ship X', 'when did Y land', release notes. Pass `query` for an area and `since` for a window. If nothing matches, the reply says so: then call search_help for the current product docs; an empty changelog never means nothing shipped. Free.
ParameterTypeDescription
limitintegerHow many changelog entries, newest first. Default 10.Default: 10
sincestringOnly entries dated on or after this ISO date (YYYY-MM-DD), e.g. the start of 'this month'.
querystringArea or feature to filter by, matched against titles and bullet items, e.g. 'mcp', 'thumbnails', 'Drive'.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_whats_new \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_asana_projectFree · changes your workspaceImport an Asana project through the workspace's connected Asana account: sections become columns, tasks become cards (title, notes, completion marker, due date, order). Call WITHOUT asanaProjectId first to list the account's Asana projects, then pick one. Already-imported projects are reported, never doubled. Free.
ParameterTypeDescription
asanaProjectIdstringAsana project id from the list this tool returns when called without it. Omit to list them.
targetBoardIdstringExisting kloudboard board id to import into. Omit to create a new board named after the source.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_asana_project \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_clickup_listFree · changes your workspaceImport a ClickUp list through the workspace's connected ClickUp account: the list's statuses become columns, tasks become cards (title, description, due date, order). Call WITHOUT clickupListId first to list the account's ClickUp lists, then pick one. Already-imported lists are reported, never doubled. Free.
ParameterTypeDescription
clickupListIdstringClickUp list id from the list this tool returns when called without it. Omit to list them.
targetBoardIdstringExisting kloudboard board id to import into. Omit to create a new board named after the source.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_clickup_list \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_monday_boardFree · changes your workspaceImport a Monday.com board through the workspace's connected Monday account: status labels (or groups) become columns, items become cards (title, other columns folded into the description, due date, order). Call WITHOUT mondayBoardId first to list the account's Monday boards, then pick one. Already-imported boards are reported, never doubled. Free.
ParameterTypeDescription
mondayBoardIdstringmonday.com board id from the list this tool returns when called without it. Omit to list them.
targetBoardIdstringExisting kloudboard board id to import into. Omit to create a new board named after the source.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_monday_board \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_notion_databaseFree · changes your workspaceImport a Notion database through the workspace's connected Notion account: the status (or select) property's options become columns, rows become cards (title, page body, due date, order). Call WITHOUT notionDatabaseId first to list the account's Notion databases, then pick one. Already-imported databases are reported, never doubled. Free.
ParameterTypeDescription
notionDatabaseIdstringNotion database id from the list this tool returns when called without it. Omit to list them.
targetBoardIdstringExisting kloudboard board id to import into. Omit to create a new board named after the source.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_notion_database \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_trello_boardFree · changes your workspaceImport a Trello board through the workspace's connected Trello account: lists become columns, cards become cards (title, description, due date, order). Call WITHOUT trelloBoardId first to list the account's Trello boards, then pick one. Already-imported boards are reported, never doubled. Free.
ParameterTypeDescription
trelloBoardIdstringTrello board id from the list this tool returns when called without it. Omit to list them.
targetBoardIdstringExisting kloudboard board id to import into. Omit to create a new board named after the source.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_trello_board \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_boardsFree · read-onlyEvery board's stages with live card counts. Ids feed create_card, list_cards, and update_card. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_boards \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_cardsFree · read-onlyDefaultList cards, newest first: optionally filtered by board, stage, or title text. Returns cardIds for get_card and update_card. Free.
ParameterTypeDescription
boardIdstringOnly cards on this board (id from get_workspace_overview).
stageIdstringOnly cards in this stage (id from get_workspace_overview).
querystringTitle text or a short id like KB-26.
limitintegerMax cards. Default 25, max 50.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_cards \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_tasksFree · read-onlyDefaultList or search tasks for the person connected: mine (assigned to them or their own unassigned), created (they made), assigned (assigned to them), or project (the shared board list, private excluded). Filter by title with query; completed=false shows open, true shows done, omit for both. Returns ids for update_task. Free.
ParameterTypeDescription
scopeenumWhich tasks; see the tool description. Default mine.One of: minecreatedassignedprojectDefault: "mine"
completedbooleanfalse = open only, true = done only, omit for both.
querystringCase-insensitive match on the task title.
limitintegerMax tasks, newest first. Default 25, max 100.Default: 25

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_tasks \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_calendar_eventFree · changes your workspaceList, create or update plain calendar events in this workspace (card deadlines and meetings are managed elsewhere). Times are ISO 8601. create needs title + start; update needs eventId (from list), title and start. Deleting an event is app-only. Reading needs calendar access; changing it needs calendar create or edit permission. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: listcreateupdate
eventIdstringThe event's id from list; update and delete need it.
titlestringEvent title; create and update need it.
startstringStart as ISO 8601, e.g. "2026-10-12T13:00:00+02:00"; create and update need it.
endstringEnd as ISO 8601; defaults to the start.
descriptionstringNotes shown on the event.
allDaybooleantrue for an all-day event.
colorstringEvent color, e.g. "blue" or "#3b82f6".
limitintegerHow many events list returns (default 50, max 100).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_calendar_event \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
manage_reviewFree · changes your workspaceWork with review feedback on a Drive file (fileId from search_drive): list_comments, add_comment (optionally at a video timestampSeconds), resolve_comment (commentId from list_comments), approve or request_changes on a version (version number). Commenting needs drive view permission; approving or requesting changes needs drive upload permission. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: list_commentsadd_commentresolve_commentapproverequest_changes
fileIdrequiredstringThe Drive file under review (find it with search_drive). Required.
contentstringComment text for add_comment.
commentIdstringComment id (from list_comments) for resolve_comment.
versionintegerFile version number. Required for approve and request_changes.
timestampSecondsnumberAnchor an add_comment at this playback second (video/audio files).

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_review \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list_comments","fileId":"<fileId>"}'
manage_stageFree · changes your workspaceManage a board's kanban stages (columns): create (boardId + title), rename (stageId + title and/or color), or reorder (stageIds in the new order). Get ids from list_boards. Needs board management permission. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: createrenamereorder
boardIdstringBoard id from get_workspace_overview or list_boards. Required for create and reorder.
stageIdstringStage id for rename or delete.
titlestringNew stage name for create or rename.
colorstringStage dot color (a CSS var or value) for create or rename.
stageIdsstring[]For reorder: every stage id of the board in the new order.
moveToStageIdstringFor delete: move the deleted stage's cards here instead of orphaning them.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_stage \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create"}'
search_board_templatesFree · read-onlySearch published board templates by name, topic, description or column names. Exact slugs are not required. Omit query to browse. Returns real templateIds; use these for apply_board_template, never invent a slug or templateId. Free.
ParameterTypeDescription
querystringWords to match against template names, topics, descriptions and column names. Omit to browse.
limitintegerMax templates. Default 10, max 20.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_board_templates \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
search_helpFree · read-onlyDefaultCurated, accurate documentation about kloudboard itself: features, permissions and guest visibility, files and Drive, chat bridges, credits and billing, payouts and fees, integrations and API availability, automations and webhooks. Call this for any question about how kloudboard works, and answer only from what it returns.
ParameterTypeDescription
queryrequiredstringThe question or topic in plain words, e.g. "how do guest permissions work".

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_help \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<query>"}'
set_card_templateFree · changes your workspaceSet the board's card description template (up to 5000 chars; empty string clears it). New cards created without a description start from it. Free.
ParameterTypeDescription
boardIdrequiredstringBoard id from list_boards.
templaterequiredstringThe full template text (replaces the current one). Empty string clears it.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/set_card_template \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"boardId":"<boardId>","template":"<template>"}'
update_cardFree · changes your workspaceDefaultOne edit on a card (cardId from list_cards): move_stage (stageId from get_workspace_overview), rename (newTitle), set_due (dueAt ISO 8601, omit to clear), comment (body), complete, set_priority (priority, omit to clear), block (optional reason) or unblock. Free.
ParameterTypeDescription
cardIdrequiredstringCard id from list_cards.
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: move_stagerenameset_duecommentcompleteset_priorityblockunblock
stageIdstringmove_stage: target stage id on the card's board.
newTitlestringrename: the new title.
dueAtstringset_due: ISO 8601 with offset. Omit to clear the due date.
bodystringcomment: the comment text, up to 4,000 characters.
priorityenumset_priority: the new priority. Omit to clear it.One of: urgenthighmediumlow
reasonstringblock: why the card is blocked, up to 200 characters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/update_card \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cardId":"<cardId>","action":"move_stage"}'
update_taskFree · changes your workspaceDefaultOne structured edit on a task: complete, reopen, rename (newTitle), set_due (dueAt ISO 8601, or omit to clear), reassign (assigneeId, a member's user id), or unassign. Deleting is app-only. Identify the task with taskId, or taskName to resolve it by title. Free.
ParameterTypeDescription
taskIdstringTask id from list_tasks.
taskNamestringTask title to resolve when taskId is unknown; must match exactly one task.
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: completereopenrenameset_duereassignunassign
newTitlestringrename: the new title.
dueAtstringset_due: ISO 8601 with offset. Omit to clear the due date.
assigneeIdstringreassign: the member's userId from search_people.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/update_task \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"complete"}'
update_workspace_settingsFree · changes your workspaceUpdate this workspace's settings (only the fields you pass): name, description (empty string clears it), or logoUrl. Needs settings edit permission. Free.
ParameterTypeDescription
namestringNew workspace name.
descriptionstringWorkspace description (empty string clears it).
logoUrlstringWorkspace logo image url.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/update_workspace_settings \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Brain and memory?toolsets=brain

get_kloudie_instructionsFree · read-onlyRead the workspace's current custom instructions for how kloudie should behave (tone, focus, preferences). Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_kloudie_instructions \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
import_channel_contentSpends AI creditsImport a social channel's fresh content into the Brain (transcribing videos). Platforms: youtube, tiktok, instagram, twitter. Pass `query` to import a specific item by title words, `limit` (1-15 per call, default 10; the result says how many remain, so call again for the rest). Import without a connection by passing `channel_url`. Spends AI credits per transcribed item.
ParameterTypeDescription
providerrequiredenumThe platform the channel or links are on.One of: youtubetiktokinstagramtwitter
channel_urlstringYouTube: a channel link, @handle, or any video link. Other platforms: one or more full post/video links.
querystringTitle words to import only the matching item(s).
limitintegerMax items to import this call, newest first. Default 10, max 15.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/import_channel_content \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"youtube"}'
list_brainFree · read-onlyList the Brain's contents by structure: with no arguments returns the workspace's Brain folders (with counts) plus source groups and totals; with `folder` returns every item in that folder or group (title, type, id). Use it to answer what is IN the Brain; use search_brain for passage retrieval. Free.
ParameterTypeDescription
folderstringA folder or source-group name from a previous list_brain call. Omit to list folders and groups.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_brain \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_channel_contentFree · read-onlyList a social channel's recent videos/posts (title, date, already-in-Brain) WITHOUT importing. YouTube needs no connection: pass channel_url (channel link, @handle, or video link). Free.
ParameterTypeDescription
providerrequiredenumThe platform the channel or links are on.One of: youtubetiktokinstagramtwitter
channel_urlstringYouTube: a channel link, @handle, or any video link. Other platforms: one or more full post/video links.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_channel_content \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"youtube"}'
manage_memoryFree · changes your workspaceReview the workspace's durable kloudie memories: list (active), list_pending (AI-proposed), approve / reject a pending one (memoryId), or add one for the whole workspace (title + content). To remember something for one board or System, use save_memory. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: listlist_pendingaddapprovereject
memoryIdstringMemory id: from list_pending for approve or reject.
titlestringadd: short memory title.
contentstringadd: the memory itself, up to 8,000 characters.
typestringMemory category. Defaults to brand_voice. Supported categories include golden_hook, golden_cta, golden_transition, audience_insight, brand_voice, content_pattern, and topic_expertise.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_memory \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
read_brain_itemFree · read-onlyRead one Brain item's full text end to end: an uploaded file, a synced source, or a knowledge note. Pass the item's id (from search_brain or list_brain) or its title (fuzzy matched). Free.
ParameterTypeDescription
idstringItem id from search_brain (src:<uuid> or doc:<slug>) or list_brain (a source uuid or a doc slug). Give this or title.
titlestringItem title, fuzzy matched, when the id is unknown.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/read_brain_item \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
save_memoryFree · changes your workspaceRemember a preference, rule, fact or link for every later kloudie turn, scoped to where it applies: workspace (everywhere), one board, or one System. Without a scope it returns status needs_scope with the options; ask the user which, then call again with scope and scopeId. Free.
ParameterTypeDescription
contentrequiredstringWhat to remember, written so it stands on its own later: the preference, rule or fact, and for a link what it showed and why it matters.
titlestringShort title. Defaults to the first sentence.
scopeenumWhere it applies: workspace (everywhere, every board), board, or system. Omit when the user did not say; the tool then returns status needs_scope with the options to ask about.One of: workspaceboardsystem
scopeIdstringboard or system: the id from a needs_scope option.
typestringMemory category, as in manage_memory. Defaults to brand_voice.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_memory \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"<content>"}'
save_to_brainFree · changes your workspaceDefaultSave a durable, team-visible note to the workspace knowledge base (the kloudie Brain) so it can be recalled later with search_brain. Each save creates a new note (saving the same text again is a no-op); pass `id` to update a note you saved. Free.
ParameterTypeDescription
titlestringNote title. Default: the first line of content.
contentrequiredstringThe note text (plain text or Markdown), up to 20,000 characters.
idstringTo update an existing note, its id from an earlier save_to_brain or search_brain (src:<uuid>). Omit to save a new note.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/save_to_brain \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"<content>"}'
search_brainFree · read-onlyDefaultSearch the workspace's knowledge base (the kloudie Brain): synced docs, imported transcripts, uploaded files, notes, the voice profile and saved creations. Returns matching passages, each with a stable id (src:<uuid> or doc:<slug>), title and link to cite; the id reads the whole item. Pass several angles in `queries` in ONE call to explore broadly. Free.
ParameterTypeDescription
querystringOne search phrase. Give this, queries, or both.
queriesstring[]Up to 6 phrasings searched together and merged into one ranked list.
kintegerPassages per query. Default 8; total hits are capped at 50.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_brain \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
set_kloudie_instructionsFree · changes your workspaceSet, replace, or clear the workspace's custom instructions for how kloudie should behave. Owner and admins only. Pass the FULL desired text (replaces the previous); empty string clears. Free.
ParameterTypeDescription
instructionsrequiredstringThe full instruction text (replaces the current one), up to 32,000 characters. Empty string clears it.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/set_kloudie_instructions \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instructions":"<instructions>"}'

Social posting?toolsets=social

get_instagram_accountFree · read-onlyLook up an Instagram business or creator account by username. Requires a connected Instagram professional account in this workspace. Returns the profile and follower/media counts through Instagram Graph; personal accounts are unavailable. Free.
ParameterTypeDescription
usernamerequiredstringInstagram username, with or without the leading @.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_instagram_account \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"<username>"}'
list_connectionsFree · read-onlyList the social accounts connected to this workspace (platform, name/handle, connected flag, last sync time, connection error). Use it to answer what's connected and before publish_post or a stats question. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_connections \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_post_queueFree · read-onlySee the scheduled social posts for this workspace: action list returns the upcoming queue (id, scheduled time, preview, status). Unscheduling a post is app-only. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: list
post_idstringScheduled post id from list. Only cancel uses it, and cancelling is app-only.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_post_queue \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
publish_postFree · reaches people outsideDefaultPublish a post to the workspace's connected X (Twitter) or LinkedIn account. Text over 280 characters auto-threads on X into a numbered thread (LinkedIn posts as one update). Posting is PUBLIC and cannot be undone. On success it returns the live post URL; relay it. Pass schedule_at (ISO, a future time) to queue the post for later instead of posting now. If no account is connected or it lacks posting permission, the result carries the honest connect/reconnect message; relay it verbatim. Free (no AI credits).
ParameterTypeDescription
platformenumWhere to post. Default x.One of: xlinkedinDefault: "x"
textrequiredstringThe post text, up to 20,000 characters; on X anything over 280 becomes a numbered thread.
schedule_atstringFuture ISO 8601 datetime with offset (e.g. 2026-10-12T15:00:00Z) to schedule instead of posting now.
idempotency_keystringOptional. Repeating a call with the same key (or the same text and time) within 10 minutes returns the first result instead of posting twice.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/publish_post \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"<text>"}'

Analytics?toolsets=analytics

analyze_my_contentFree · read-onlyQuick overall read of the workspace's OWN content: top videos by age-normalized views-per-day with engagement and channel averages, plus a sample of recent uploads. For a deeper ranking with low performers to contrast, use get_video_performance. Optionally one platform. Free.
ParameterTypeDescription
platformenumOnly this connected platform. Omit for all connected channels.One of: youtubetiktokinstagramtwitterfacebook
limitintegerHow many top videos to rank. Default 10, max 25.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/analyze_my_content \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
detect_inefficienciesFree · read-onlyRanked current process problems: the slowest bottleneck stages (avg/p95 days) plus a rework roll-up. Use for 'what's slowing us down', 'any bottlenecks'. Pass boardName (or boardId) to scope to one board; omitting both aggregates every board. sinceDays (default 30) or since/until (ISO). Free.
ParameterTypeDescription
sinceDaysintegerLook-back window in days when since is omitted. Default 30.Default: 30
sincestringWindow start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window.
untilstringWindow end (exclusive), same format. Default now.
boardIdstringScope to this board (id from list_boards).
boardNamestringScope to the board with this exact name (case-insensitive). Omit both for all boards.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/detect_inefficiencies \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
enable_niche_watchSpends AI creditsTurn on the weekly niche watch: every Monday kloudie scans the workspace niche and DMs the enabler the highlights, running the first scan immediately. Pass query to set the default niche; omit it to derive from the connected channels. Needs the niche research vendor configured; relay a not-configured message verbatim. Spends AI credits; get_pricing quotes it first.
ParameterTypeDescription
querystringThe niche to watch, e.g. "faceless finance shorts". Omit to derive it from the connected channels.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/enable_niche_watch \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_channel_profileFree · read-onlyRead the channel's retention profile before writing a script, hook, title or edit plan: what holds and loses THIS audience, from real YouTube audience-retention curves (hook retention at 3 s for Shorts or 0:30 for long-form, average % viewed, end retention, average view duration, the moments several videos lose people with what was said there, rewatched moments) and a checklist for the next script. Rebuilt weekly per connected YouTube channel. Free; read-only.
ParameterTypeDescription
formatenumshort (Shorts, up to 3 minutes) or long (long-form). Omit for both.One of: shortlong
channelstringChannel name, when the workspace has more than one connected YouTube channel.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_channel_profile \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_channel_statsFree · read-onlyEvery connected social channel with its latest synced stats (subscribers, views, videos, watch hours, estimated revenue) and a note when stats are missing or stale. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_channel_stats \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_stage_dwellFree · read-onlyTime-in-stage statistics (average / p50 / p95 / max days) across a board's cards, from card stage-change history. Use for 'which stages are slow', 'where do cards bottleneck'. Pass boardName (or boardId) when the user names a board; omitting both aggregates every board. sinceDays (default 30) or since/until (ISO) sets the window. Free.
ParameterTypeDescription
sinceDaysintegerLook-back window in days when since is omitted. Default 30.Default: 30
sincestringWindow start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window.
untilstringWindow end (exclusive), same format. Default now.
boardIdstringScope to this board (id from list_boards).
boardNamestringScope to the board with this exact name (case-insensitive). Omit both for all boards.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_stage_dwell \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_video_performanceFree · read-onlyPer-video/post performance for this workspace, ranked by age-normalized views-per-day, with each item's engagement rate and multiple-vs-channel-average, a low_performers contrast set, and channel averages. Answers 'which of my videos did best', 'what's working', 'why did this flop'. Optionally filtered to one platform. Use get_channel_stats for channel totals. Free.
ParameterTypeDescription
platformenumOnly this connected platform. Omit for all.One of: youtubetiktokinstagramtwitterfacebook
limitintegerHow many top videos to rank. Default 10, max 25.Default: 10

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_video_performance \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_weekly_rollupFree · read-onlyPre-aggregated weekly KPIs for the workspace's boards: cards completed, created, average cycle days, rework count/rate, per-stage dwell. Use for 'how was last week' and week-over-week questions. Pass boardName (or boardId) to scope to one board; since/until (ISO dates) to set the timeframe, else the last N weeks. Free.
ParameterTypeDescription
weeksintegerNumber of recent weeks when since is omitted. Default 4.Default: 4
sincestringWindow start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window.
untilstringWindow end (exclusive), same format. Default now.
boardIdstringScope to this board (id from list_boards).
boardNamestringScope to the board with this exact name (case-insensitive). Omit both for all boards.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_weekly_rollup \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_recent_contentFree · read-onlyRecently published posts/videos across the workspace's connected channels, newest first, with per-item views/likes/comments. Optionally filtered to one platform. Free.
ParameterTypeDescription
platformenumOnly this connected platform. Omit for all.One of: youtubetiktokinstagramtwitterfacebook
limitintegerMax items, newest first. Default 20, max 50.Default: 20

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_recent_content \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_competitorsFree · changes your workspaceTrack competitor channels for this workspace across YouTube, Instagram, TikTok, and X. action list, or add (channel: @handle, URL, or name). Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: listadd
channelstringThe channel to add: @handle, profile URL, channel name, or YouTube UC… id.
platformenumPlatform of channel. Default youtube; a platform profile URL overrides it.One of: youtubeinstagramtiktokx

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_competitors \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
manage_niche_watchFree · changes your workspaceCheck or stop the weekly niche watch. action status returns whether it is enabled, the default query, and when it last ran; action disable turns it off. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: statusdisable

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_niche_watch \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"status"}'

Automations?toolsets=automations

get_automation_runsFree · read-onlyRecent automation runs for the workspace, optionally one automation: the automation name, the card it ran for (KB number + title), status, error, credits, when (in the key owner's time zone; created_at is ISO) and its steps in plain words. Refer to runs by automation and card, not by run id.
ParameterTypeDescription
recipeIdstringOnly runs of this automation (id from list_automations). Omit for all.
limitintegerMax runs, newest first. Default 10, max 25.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_automation_runs \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_automationsFree · read-onlyList the workspace's automations (id, name, enabled, trigger, latest run status). Use before updating, enabling, disabling, or deleting one. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_automations \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_automationFree · changes your workspaceCreate, update, enable, or disable a workspace automation (a kloudie recipe: a trigger plus a graph of steps). Always propose first: propose_create / propose_update validate and return a draft with plain-language summaryLines (nothing is saved). Show the person those lines; only after they approve, call create / update with the same name, trigger and graph (and recipeId for update) to save it, enabled. enable / disable act immediately (find recipeId with list_automations). Deleting is app-only. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: propose_createpropose_updatecreateupdateenabledisable
recipeIdstringAutomation id from list_automations; required for propose_update, enable and disable.
namestringpropose_create/propose_update: the automation's name. Default "Untitled automation".
triggerany | stringTrigger object or JSON string; preserve requested command/board restrictions. For example, {"kind":"card_event","types":["card.completed"]}
graphobject | stringSchema:2 graph object or JSON string. Action tools: create_card, create_task, comment_on_card, complete_card, create_document, ask_kloudie, move_card, ai_review_card, draft_in_voice, notify_card_assignees, send_email. Node kinds: action, condition, ai_gate, delay, loop.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_automation \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"propose_create"}'
resume_automationFree · changes your workspaceApprove or deny an automation run paused awaiting approval (status waiting_approval). Approving executes the gated step and continues the run; denying rejects it. Find the runId with get_automation_runs. Free.
ParameterTypeDescription
runIdrequiredstringId of a waiting_approval run, from get_automation_runs.
decisionrequiredenumapprove runs the gated step and continues the run; deny rejects it.One of: approvedeny

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/resume_automation \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"runId":"<runId>","decision":"approve"}'

Systems: repeatable production lines?toolsets=systems

create_system_from_templateFree · changes your workspaceFork a System template into this workspace as a new System (version 1, nothing runs yet), optionally on a schedule with a monthly AI credit budget. Returns the steps, the per-run credit estimate and the System's link; change it later with update_system, run it with run_system. Free to create; each run spends credits.
ParameterTypeDescription
templateIdrequiredenumtemplateId from list_system_templates.One of: daily-shortlongform-packagerepurpose-postsocial-launchcomment-listenerdubbing-pack
titlestringName for the new System; defaults to the template's name.
scheduleobjectAlso put the new System on a schedule. Only when the person asked for one and gave a monthly budget.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/create_system_from_template \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"templateId":"daily-short"}'
list_system_templatesFree · read-onlyList ready-made System templates (daily short, long-form package, repurpose a post, social launch, comment listener, dubbing pack): what each run makes, its steps, what the brief needs and the estimated AI credits per run. Fork one with create_system_from_template. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_system_templates \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
run_systemSpends AI creditsRun a saved System (production workflow: research, script, posts, thumbnail, voiceover, board delivery) on a brief. Runs complete in the background: poll get_job with the returned job_id for status and deliverables. Each step spends AI credits like the matching tool.
ParameterTypeDescription
workflowIdrequiredstringSystem id from get_workspace_overview (saved Systems).
briefrequiredstringWhat this run should produce: topic, angle, audience, any must-haves.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/run_system \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflowId":"<workflowId>","brief":"<brief>"}'

Team and chat?toolsets=team

list_chat_channelsFree · read-onlyList the workspace's internal chat channels and DMs with unread counts and the latest preview. Returns ids for read_chat_channel and send_chat_message. Free.
ParameterTypeDescription
limitintegerMax channels. Default 30, max 100.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_chat_channels \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_chat_categoryFree · changes your workspaceList, create, or rename chat sidebar categories. Changes require chat:manage. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: listcreaterename
categoryIdstringrename/delete: category id from list.
namestringcreate/rename: the category name, up to 80 characters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_chat_category \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
manage_chat_channelFree · changes your workspaceCreate a channel without sending a message, rename a channel, or move it to a category (null ungroups). New channels initially include only you; isPrivate controls visibility. Management needs chat:manage and channel-manager access. General, support, and direct-message channels are protected. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: createrenamemove_category
channelIdstringChannel id from list_chat_channels; required for every action except create.
namestringcreate/rename: the channel name, up to 80 characters.
categoryIdstringCategory id from manage_chat_category list; null ungroups (move_category), optional on create.
isPrivatebooleancreate only: true makes it a private channel. Default false.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_chat_channel \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"create"}'
manage_member_permissionsFree · changes your workspaceRead or set ONE member's permission boolean, without changing their seat or other settings. First get using their membership/user id; availableKeys are the supported keys. Restate the person, permission, and new value before changing access. Cannot edit owner access, structured grants, or grant more access than you hold. Requires members:manage. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: getset
memberIdrequiredstringMembership id or user id from manage_team.
permissionKeystringset: one key from get's availableKeys.
enabledbooleanset: true grants the permission, false removes it.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_member_permissions \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"get","memberId":"<memberId>"}'
manage_teamFree · reaches people outsideManage the workspace team: list members and pending invitations, invite someone by email (seat member, admin, or guest), resend_invitation (invitationId from list), or set_role (memberId is a membership id from list). Inviting sends a real email: confirm the address with the person first. Inviting needs invite permission; changing roles needs member management permission. Free.
ParameterTypeDescription
actionrequiredenumWhich operation to run; the tool description says what each one does and needs.One of: listinviteresend_invitationset_role
emailstringInvitee email for invite.
seatenumSeat for invite or set_role. Default member. Admin is a member seat with the admin permission preset.One of: memberadminguest
memberIdstringMembership id (from list) for remove_member or set_role.
invitationIdstringPending invitation id (from list) for resend_invitation or cancel_invitation.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_team \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"list"}'
read_chat_channelFree · read-onlyRead the most recent messages in one chat channel or DM by its id. Free.
ParameterTypeDescription
channelIdrequiredstringChannel or DM id from list_chat_channels.
limitintegerMost recent messages to return. Default 30, max 80.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/read_chat_channel \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channelId":"<channelId>"}'
search_peopleFree · read-onlyFind teammates in this workspace by name or email. Returns each match with their userId, which is what card and task assign/reassign (update_card, update_task) need. Free.
ParameterTypeDescription
queryrequiredstringPart of a teammate's name or email.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/search_people \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<query>"}'
send_chat_messageFree · reaches people outsidePost a message to a workspace chat channel. Pass a channelId, or a channelName to reuse an existing channel of that name (a new one is created only when none matches). Free.
ParameterTypeDescription
channelIdstringChannel id from list_chat_channels. Give this or channelName.
channelNamestringChannel name, with or without #; reused if it exists, otherwise created.
contentrequiredstringThe message text, up to 8,000 characters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/send_chat_message \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"<content>"}'

kloudie?toolsets=kloudie

ask_kloudieSpends AI creditsAsk kloudie, the "your workspace" workspace AI. kloudie acts as you inside this workspace: it runs the full chat agent loop and can search the Brain, read boards, cards, tasks and performance data, review scripts, and create or update cards, tasks and documents. Answers cite workspace sources. Pass conversation_id from a previous result to continue with full context. Spends the workspace's AI credits like normal chat. A research-heavy turn can run long: instead of timing out it returns {running:true, job_id}; poll get_job with that job_id to read the reply when it is ready.
ParameterTypeDescription
questionrequiredstringThe request in plain language, as you would type it in chat (up to 32,000 characters).
conversation_idstringconversation_id from a previous ask_kloudie result to continue that thread. Omit to start a new one.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/ask_kloudie \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question":"<question>"}'

Account?toolsets=account

get_affiliate_leaderboardFree · read-onlyThe current-month kloudboard creator (affiliate) leaderboard: the anonymized top earners, the key owner's own rank and commission total, the active-affiliate count, and the monthly cash prize tiers. Free, read-only.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_affiliate_leaderboard \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_affiliate_statsFree · read-onlyThe API key creator's OWN affiliate partner standing: lifetime and trailing-30-day signups and commission earnings, grouped by commission status, plus recent events. Never another user's data. Free.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_affiliate_stats \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
get_payout_summaryFree · read-onlyTotals per payout status: how much is pending, approved, paid, denied in this workspace. Read-only.

No parameters.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/get_payout_summary \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
list_payoutsFree · read-onlyThe workspace's freelancer payouts, newest first: who, amount, status, which video. Read-only.
ParameterTypeDescription
statusenumOnly payouts with this status. Omit for all.One of: pendingapprovedpaiddenied
limitintegerMax payouts, newest first. Default 20, max 50.Default: 20

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/list_payouts \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
manage_notificationsFree · changes your workspaceRead or change the authenticated caller's own notification settings. get returns the supported keys and current values. set changes one boolean key only; nChatMentions controls inbox mentions, mentions controls mention sounds. Other people cannot be targeted. Free.
ParameterTypeDescription
actionrequiredenumget returns every setting; set changes one.One of: getset
keyenumset only: which notification setting to change.One of: emaildesktopallSoundsrepliesmentionsstarreddmsnTaskAssignmentsnCardnDeadlinesnChatMentionsnMeetingInvitesnMeetingAddednProjectUpdatesnPaymentRequestsnPaymentConfirmationsnPaymentSentnSystememailHighemailMediumemailLowemailCardemailMentionsemailBoardemailReviewMentionsemailPaymentRequestsemailDeadlinesemailMeetingsproductsetupoffers
valuebooleanset only: true turns it on, false turns it off.

REST

curl -X POST https://app.kloudboard.com/api/v1/tools/manage_notifications \
  -H "Authorization: Bearer $KLOUDBOARD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"get"}'