Docs

Dalea MCP server

The Dalea MCP server lets any Model Context Protocol client, such as Claude, ChatGPT, Claude Code or Cursor, work with your Dalea account: brands, content calendar, scripts, brainstorm, references, brand knowledge and Instagram and TikTok performance.

Every tool runs as the signed-in user and requires an active Dalea subscription. Without one, tools return an error that says so.

https://app.usedalea.ai/api/mcp/mcp

Streamable HTTP. Protocol versions: 2025-11-25, 2025-06-18, 2025-03-26.

Connect

  1. Open Claude (web or desktop) and go to Settings, then Connectors.
  2. Choose Add custom connector and paste the server URL.
  3. Click Connect, log in to Dalea and approve the access.

Authentication

The server uses OAuth 2.1 with PKCE (S256) and dynamic client registration, so clients register themselves on first use.

Discovery follows the MCP authorization spec: an unauthenticated request gets a 401 with a WWW-Authenticate header pointing at the protected resource metadata, which points at the authorization server metadata.

ScopeGrants
dalea:readRead brands, content, calendar, metrics, references and brand knowledge.
dalea:writeCreate and edit content, brand knowledge and references, and run AI actions that consume daily quota.
offline_accessKeep the connection alive with a refresh token so the client does not ask you to log in again.

If a connection was authorized with dalea:read only, write tools answer with a message asking you to reconnect with write access.

API keys start with dalea_mcp_ and are sent as Authorization: Bearer <key>. Each account can have up to 10 active keys.

Revoke OAuth connections and API keys at any time in Dalea under Settings, MCP.

Rate limits & quotas

Every account can make up to 60 requests per minute. Tools that run AI or scraping also have a daily quota:

Errors

Tool errors come back as a normal MCP result with isError: true and a message the assistant can show you:

MessageMeaning
An active Dalea subscription is required to use this tool.The account has no active subscription.
This connection was authorized read-only. Reconnect Dalea with write access to use this tool.A write tool was called on a dalea:read connection.
Rate limit exceeded. Try again in a minute.More than the per-minute limit of calls.
Daily limit reached for <tool> (<n> per day). Try again tomorrow.A metered tool used up its daily quota.
Dalea hit an unexpected error while running this tool. Try again in a moment.Server-side failure; it is logged on our side.

A request without valid credentials gets HTTP 401 with a WWW-Authenticate header; MCP clients use it to start the OAuth flow.

Prompts

  • weekly-review (Weekly review): Review last week's performance and what to change next week.
  • plan-next-week (Plan next week): Fill next week's calendar with ideas grounded in trends, brainstorm and past performance.

Tools reference

Brands

ToolScopeSummary
list_brandsreadList the user's brands with niche and connected platforms, and which one is active.
get_brand_profilereadGet a brand's full profile: basics (name, language, strategy summary), the onboarding brief (niche, audience, pain, promise, tone, pillars, taboo topics), connected social accounts with follower counts, business segment and subscription status.
get_brand_kitreadGet the brand's visual identity kit (colors, fonts, logo, palette, voice description) used by the video editor and carousels.

list_brands

readidempotent

List the user's brands with niche and connected platforms, and which one is active. Use the returned id as brandId for other tools.

No parameters.

get_brand_profile

readidempotent

Get a brand's full profile: basics (name, language, strategy summary), the onboarding brief (niche, audience, pain, promise, tone, pillars, taboo topics), connected social accounts with follower counts, business segment and subscription status. Call this first to understand who the creator is before generating or reviewing content.

ParameterTypeRequiredDescription
brandIdstringno

get_brand_kit

readidempotent

Get the brand's visual identity kit (colors, fonts, logo, palette, voice description) used by the video editor and carousels. Returns kit: null when none was generated yet.

ParameterTypeRequiredDescription
brandIdstringno

Performance

