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/mcpREST (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.
| Parameter | Type | Description |
|---|---|---|
recent | integer | How 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.
| Parameter | Type | Description |
|---|---|---|
job_idrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
jobs | object[] | 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.
| Parameter | Type | Description |
|---|---|---|
creationIdrequired | string | Library creationId to attach (from list_library). |
cardIdrequired | string | Card 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.
| Parameter | Type | Description |
|---|---|---|
topic | string | Short topic; used as the brief when brief is omitted. |
creationId | string | Library script id (list_library kind script, under 12,000 characters) to narrate word for word. |
brief | string | What the video is about plus the user's constraints (audience, tone, must-include points). Needed unless creationId is set. |
dryRun | boolean | Free deterministic preflight only. Does not generate narration, footage or a render, create a job, or spend credits. |
targetDuration | object | Requested 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.
| Parameter | Type | Description |
|---|---|---|
capabilityrequired | enum | tts = voiceover, sfx = sound effect, music = background track.One of: ttssfxmusic |
promptrequired | string | tts: the exact words to speak (up to 5,000 characters). sfx/music: a description of the sound or mood. |
voiceId | string | tts voice id (list_voices, in the create toolset, lists the workspace's voices). Default: a neutral stock voice. |
timestamps | boolean | tts only: also return word timings [{ word, start, end }] in seconds. |
quality | enum | tts only: standard (Multilingual v2, best) or fast (Flash v2.5, half the credits). Default standard.One of: standardfast |
durationSeconds | number | sfx only: clip length in seconds. Omit to let the model choose. |
lengthSeconds | number | music only: track length in seconds. Default 30. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
promptrequired | string | What the image should show, or the edit to make to referenceUrl. |
model | enum | Default nano-banana-2 (about 50 credits); nano-banana-pro is sharper (about 100).One of: nano-banana-2nano-banana-pro |
aspect | enum | Aspect ratio. Default 1:1.One of: 1:14:33:216:99:162:3 |
count | integer | How many images to generate, each charged. Default 1. |
referenceUrl | string | Public image URL (max 8 MB) to edit or use as a style/subject reference. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
briefrequired | string | The topic plus every fact the report should rely on; the brief is its only evidence. |
instructions | string | Extra 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).
| Parameter | Type | Description |
|---|---|---|
toolrequired | enum | generate = from text, recreate = model a reference image, edit = change an image per the prompt.One of: generaterecreateedit |
promptrequired | string | What the thumbnail should show (generate/recreate) or the change to make (edit). |
imageUrl | string | Public image URL; required for recreate (the reference) and edit (the image to change). |
model | enum | Pikzels model for generate/recreate. Default pkz_3; edit ignores it.One of: pkz_2pkz_3pkz_4pkz_4_5 |
format | enum | Aspect ratio. Default 16:9.One of: 16:99:161:1 |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
prompt | string | The video topic or idea. Give this, imageUrl, or both. |
imageUrl | string | Public 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).
| Parameter | Type | Description |
|---|---|---|
promptrequired | string | What happens in the clip: subject, action, camera, style. |
model | enum | Default veo-3.1-lite (cheapest). Credits scale with model and duration.One of: veo-3.1-liteveo-3.1-fastveo-3.1 |
duration | integer | Clip length in seconds, 4 to 8. Default 6. |
aspect | enum | Aspect ratio. Default 16:9.One of: 16:99:16 |
referenceUrl | string | Public image URL to use as the first frame. Takes precedence over sourceCreationId. |
sourceCreationId | string | Library image creationId (from generate_image or list_library) to use as the first frame. |
generateAudio | boolean | Generate a native soundtrack with the clip. Default true. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
creationIdrequired | string | Creation id from list_library or from the tool that made it. |
offset | integer | Character 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.
| Parameter | Type | Description |
|---|---|---|
name | string | A 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.
| Parameter | Type | Description |
|---|---|---|
kind | enum | Only this kind of creation. Omit for all kinds.One of: scriptpoststtsimagevideoreport |
query | string | Case-insensitive match on the title. |
limit | integer | Max 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).
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | get returns the standards; set replaces them.One of: getset |
content | string | set 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.
| Parameter | Type | Description |
|---|---|---|
name | string | Name for a separate named voice (saved as "Voice: <name>"). Omit to refresh the workspace's own voice profile. |
titleMatch | string | Channel 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.
| Parameter | Type | Description |
|---|---|---|
fileIdrequired | string | Drive fileId of the video or audio (search_drive, finish_upload, save_to_drive). |
version | integer | Version to review. Default: the current version. |
context | string | What changed in this version or what to focus on (the script, the brief, the last review's fixes). |
quoteOnly | boolean | true = only return the price and the length it is based on; nothing runs or is charged. |
learn | boolean | Append 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.
| Parameter | Type | Description |
|---|---|---|
scriptText | string | The script text to review, up to 60,000 characters. Give this or creationId. |
creationId | string | Library 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.
| Parameter | Type | Description |
|---|---|---|
kindrequired | enum | script = a video script, posts = a social post pack.One of: scriptposts |
titlerequired | string | Library title, up to 200 characters. |
bodyrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
creationIdrequired | string | Library 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.
| Parameter | Type | Description |
|---|---|---|
imageUrlrequired | string | Public image URL to save (max 10 MB). |
label | string | Short 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.
| Parameter | Type | Description |
|---|---|---|
imageUrlrequired | string | Public URL of the thumbnail image to grade. |
title | string | The 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.
| Parameter | Type | Description |
|---|---|---|
url | string | Video URL on YouTube, Instagram, TikTok or Facebook. Give this or fileId. |
fileId | string | Drive fileId of an audio or video file (from finish_upload, save_to_drive or search_drive). Give this or url. |
withTimestamps | boolean | fileId 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.
| Parameter | Type | Description |
|---|---|---|
channelrequired | string | YouTube @handle, channel URL, channel name, or UC… id. |
platform | enum | Default 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.
| Parameter | Type | Description |
|---|---|---|
topicrequired | string | The topic to research. Be specific. |
angle | string | Optional 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.
| Parameter | Type | Description |
|---|---|---|
query | string | The niche or topic in plain words. Omit to browse by filters only. |
shorts | boolean | true searches Shorts channels; the long-form-only filters are then rejected. |
facelessOnly | boolean | true keeps only faceless channels. |
minSubscribers | integer | Minimum subscriber count. |
maxSubscribers | integer | Maximum subscriber count. |
minAvgViewsPerVideo | integer | Minimum average views per video. |
minMonthlyRevenue | number | Minimum estimated revenue per month, in USD. Long-form only. |
minRpm | number | Minimum estimated RPM (USD per 1,000 views). Long-form only. |
firstUploadAfter | string | Channel's first upload on or after this date (YYYY-MM-DD). Good for finding new channels. |
page | integer | Results 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.
| Parameter | Type | Description |
|---|---|---|
query | string | Describe the niche, or leave empty / use * to browse by filters only.Default: "" |
page | integer | Results page, 1 to 20. Default 1.Default: 1 |
limit | integer | Videos per page, 1 to 50. Default 24.Default: 24 |
minOutlierScore | number | Minimum outlier score: the video's views as a multiple of its channel's usual views. Default 3 (3x).Default: 3 |
maxOutlierScore | number | Maximum outlier score. |
minSubscribers | integer | Minimum subscribers of the uploading channel. |
maxSubscribers | integer | Maximum subscribers of the uploading channel. |
minViews | integer | Minimum video views. |
maxViews | integer | Maximum video views. |
minDuration | number | Minimum video length in seconds. |
maxDuration | number | Maximum video length in seconds. |
minUploadDate | string | Uploaded on or after this date (YYYY-MM-DD). |
maxUploadDate | string | Uploaded on or before this date (YYYY-MM-DD). |
videoType | enum | long = long-form only, shorts = Shorts only. Omit for both.One of: longshorts |
ytChannelId | string | Only videos from this channel (UC… id, from search_youtube or find_niches). |
isAiContent | boolean | true keeps only videos flagged as AI-made; false excludes them. |
sortBy | enum | Sort field. Omit for best match to the query.One of: outlierScorevideoViewschannelSubCountvideoPublishedAt |
sortDirection | enum | Sort 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.
| Parameter | Type | Description |
|---|---|---|
urlrequired | string | A 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.
| Parameter | Type | Description |
|---|---|---|
channelIdrequired | string | YouTube 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.
| Parameter | Type | Description |
|---|---|---|
videos | string[] | YouTube video links or ids (up to 10). Use this or channel. |
channel | string | YouTube @handle, channel URL, name, or UC… id: reads comments on that channel's videos. |
pick | enum | With channel: its most-viewed videos (top, default) or latest uploads (recent).One of: toprecent |
video_count | integer | With channel: how many videos to read. Default 5. |
per_video | integer | Comments per video, most relevant first. Default 40, max 100; 300 in total. |
order | enum | relevance (default) or time (newest first).One of: relevancetime |
search | string | Only 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.
| Parameter | Type | Description |
|---|---|---|
urlrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Search terms, as typed into YouTube search. |
type | enum | Only this result type. Omit for mixed results.One of: videochannelplaylistshorts |
sortBy | enum | Result 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>"}'web_searchSpends AI creditsDefaultSearch the open internet for current or external information (news, facts, prices, competitors, anything recent). Returns sources with title, url, and a snippet. Read the best ones with read_url before relying on them. Costs about 19 AI credits per search (up to 28 at maxResults 8); an empty search is free.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | The search query. Be specific. |
maxResults | integer | How many results (default 5, max 8). |
REST
curl -X POST https://app.kloudboard.com/api/v1/tools/web_search \
-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.
| Parameter | Type | Description |
|---|---|---|
titlerequired | string | Document title (its Drive file name). |
contentrequired | string | Body as plain text or simple Markdown, one paragraph per line, up to 60,000 characters. |
folderId | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: readedit |
fileIdrequired | string | Drive file id of a native document (from search_drive or create_document). |
tabId | string | Tab id from read; required for multi-tab documents. |
revision | string | The exact revision returned by read, required for edit. |
contentText | string | Complete 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.
| Parameter | Type | Description |
|---|---|---|
uploadIdrequired | string | uploadId returned by upload_file. |
namerequired | string | The same file name passed to upload_file. |
contentTyperequired | string | The same MIME type passed to upload_file. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
fileIdrequired | string | A 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.
| Parameter | Type | Description |
|---|---|---|
folder | string | A 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.
| Parameter | Type | Description |
|---|---|---|
fileIdrequired | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: create_folderrenamemove |
fileId | string | The Drive file or folder id (rename / move / delete). |
name | string | Folder name (create_folder) or the new name (rename). |
parentId | string | Parent/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.
| Parameter | Type | Description |
|---|---|---|
fileIdrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
creationIdrequired | string | Library id returned by a generator (libraryId / creationId). |
name | string | File name in Drive; defaults to the creation's title. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Part 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>"}'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.
| Parameter | Type | Description |
|---|---|---|
namerequired | string | File name with extension, no folders, e.g. "interview.mp4". |
contentTyperequired | string | MIME type, e.g. "audio/mpeg", "video/mp4", "image/png". |
sizeBytesrequired | integer | Exact file size in bytes (max 2 GB), checked against the Drive quota. |
folder | string | Drive 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.
| Parameter | Type | Description |
|---|---|---|
templateIdrequired | string | templateId 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.
| Parameter | Type | Description |
|---|---|---|
boardIdrequired | string | Board id from list_boards. |
stageIdrequired | string | The column (stage) id on that board, from list_boards. |
assigneeId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
namerequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
boardIdrequired | string | Board id from get_workspace_overview. |
titlerequired | string | Card title, usually the working video title. |
description | string | Card body (plain text or Markdown). Empty keeps the board's card template.Default: "" |
stageId | string | Stage 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.
| Parameter | Type | Description |
|---|---|---|
titlerequired | string | Task title, up to 300 characters. |
dueAt | string | Due date-time, ISO 8601 with offset, e.g. 2026-10-12T17:00:00Z. |
cardId | string | Card 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.
| Parameter | Type | Description |
|---|---|---|
cardIdrequired | string | Card 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.
| Parameter | Type | Description |
|---|---|---|
boardIdrequired | string | Board 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.
| Parameter | Type | Description |
|---|---|---|
cardIdrequired | string | Card id from list_cards. |
granularity | enum | session (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.
| Parameter | Type | Description |
|---|---|---|
limit | integer | How many changelog entries, newest first. Default 10.Default: 10 |
since | string | Only entries dated on or after this ISO date (YYYY-MM-DD), e.g. the start of 'this month'. |
query | string | Area 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.
| Parameter | Type | Description |
|---|---|---|
asanaProjectId | string | Asana project id from the list this tool returns when called without it. Omit to list them. |
targetBoardId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
clickupListId | string | ClickUp list id from the list this tool returns when called without it. Omit to list them. |
targetBoardId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
mondayBoardId | string | monday.com board id from the list this tool returns when called without it. Omit to list them. |
targetBoardId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
notionDatabaseId | string | Notion database id from the list this tool returns when called without it. Omit to list them. |
targetBoardId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
trelloBoardId | string | Trello board id from the list this tool returns when called without it. Omit to list them. |
targetBoardId | string | Existing 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.
| Parameter | Type | Description |
|---|---|---|
boardId | string | Only cards on this board (id from get_workspace_overview). |
stageId | string | Only cards in this stage (id from get_workspace_overview). |
query | string | Title text or a short id like KB-26. |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
scope | enum | Which tasks; see the tool description. Default mine.One of: minecreatedassignedprojectDefault: "mine" |
completed | boolean | false = open only, true = done only, omit for both. |
query | string | Case-insensitive match on the task title. |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: listcreateupdate |
eventId | string | The event's id from list; update and delete need it. |
title | string | Event title; create and update need it. |
start | string | Start as ISO 8601, e.g. "2026-10-12T13:00:00+02:00"; create and update need it. |
end | string | End as ISO 8601; defaults to the start. |
description | string | Notes shown on the event. |
allDay | boolean | true for an all-day event. |
color | string | Event color, e.g. "blue" or "#3b82f6". |
limit | integer | How 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: list_commentsadd_commentresolve_commentapproverequest_changes |
fileIdrequired | string | The Drive file under review (find it with search_drive). Required. |
content | string | Comment text for add_comment. |
commentId | string | Comment id (from list_comments) for resolve_comment. |
version | integer | File version number. Required for approve and request_changes. |
timestampSeconds | number | Anchor 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: createrenamereorder |
boardId | string | Board id from get_workspace_overview or list_boards. Required for create and reorder. |
stageId | string | Stage id for rename or delete. |
title | string | New stage name for create or rename. |
color | string | Stage dot color (a CSS var or value) for create or rename. |
stageIds | string[] | For reorder: every stage id of the board in the new order. |
moveToStageId | string | For 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.
| Parameter | Type | Description |
|---|---|---|
query | string | Words to match against template names, topics, descriptions and column names. Omit to browse. |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
boardIdrequired | string | Board id from list_boards. |
templaterequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
cardIdrequired | string | Card id from list_cards. |
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: move_stagerenameset_duecommentcompleteset_priorityblockunblock |
stageId | string | move_stage: target stage id on the card's board. |
newTitle | string | rename: the new title. |
dueAt | string | set_due: ISO 8601 with offset. Omit to clear the due date. |
body | string | comment: the comment text, up to 4,000 characters. |
priority | enum | set_priority: the new priority. Omit to clear it.One of: urgenthighmediumlow |
reason | string | block: 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.
| Parameter | Type | Description |
|---|---|---|
taskId | string | Task id from list_tasks. |
taskName | string | Task title to resolve when taskId is unknown; must match exactly one task. |
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: completereopenrenameset_duereassignunassign |
newTitle | string | rename: the new title. |
dueAt | string | set_due: ISO 8601 with offset. Omit to clear the due date. |
assigneeId | string | reassign: 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.
| Parameter | Type | Description |
|---|---|---|
name | string | New workspace name. |
description | string | Workspace description (empty string clears it). |
logoUrl | string | Workspace 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.
| Parameter | Type | Description |
|---|---|---|
providerrequired | enum | The platform the channel or links are on.One of: youtubetiktokinstagramtwitter |
channel_url | string | YouTube: a channel link, @handle, or any video link. Other platforms: one or more full post/video links. |
query | string | Title words to import only the matching item(s). |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
folder | string | A 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.
| Parameter | Type | Description |
|---|---|---|
providerrequired | enum | The platform the channel or links are on.One of: youtubetiktokinstagramtwitter |
channel_url | string | YouTube: 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: listlist_pendingaddapprovereject |
memoryId | string | Memory id: from list_pending for approve or reject. |
title | string | add: short memory title. |
content | string | add: the memory itself, up to 8,000 characters. |
type | string | Memory 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.
| Parameter | Type | Description |
|---|---|---|
id | string | Item id from search_brain (src:<uuid> or doc:<slug>) or list_brain (a source uuid or a doc slug). Give this or title. |
title | string | Item 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.
| Parameter | Type | Description |
|---|---|---|
contentrequired | string | What 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. |
title | string | Short title. Defaults to the first sentence. |
scope | enum | Where 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 |
scopeId | string | board or system: the id from a needs_scope option. |
type | string | Memory 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.
| Parameter | Type | Description |
|---|---|---|
title | string | Note title. Default: the first line of content. |
contentrequired | string | The note text (plain text or Markdown), up to 20,000 characters. |
id | string | To 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.
| Parameter | Type | Description |
|---|---|---|
query | string | One search phrase. Give this, queries, or both. |
queries | string[] | Up to 6 phrasings searched together and merged into one ranked list. |
k | integer | Passages 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.
| Parameter | Type | Description |
|---|---|---|
instructionsrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
usernamerequired | string | Instagram 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: list |
post_id | string | Scheduled 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).
| Parameter | Type | Description |
|---|---|---|
platform | enum | Where to post. Default x.One of: xlinkedinDefault: "x" |
textrequired | string | The post text, up to 20,000 characters; on X anything over 280 becomes a numbered thread. |
schedule_at | string | Future ISO 8601 datetime with offset (e.g. 2026-10-12T15:00:00Z) to schedule instead of posting now. |
idempotency_key | string | Optional. 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.
| Parameter | Type | Description |
|---|---|---|
platform | enum | Only this connected platform. Omit for all connected channels.One of: youtubetiktokinstagramtwitterfacebook |
limit | integer | How 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.
| Parameter | Type | Description |
|---|---|---|
sinceDays | integer | Look-back window in days when since is omitted. Default 30.Default: 30 |
since | string | Window start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window. |
until | string | Window end (exclusive), same format. Default now. |
boardId | string | Scope to this board (id from list_boards). |
boardName | string | Scope 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.
| Parameter | Type | Description |
|---|---|---|
query | string | The 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.
| Parameter | Type | Description |
|---|---|---|
format | enum | short (Shorts, up to 3 minutes) or long (long-form). Omit for both.One of: shortlong |
channel | string | Channel 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.
| Parameter | Type | Description |
|---|---|---|
sinceDays | integer | Look-back window in days when since is omitted. Default 30.Default: 30 |
since | string | Window start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window. |
until | string | Window end (exclusive), same format. Default now. |
boardId | string | Scope to this board (id from list_boards). |
boardName | string | Scope 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.
| Parameter | Type | Description |
|---|---|---|
platform | enum | Only this connected platform. Omit for all.One of: youtubetiktokinstagramtwitterfacebook |
limit | integer | How 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.
| Parameter | Type | Description |
|---|---|---|
weeks | integer | Number of recent weeks when since is omitted. Default 4.Default: 4 |
since | string | Window start: ISO date (YYYY-MM-DD) or datetime with timezone. Overrides the default window. |
until | string | Window end (exclusive), same format. Default now. |
boardId | string | Scope to this board (id from list_boards). |
boardName | string | Scope 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.
| Parameter | Type | Description |
|---|---|---|
platform | enum | Only this connected platform. Omit for all.One of: youtubetiktokinstagramtwitterfacebook |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: listadd |
channel | string | The channel to add: @handle, profile URL, channel name, or YouTube UC… id. |
platform | enum | Platform 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which 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.
| Parameter | Type | Description |
|---|---|---|
recipeId | string | Only runs of this automation (id from list_automations). Omit for all. |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: propose_createpropose_updatecreateupdateenabledisable |
recipeId | string | Automation id from list_automations; required for propose_update, enable and disable. |
name | string | propose_create/propose_update: the automation's name. Default "Untitled automation". |
trigger | any | string | Trigger object or JSON string; preserve requested command/board restrictions. For example, {"kind":"card_event","types":["card.completed"]} |
graph | object | string | Schema: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.
| Parameter | Type | Description |
|---|---|---|
runIdrequired | string | Id of a waiting_approval run, from get_automation_runs. |
decisionrequired | enum | approve 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.
| Parameter | Type | Description |
|---|---|---|
templateIdrequired | enum | templateId from list_system_templates.One of: daily-shortlongform-packagerepurpose-postsocial-launchcomment-listenerdubbing-pack |
title | string | Name for the new System; defaults to the template's name. |
schedule | object | Also 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.
| Parameter | Type | Description |
|---|---|---|
workflowIdrequired | string | System id from get_workspace_overview (saved Systems). |
briefrequired | string | What 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.
| Parameter | Type | Description |
|---|---|---|
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: listcreaterename |
categoryId | string | rename/delete: category id from list. |
name | string | create/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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: createrenamemove_category |
channelId | string | Channel id from list_chat_channels; required for every action except create. |
name | string | create/rename: the channel name, up to 80 characters. |
categoryId | string | Category id from manage_chat_category list; null ungroups (move_category), optional on create. |
isPrivate | boolean | create 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: getset |
memberIdrequired | string | Membership id or user id from manage_team. |
permissionKey | string | set: one key from get's availableKeys. |
enabled | boolean | set: 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | Which operation to run; the tool description says what each one does and needs.One of: listinviteresend_invitationset_role |
email | string | Invitee email for invite. |
seat | enum | Seat for invite or set_role. Default member. Admin is a member seat with the admin permission preset.One of: memberadminguest |
memberId | string | Membership id (from list) for remove_member or set_role. |
invitationId | string | Pending 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.
| Parameter | Type | Description |
|---|---|---|
channelIdrequired | string | Channel or DM id from list_chat_channels. |
limit | integer | Most 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.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Part 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.
| Parameter | Type | Description |
|---|---|---|
channelId | string | Channel id from list_chat_channels. Give this or channelName. |
channelName | string | Channel name, with or without #; reused if it exists, otherwise created. |
contentrequired | string | The 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.
| Parameter | Type | Description |
|---|---|---|
questionrequired | string | The request in plain language, as you would type it in chat (up to 32,000 characters). |
conversation_id | string | conversation_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.
| Parameter | Type | Description |
|---|---|---|
status | enum | Only payouts with this status. Omit for all.One of: pendingapprovedpaiddenied |
limit | integer | Max 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.
| Parameter | Type | Description |
|---|---|---|
actionrequired | enum | get returns every setting; set changes one.One of: getset |
key | enum | set only: which notification setting to change.One of: emaildesktopallSoundsrepliesmentionsstarreddmsnTaskAssignmentsnCardnDeadlinesnChatMentionsnMeetingInvitesnMeetingAddednProjectUpdatesnPaymentRequestsnPaymentConfirmationsnPaymentSentnSystememailHighemailMediumemailLowemailCardemailMentionsemailBoardemailReviewMentionsemailPaymentRequestsemailDeadlinesemailMeetingsproductsetupoffers |
value | boolean | set 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"}'