ToolScopeSummary
get_account_overviewreadGet the brand's connected accounts with followers, followersGained30d (null when there is no metric snapshot at least 30 days old), total videos, reach, and lastSyncedAt.
list_videosreadList the brand's published videos with metrics and classification (funnelStage, format, communicationStyle, mediaType).
get_videoreadGet one of the brand's videos by platformVideoId: full metrics (incl.
get_performance_summaryreadTotals for videos published in the last N days (7|30|90, default 30): videoCount, views, likes, comments, shares, saves, averageEngagementPct; the same for the previous window; deltaPct per metric (null when the previous value is 0); and the topVideo by views.
get_top_performersreadRank the brand's videos published in the last N days (default 30) by metric: views | engagement | saves | shares | likes.
get_metrics_dailyreadDaily aggregated metrics per connected account between from and to (YYYY-MM-DD, inclusive; range capped to the last 180 days before `to`).
get_niche_benchmarksreadGet median/p75/p90 view and engagement benchmarks for the brand's niche.
get_voice_profilereadGet the brand's AI-derived voice profile (status, confidence, profile, exemplars) and form profile (status, profile, stats).
set_video_classificationwriteManually classify one of the brand's published videos (by platformVideoId): funnel (tofu | mofu | bofu), format (taxonomy slug, e.g.

get_account_overview

readidempotent

Get the brand's connected accounts with followers, followersGained30d (null when there is no metric snapshot at least 30 days old), total videos, reach, and lastSyncedAt.

ParameterTypeRequiredDescription
brandIdstringno

list_videos

readidempotent

List the brand's published videos with metrics and classification (funnelStage, format, communicationStyle, mediaType). Filters: platform, since/until (ISO), funnelStage, format, minViews, mediaType (video|image|carousel). sortBy: views | engagement | published_at (desc). limit default 20 max 100, offset for paging. Captions are truncated to 300 chars; use get_video for full detail.

ParameterTypeRequiredDescription
brandIdstringno
platform"tiktok" | "instagram"no
sincestringno
untilstringno
funnelStagestringno
formatstringno
minViewsintegerno
mediaType"video" | "image" | "carousel"no
sortBy"views" | "engagement" | "published_at"no
limitintegerno
offsetintegerno

get_video

readidempotent

Get one of the brand's videos by platformVideoId: full metrics (incl. averageWatchTime, reach, saves), plus the AI analysis and transcript when they exist (null otherwise).

ParameterTypeRequiredDescription
brandIdstringno
platformVideoIdstringyes

get_performance_summary

readidempotent

Totals for videos published in the last N days (7|30|90, default 30): videoCount, views, likes, comments, shares, saves, averageEngagementPct; the same for the previous window; deltaPct per metric (null when the previous value is 0); and the topVideo by views.

ParameterTypeRequiredDescription
brandIdstringno
days7 | 30 | 90no

get_top_performers

readidempotent

Rank the brand's videos published in the last N days (default 30) by metric: views | engagement | saves | shares | likes. direction top (default) or bottom. limit default 10 max 100.

ParameterTypeRequiredDescription
brandIdstringno
metric"views" | "engagement" | "saves" | "shares" | "likes"no
daysintegerno
direction"top" | "bottom"no
limitintegerno

get_metrics_daily

readidempotent

Daily aggregated metrics per connected account between from and to (YYYY-MM-DD, inclusive; range capped to the last 180 days before `to`). One row per account per day: date, platform, totals and averageEngagementPct. Optional platform filter.

ParameterTypeRequiredDescription
brandIdstringno
platform"tiktok" | "instagram"no
fromstringyes
tostringyes

get_niche_benchmarks

readidempotent

Get median/p75/p90 view and engagement benchmarks for the brand's niche. With compare=true also returns `brand` (medianViews, p75Views, medianEngagementPct, sampleSize) computed from the brand's own videos of the last 90 days, or null when it has none.

ParameterTypeRequiredDescription
brandIdstringno
comparebooleanno

get_voice_profile

readidempotent

Get the brand's AI-derived voice profile (status, confidence, profile, exemplars) and form profile (status, profile, stats). Each is null when it has not been generated yet.

ParameterTypeRequiredDescription
brandIdstringno

set_video_classification

writeidempotent

Manually classify one of the brand's published videos (by platformVideoId): funnel (tofu | mofu | bofu), format (taxonomy slug, e.g. talking_head, tutorial, listicle) and/or communicationStyle (style slug). Provide at least one; pass null to clear an axis back to unclassified. Only the classification columns change (marked as manual so auto-classification will not overwrite them); metrics, analysis and the video itself are NOT touched, and nothing is published. Returns the video's resulting classification.

ParameterTypeRequiredDescription
brandIdstringno
platformVideoIdstringyes
funnel"tofu" | "mofu" | "bofu" | nullno
formatstring | nullno
communicationStylestring | nullno

Content

ToolScopeSummary
list_contentsreadList the brand's content cards (board + calendar) as summaries: id, title, idea, status, platforms, postedAt, mediaType, category, funnelStage, format, updatedAt.
get_contentreadGet one content card's full detail by id: the script (hook, body, cta, caption), planning fields (status, platforms, postedAt, mediaType, category, funnelStage, format, communicationStyle, targetDurationSeconds) and how many references and AI generations it has.
list_content_generationsreadList the AI script generations saved for a content card (newest first): title, hook, cta and the alternative body/caption options each run produced.
list_content_referencesreadList the references (videos, links, files) attached to a content card, in order: id, referenceType, referenceUrl, position, title.
get_refine_chatreadGet the last N messages (default 20, max 100) of the refine chat attached to a content card, as { role, content } pairs, plus the total message count.
create_contentwriteCreate a new content card on the board/calendar (no AI).
update_contentwriteEdit a content card's editorial fields (no AI).
move_contentwriteMove a content card on the kanban board: change its column (status) and/or its order within a column.
schedule_contentwriteSet the planned calendar date for a content card (the day it should be posted).
unschedule_contentwriteClear a content card's planned calendar date (sets posted_at to null).
delete_contentwriteDelete a content card from the board/calendar by id.
reorder_contentswriteSet the order of cards inside one kanban column (status: idea | draft | edited | posted).
duplicate_contentwriteCreate a copy of a content card (same title, idea, script, caption, platforms, mediaType, format, category, funnelStage, communicationStyle, targetDurationSeconds) at the bottom of the idea column, with no planned date.
bulk_create_contentswriteCreate 1-20 content cards in one call (no AI).

list_contents

readidempotent

List the brand's content cards (board + calendar) as summaries: id, title, idea, status, platforms, postedAt, mediaType, category, funnelStage, format, updatedAt. Filters: status (idea | draft | edited | posted), platform (tiktok | instagram), mediaType (short_video | carousel | short_text), from/to (planned date range, YYYY-MM-DD or ISO), search (matches title or idea). Paginate with limit (default 50, max 100) and offset. Use get_content for the full script.

ParameterTypeRequiredDescription
brandIdstringno
statusstringno
platform"tiktok" | "instagram"no
mediaType"short_video" | "carousel" | "short_text"no
fromstringno
tostringno
searchstringno
limitintegerno
offsetintegerno

get_content

readidempotent

Get one content card's full detail by id: the script (hook, body, cta, caption), planning fields (status, platforms, postedAt, mediaType, category, funnelStage, format, communicationStyle, targetDurationSeconds) and how many references and AI generations it has. Use list_content_references / list_content_generations / get_refine_chat to drill into those. The card's url opens it in Dalea: share it so the user can review and edit it there.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes

list_content_generations

readidempotent

List the AI script generations saved for a content card (newest first): title, hook, cta and the alternative body/caption options each run produced. Use it to see what was already tried before regenerating.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
limitintegerno

list_content_references

readidempotent

List the references (videos, links, files) attached to a content card, in order: id, referenceType, referenceUrl, position, title.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes

get_refine_chat

readidempotent

Get the last N messages (default 20, max 100) of the refine chat attached to a content card, as { role, content } pairs, plus the total message count. Use it to recover what the creator asked for before editing the script.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
lastintegerno

create_content

write

Create a new content card on the board/calendar (no AI). Requires a title or idea. status: idea | draft | edited | posted (default idea). scheduledDate (YYYY-MM-DD or ISO timestamp) sets the calendar date. The card's url opens it in Dalea: share it so the user can review and edit it there.

ParameterTypeRequiredDescription
brandIdstringno
titlestringno
ideastringno
hookstringno
bodystringno
ctastringno
captionstringno
platformsarray<"tiktok" | "instagram">no
mediaType"short_video" | "carousel" | "short_text"no
categorystringno
funnelStagestringno
status"idea" | "draft" | "edited" | "posted"no
scheduledDatestringno

update_content

writeidempotent

Edit a content card's editorial fields (no AI). Provide at least one of title, idea, hook, body, cta, caption, platforms, mediaType, category, funnelStage. Does NOT change the board column, order, or date, use move_content / schedule_content for those. The card's url opens it in Dalea: share it so the user can review and edit it there.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
titlestringno
ideastringno
hookstringno
bodystringno
ctastringno
captionstringno
platformsarray<"tiktok" | "instagram">no
mediaType"short_video" | "carousel" | "short_text"no
categorystringno
funnelStagestringno

move_content

writeidempotent

Move a content card on the kanban board: change its column (status) and/or its order within a column. Provide at least one of status or placement. placement top|bottom positions within the target column (default bottom); the exact order index is managed automatically. status: idea | draft | edited | posted. Note: the 'posted' column does not publish anything.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
status"idea" | "draft" | "edited" | "posted"no
placement"top" | "bottom"no

schedule_content

writeidempotent

Set the planned calendar date for a content card (the day it should be posted). Pass YYYY-MM-DD for a day (stored at noon UTC so the day is stable in every timezone) or a full ISO timestamp when the exact time matters. This only plans the date; it does not publish.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
datestringyes

unschedule_content

writeidempotent

Clear a content card's planned calendar date (sets posted_at to null).

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes

delete_content

writedestructiveidempotent

Delete a content card from the board/calendar by id. The card disappears from the app (soft delete).

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes

reorder_contents

writeidempotent

Set the order of cards inside one kanban column (status: idea | draft | edited | posted). orderedIds (1-200, all must belong to that column) become positions 0..n-1 in the given order; cards of the column not listed keep their relative order after them. Does NOT change any card's status, date or fields, and does not publish anything. Returns the full column order as { id, position }.

ParameterTypeRequiredDescription
brandIdstringno
status"idea" | "draft" | "edited" | "posted"yes
orderedIdsarray<string>yes

duplicate_content

write

Create a copy of a content card (same title, idea, script, caption, platforms, mediaType, format, category, funnelStage, communicationStyle, targetDurationSeconds) at the bottom of the idea column, with no planned date. The original is NOT changed; references, generations and refine chat are NOT copied; nothing is published. Returns the new card and duplicatedFromId. The card's url opens it in Dalea: share it so the user can review and edit it there.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes

bulk_create_contents

write

Create 1-20 content cards in one call (no AI). Each item has the create_content shape (title or idea required; optional status, scheduledDate, platforms, mediaType, category, funnelStage, hook, body, cta, caption). Cards are created in order at the bottom of their column; nothing is published. Not idempotent: calling twice creates the cards twice. Returns { contents, created }. The card's url opens it in Dalea: share it so the user can review and edit it there.

ParameterTypeRequiredDescription
brandIdstringno
itemsarray<object>yes

Brainstorm

ToolScopeSummary
list_brainstorm_suggestionsreadList the brand's active brainstorm suggestions with reasons.
accept_brainstorm_suggestionwriteAccept a brainstorm suggestion: creates a content card in the idea column from its title, idea and funnel stage (no AI), then marks the suggestion as added with contentId.
dismiss_brainstorm_suggestionwriteMark a brainstorm suggestion as dismissed so it leaves the pending list.

list_brainstorm_suggestions

readidempotent

List the brand's active brainstorm suggestions with reasons. Optional status filter: pending | added (contentId points to the created content) | dismissed.

ParameterTypeRequiredDescription
brandIdstringno
status"pending" | "added" | "dismissed"no

accept_brainstorm_suggestion

write

Accept a brainstorm suggestion: creates a content card in the idea column from its title, idea and funnel stage (no AI), then marks the suggestion as added with contentId. scheduledDate (YYYY-MM-DD or ISO) overrides the suggestion's suggested date as the planned date. The suggestion's text is NOT changed; nothing is published. Fails if the suggestion was already added. Returns { suggestion, content }.

ParameterTypeRequiredDescription
brandIdstringno
suggestionIdstringyes
scheduledDatestringno

dismiss_brainstorm_suggestion

writeidempotent

Mark a brainstorm suggestion as dismissed so it leaves the pending list. Does NOT delete it, does NOT touch any content card already created from it, and publishes nothing. Returns { suggestion }.

ParameterTypeRequiredDescription
brandIdstringno
suggestionIdstringyes

References

ToolScopeSummary
list_insightsreadList the brand's AI-generated insight tiles.
get_homepage_insightsreadGet the latest homepage insight cards generated for the brand (insights array, how many videos they were based on, language).
list_saved_referencesreadList the brand's saved reference videos (with catalog videoId, note and whether an analysis exists, use get_catalog_video for the transcript) and creator inspirations (creatorId for get_creator / get_creator_analysis).
get_creator_analysisreadGet the stored deep analysis for a saved creator by creatorId.

list_insights

readidempotent

List the brand's AI-generated insight tiles.

ParameterTypeRequiredDescription
brandIdstringno

get_homepage_insights

readidempotent

Get the latest homepage insight cards generated for the brand (insights array, how many videos they were based on, language).

ParameterTypeRequiredDescription
brandIdstringno

list_saved_references

readidempotent

List the brand's saved reference videos (with catalog videoId, note and whether an analysis exists, use get_catalog_video for the transcript) and creator inspirations (creatorId for get_creator / get_creator_analysis).

ParameterTypeRequiredDescription
brandIdstringno

get_creator_analysis

readidempotent

Get the stored deep analysis for a saved creator by creatorId.

ParameterTypeRequiredDescription
brandIdstringno
creatorIdstringyes

Calendar

ToolScopeSummary
get_calendarreadGet the brand's content calendar for a date range as one entry per day (empty days included), each with the cards planned for that day (id, title, status, platforms, mediaType, postedAt).

get_calendar

readidempotent

Get the brand's content calendar for a date range as one entry per day (empty days included), each with the cards planned for that day (id, title, status, platforms, mediaType, postedAt). from/to are YYYY-MM-DD (UTC); default is today through the next 7 days. Use it to see what is scheduled and find free days before schedule_content.

ParameterTypeRequiredDescription
brandIdstringno
fromstringno
tostringno

Viral catalog

ToolScopeSummary
search_catalog_videosreadSearch the shared reference catalog of top-performing creator videos.
get_catalog_videoreadGet one catalog video by id with its stored analysis (transcript and virality score) when one exists.
search_creatorsreadSearch catalog creators by name or handle (min 2 chars).
get_creatorreadGet a catalog creator by id: profile, AI summary, platform accounts and their 5 most-viewed catalog videos.
list_niche_patternsreadList the recurring script patterns detected in a niche's viral videos (name, description, structure, average virality, usage count).

search_catalog_videos

readidempotent

Search the shared reference catalog of top-performing creator videos. Defaults to the brand's niche and content language (language 'all' disables the language filter). query understands format names, funnel phrases (tofu/mofu/bofu) and presentation modes (text on screen / spoken), and matches the rest against captions and handles. format is a taxonomy slug. sortBy: views (default) | virality (engagement rate) | recent. Creators the brand hid are excluded. Paginate with limit (max 100) and offset.

ParameterTypeRequiredDescription
brandIdstringno
querystringno
nichestringno
platform"tiktok" | "instagram"no
format"talking_head" | "voiceover_broll" | "listicle" | "tutorial" | "storytelling" | "reaction" | "pov" | "street_interview" | "day_in_life" | "podcast_clip" | "green_screen"no
funnelStage"tofu" | "mofu" | "bofu"no
languagestringno
minViewsintegerno
sortBy"virality" | "views" | "recent"no
limitintegerno
offsetintegerno

get_catalog_video

readidempotent

Get one catalog video by id with its stored analysis (transcript and virality score) when one exists.

ParameterTypeRequiredDescription
videoIdstringyes

search_creators

readidempotent

Search catalog creators by name or handle (min 2 chars). Optional niche tag and platform filters. Returns each creator with their platform accounts and follower counts.

ParameterTypeRequiredDescription
querystringyes
nichestringno
platform"tiktok" | "instagram"no
limitintegerno

get_creator

readidempotent

Get a catalog creator by id: profile, AI summary, platform accounts and their 5 most-viewed catalog videos.

ParameterTypeRequiredDescription
creatorIdstringyes

list_niche_patterns

readidempotent

List the recurring script patterns detected in a niche's viral videos (name, description, structure, average virality, usage count). Defaults to the brand's niche.

ParameterTypeRequiredDescription
brandIdstringno
nichestringno
limitintegerno

Brand knowledge

ToolScopeSummary
list_creator_factsreadList facts the app has learned about the creator (story, pillars, arguments, restrictions, preferences, products, milestones, voice, audience, goals).
get_script_preferencesreadGet the brand's script preferences: content pillars with weights, preferred formats, default duration, approved and banned hooks, standing instructions.
list_restrictionsreadList things the brand never wants in its content (restrictions), with where each one came from.
get_creator_memoryreadGet the AI-maintained memory of who this creator is (free text plus structured fields).
get_creator_contextreadGet the creator interview outcome: phase, origin story, 90-day goals, what content already works, struggles, themes and voice.
list_macro_topicsreadList the brand's macro content topics grouped from its creator facts, with usage counts and the fact ids behind each one.
add_restrictionwriteAdd a restriction: something the brand never wants in its content.
remove_restrictionwritePermanently delete one restriction by id (from list_restrictions).
update_script_preferenceswriteUpdate the brand's script preferences.
add_creator_factwriteRecord a fact about the creator in the learning ledger (source manual, status active).
archive_creator_factwriteArchive a creator fact by id so it stops feeding generation.
delete_saved_referencewritePermanently remove a saved reference video (id from list_saved_references).
hide_creatorwriteHide a creator (by handle, with or without @) from this brand's reference catalog searches.
unhide_creatorwriteShow a previously hidden creator (by handle) in this brand's reference catalog again.
update_brand_kitwriteUpdate the brand's visual identity kit: colors (primary, accent, background, foreground, palette), fonts (fontFamily, headingFont), logoUrl, voiceDescription.
update_strategy_briefwriteUpdate the brand's strategy brief (onboarding brief).

list_creator_facts

readidempotent

List facts the app has learned about the creator (story, pillars, arguments, restrictions, preferences, products, milestones, voice, audience, goals). status defaults to active. limit max 100.

ParameterTypeRequiredDescription
brandIdstringno
category"historia" | "pilar" | "argumento" | "restricao" | "preferencia" | "produto_parceria" | "marco" | "voz" | "publico" | "objetivo"no
status"active" | "archived" | "contradicted" | "duplicate" | "merged" | "expired"no
limitintegerno

get_script_preferences

readidempotent

Get the brand's script preferences: content pillars with weights, preferred formats, default duration, approved and banned hooks, standing instructions.

ParameterTypeRequiredDescription
brandIdstringno

list_restrictions

readidempotent

List things the brand never wants in its content (restrictions), with where each one came from.

ParameterTypeRequiredDescription
brandIdstringno

get_creator_memory

readidempotent

Get the AI-maintained memory of who this creator is (free text plus structured fields). Fields are null when no memory was generated yet.

ParameterTypeRequiredDescription
brandIdstringno

get_creator_context

readidempotent

Get the creator interview outcome: phase, origin story, 90-day goals, what content already works, struggles, themes and voice. Never includes the interview transcript.

ParameterTypeRequiredDescription
brandIdstringno

list_macro_topics

readidempotent

List the brand's macro content topics grouped from its creator facts, with usage counts and the fact ids behind each one.

ParameterTypeRequiredDescription
brandIdstringno
limitintegerno

add_restriction

write

Add a restriction: something the brand never wants in its content. Text is whitespace-normalized and capped at 280 characters; an identical existing restriction is not duplicated. Returns the full restriction list. Does not touch creator facts or script preferences.

ParameterTypeRequiredDescription
brandIdstringno
textstringyes

remove_restriction

writedestructiveidempotent

Permanently delete one restriction by id (from list_restrictions). Returns the remaining restriction list.

ParameterTypeRequiredDescription
brandIdstringno
restrictionIdstringyes

update_script_preferences

writeidempotent

Update the brand's script preferences. Only the keys present in patch are replaced (a list key replaces the whole list); everything else is kept. formats must be taxonomy slugs (talking_head, voiceover_broll, listicle, tutorial, storytelling, reaction, pov, street_interview, day_in_life, podcast_clip, green_screen). defaultDurationSeconds 5-600 or null. Restrictions live elsewhere (add_restriction). Returns the full preferences document.

ParameterTypeRequiredDescription
brandIdstringno
patchobjectyes

add_creator_fact

write

Record a fact about the creator in the learning ledger (source manual, status active). category defaults to preferencia. If an active fact with the same text already exists it is returned instead of duplicated (created: false). Does not regenerate the creator memory.

ParameterTypeRequiredDescription
brandIdstringno
factstringyes
category"historia" | "pilar" | "argumento" | "restricao" | "preferencia" | "produto_parceria" | "marco" | "voz" | "publico" | "objetivo"no

archive_creator_fact

writeidempotent

Archive a creator fact by id so it stops feeding generation. The row is kept (status archived), not deleted. Returns the updated fact.

ParameterTypeRequiredDescription
brandIdstringno
factIdstringyes

delete_saved_reference

writedestructiveidempotent

Permanently remove a saved reference video (id from list_saved_references). The catalog video itself and any inspirations are untouched.

ParameterTypeRequiredDescription
brandIdstringno
savedVideoIdstringyes

hide_creator

writeidempotent

Hide a creator (by handle, with or without @) from this brand's reference catalog searches. Already-hidden creators are left as is. Does not delete saved references from that creator.

ParameterTypeRequiredDescription
brandIdstringno
creatorHandlestringyes

unhide_creator

writeidempotent

Show a previously hidden creator (by handle) in this brand's reference catalog again. No-op when the creator was not hidden.

ParameterTypeRequiredDescription
brandIdstringno
creatorHandlestringyes

update_brand_kit

writeidempotent

Update the brand's visual identity kit: colors (primary, accent, background, foreground, palette), fonts (fontFamily, headingFont), logoUrl, voiceDescription. Only the keys in patch change; source becomes manual and sourceUrl is preserved. Fails when the brand has no kit yet unless the patch carries every required field.

ParameterTypeRequiredDescription
brandIdstringno
patchobjectyes

update_strategy_brief

writeidempotent

Update the brand's strategy brief (onboarding brief). Only these keys can change: niche, niches, topics, profileType, contentGoal, icpWho, icpWants, mainPain, promiseLine, toneStyle, contentPillars, tabooTopics, mediaTypes. Keys not in patch are kept; offer, site and connected-platform data are never touched. Returns the brief's editable keys.

ParameterTypeRequiredDescription
brandIdstringno
patchobjectyes

Studio

ToolScopeSummary
list_carousel_draftsreadList the brand's carousel drafts from the Carousel Studio (title, slide count, last edit).
get_carousel_draftreadGet one carousel draft with its slides (role, image prompt, headline/body/CTA texts).
list_carousel_postsreadList carousel/video publish jobs sent to Instagram or TikTok: status, scheduled time, per-platform result (permalink or error).
list_video_projectsreadList the brand's video editor projects (name, status queued|processing|preview_ready|ready|failed, language, enabled edits, durations).
get_video_job_statusreadGet the latest render job of a video editor project: status, stage, progress percent, error code, plus the url of the project in the Dalea video editor.

list_video_projects

readidempotent

List the brand's video editor projects (name, status queued|processing|preview_ready|ready|failed, language, enabled edits, durations). Each project has a url that opens it in the Dalea video editor: share it when the user wants to watch or adjust a video.

ParameterTypeRequiredDescription
brandIdstringno
limitintegerno

get_video_job_status

readidempotent

Get the latest render job of a video editor project: status, stage, progress percent, error code, plus the url of the project in the Dalea video editor.

ParameterTypeRequiredDescription
brandIdstringno
projectIdstringyes

AI actions

ToolScopeSummary
sync_metricswriteFetch fresh metrics from every connected TikTok/Instagram account (platform APIs + scrape).
generate_titlewriteAI-generate a working title.
regenerate_brainstormwriteReplace the brand's active brainstorm set with freshly generated suggestions (optional manualContext steers them).
generate_insightswriteRegenerate the brand's homepage insights from its synced videos (needs 10+ videos).
save_reference_by_urlwriteSave a TikTok/Instagram video or creator profile URL as a brand reference (scrapes it if unknown; video analysis runs in the background).
run_creator_deep_analysiswriteRun (or return the cached) AI deep analysis of a saved creator by creatorId.

sync_metrics

write6/day

Fetch fresh metrics from every connected TikTok/Instagram account (platform APIs + scrape). Consumes the daily quota (6/day). Returns per-account counts.

No parameters.

generate_title

write50/day

AI-generate a working title. Pass contentId to title an existing content (saves it and returns { content }) or idea for a free-form idea (returns { title }). Consumes the daily quota (50/day, one short AI call).

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringno
ideastringno

regenerate_brainstorm

write5/day

Replace the brand's active brainstorm set with freshly generated suggestions (optional manualContext steers them). Consumes the daily quota (5/day, several AI calls). Returns { suggestions } like list_brainstorm_suggestions.

ParameterTypeRequiredDescription
brandIdstringno
manualContextstringno

generate_insights

write5/day

Regenerate the brand's homepage insights from its synced videos (needs 10+ videos). Consumes the daily quota (5/day, three AI calls). Returns { insights } like get_homepage_insights.

ParameterTypeRequiredDescription
brandIdstringno

save_reference_by_url

write30/day

Save a TikTok/Instagram video or creator profile URL as a brand reference (scrapes it if unknown; video analysis runs in the background). Consumes the daily quota (30/day). Poll with list_saved_references.

ParameterTypeRequiredDescription
brandIdstringno
urlstringyes
notestringno

run_creator_deep_analysis

write10/day

Run (or return the cached) AI deep analysis of a saved creator by creatorId. Consumes the daily quota (10/day, one long AI call). Returns { analysis } as JSON text; read it later with get_creator_analysis.

ParameterTypeRequiredDescription
brandIdstringno
creatorIdstringyes

Scripts

ToolScopeSummary
generate_scriptswriteGenerate a full AI script (hook, CTA, body and caption options; carousel slides for carousels) for 1-5 content cards and save it to each card.
generate_hook_optionswriteGenerate up to 3 AI hook (opening line) suggestions for a content card, using the brand's context, memory and references.
generate_body_optionswriteGenerate up to 3 AI body (script development) suggestions for a content card, using the brand's context, memory and references.
generate_cta_optionswriteGenerate up to 3 AI call-to-action suggestions for a content card, using the brand's context, memory and references.
generate_caption_optionswriteGenerate up to 3 AI caption suggestions for a content card, using the brand's context, memory and references.

generate_scripts

write10/day

Generate a full AI script (hook, CTA, body and caption options; carousel slides for carousels) for 1-5 content cards and save it to each card. Uses the brand's memory, references, sources and web search when relevant. A card generated in the last 60 seconds is returned as-is (status skipped). Consumes daily quota (10/day). durationSeconds sets the target spoken length. bodyOptions/captionOptions are suggestions to apply with update_content. Each result has a url to the card in Dalea: always share it so the user can open, review and edit the script there.

ParameterTypeRequiredDescription
brandIdstringno
contentIdsarray<string>yes
durationSecondsintegerno
objective"followers" | "reach" | "engagement" | "sales" | "leads" | "authority"no

generate_hook_options

write30/day

Generate up to 3 AI hook (opening line) suggestions for a content card, using the brand's context, memory and references. Returns options only, nothing is saved; apply one with update_content. Consumes daily quota (30/day). objective defaults to engagement.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
countintegerno
objective"followers" | "reach" | "engagement" | "sales" | "leads" | "authority"no

generate_body_options

write30/day

Generate up to 3 AI body (script development) suggestions for a content card, using the brand's context, memory and references. Returns options only, nothing is saved; apply one with update_content. Consumes daily quota (30/day). objective defaults to engagement.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
countintegerno
objective"followers" | "reach" | "engagement" | "sales" | "leads" | "authority"no

generate_cta_options

write30/day

Generate up to 3 AI call-to-action suggestions for a content card, using the brand's context, memory and references. Returns options only, nothing is saved; apply one with update_content. Consumes daily quota (30/day). objective defaults to engagement.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
countintegerno
objective"followers" | "reach" | "engagement" | "sales" | "leads" | "authority"no

generate_caption_options

write30/day

Generate up to 3 AI caption suggestions for a content card, using the brand's context, memory and references. Returns options only, nothing is saved; apply one with update_content. Consumes daily quota (30/day). objective defaults to engagement.

ParameterTypeRequiredDescription
brandIdstringno
contentIdstringyes
countintegerno
objective"followers" | "reach" | "engagement" | "sales" | "leads" | "authority"no