Tool reference
38 tools, grouped by domain.
All free — required so an agent can complete the entire setup without the UI. Call onboarding_get_readiness first and between steps.
onboarding_get_readiness free
Check onboarding readiness: whether the mandatory inputs (profile.brand, profile.industry, profile.goals, profile.targetAudience) are complete and whether the first strategy has been generated.
No parameters.
Returns: { mandatoryInputsComplete: boolean, missing: string[], firstStrategyComplete: boolean, ready: boolean }
- Call this FIRST and between every setup step. ready=true means the workspace is fully set up.
onboarding_update_profile free
Set core profile fields. Merges — only provided fields change.
| Parameter | Type | Required | Description |
brand |
string |
no |
Brand or company name |
website |
string |
no |
Website URL (stored as profile.websiteUrl) |
industry |
string |
no |
Industry/sector (2-4 words) |
competitors |
string[] |
no |
Competitor names or handles |
targetAudience |
string |
no |
Ideal customer profile — who buys from this brand |
Returns: { success: true, updated: string[] }
- brand, industry and targetAudience are mandatory inputs for strategy generation.
onboarding_update_goals free
Set marketing goals (≥1 goal is a mandatory input), KPIs, and target audience.
| Parameter | Type | Required | Description |
goals |
string[] |
no |
Marketing goals, e.g. ["Grow LinkedIn to 10k followers"] |
kpis |
{ primary?: string, secondary?: string[], targetRange?: string } |
no |
— |
targetAudience |
string |
no |
— |
Returns: { success: true }
- At least one of goals, kpis, or targetAudience is required per call.
onboarding_update_social_handles free
Set social media handles per platform. Accepts a single handle or an array per platform; merged + deduplicated like the dashboard does.
| Parameter | Type | Required | Description |
linkedin |
string | string[] |
no |
— |
twitter |
string | string[] |
no |
— |
instagram |
string | string[] |
no |
— |
youtube |
string | string[] |
no |
— |
tiktok |
string | string[] |
no |
— |
facebook |
string | string[] |
no |
— |
reddit |
string | string[] |
no |
— |
threads |
string | string[] |
no |
— |
Returns: { success: true, updated: string[] }
onboarding_update_brand_voice free
Set the brand voice description — injected into all AI content generation.
| Parameter | Type | Required | Description |
brandVoice |
string (≤500 chars) |
yes |
Tone/style of the brand, e.g. "Technical, direct, helpful" |
Returns: { success: true }
onboarding_update_content free
Set content context used to enrich strategy generation: past strategy notes, content ideas/drafts, existing content plan.
| Parameter | Type | Required | Description |
historyNotes |
string (≤2000 chars) |
no |
Past strategy docs/insights |
contentIdeas |
string (≤2000 chars) |
no |
Content ideas or drafts |
existingContentPlan |
string (≤3000 chars) |
no |
Existing content plan |
Returns: { success: true }
onboarding_connect_platform free
Mark a platform as connected (same write as the dashboard platform connection).
| Parameter | Type | Required | Description |
platform |
'linkedin' | 'instagram' | 'twitter' | 'youtube' | 'facebook' |
yes |
— |
connected |
boolean |
yes |
— |
username |
string |
no |
Handle/channel ID on that platform |
Returns: { success: true }
onboarding_analyze_website free
Analyze a website to pre-fill industry, ICP (target audience), competitors, and brand voice. Replicates the dashboard "analyze website" assist (site parse + AI extraction + competitor discovery).
| Parameter | Type | Required | Description |
websiteUrl |
string |
yes |
Full URL of the brand website |
Returns: { success: true, analysis: { industry: string, icp: string, competitors: string[], brandVoice: string } }
- May take up to ~20s (site parse). Apply the result with onboarding_update_profile / onboarding_update_brand_voice.
Profile & context
Free reads that drive engagement and give agents the lay of the land.
profile_get free
Get the user profile: brand, industry, goals, target audience, competitors, brand voice, social handles, connected platforms, and MCP credit usage.
No parameters.
Returns: { email, profile, connectedPlatforms, creditUsage: { usedThisCycle, cycleStart, lifetimeSpent, dailyCap }, mcpBilling: { mode, packageId } | null, onboardingCompleted }
strategy_get_latest free
Get the most recently COMPLETED strategy document (full output: summary, themes, insights, recommendations, platform coverage).
No parameters.
Returns: Strategy document (large single doc). Errors if no completed strategy exists.
strategy_list free
List strategy generation history (metadata only).
No parameters.
Returns: { total: number, strategies: [{ strategyId, status, generatedAt, timeframe }] }
data_summary free
Summary of collected data points (counts by platform/type, latest collection time) — what raw material strategy generation has to work with.
No parameters.
Returns: { totalDataPoints, byPlatform, byType, ... }
The premium tools. strategy_generate is async and charged on submission (refunded on failure).
strategy_generate 150 cr · $22.50 scope: generate
Generate a full content strategy (async). Charged 150 credits AT SUBMISSION; automatically refunded if generation fails. Returns a strategyId immediately — poll with strategy_get_status.
| Parameter | Type | Required | Description |
timeframe |
'7d' | '30d' | '90d' |
no |
Calendar timeframe (default 30d) |
idempotencyKey |
string |
no |
Client-generated key so retries do not double-charge |
Returns: { strategyId, status: "pending", creditsCharged: 150, usedThisCycle, monthlyCredits, estimatedSeconds, pollWith }
- Requires the generate scope on the API key.
- Only one generation can run at a time (concurrency guard; error generation_in_progress with the running strategyId).
- Requires profile.brand/industry/goals/targetAudience — see onboarding_get_readiness.
- Usage over the monthly package allotment is allowed — Stripe auto-bills overage in round-up blocks.
strategy_get_status free
Poll strategy generation status/progress.
| Parameter | Type | Required | Description |
strategyId |
string |
yes |
— |
Returns: { strategyId, status: "pending" | "generating" | "complete" | "error", progress: { stage, stageNumber, totalStages, percent } | null, ... }
strategy_get_swot free
Get the SWOT analysis from the most recent completed strategy.
No parameters.
Returns: SWOT object from strategy.output.swotAnalysis.
strategy_get_themes free
Get content themes from the latest strategy plus the top 20 tags used across the calendar.
No parameters.
Returns: { themes: [{ name, rationale, expectedImpact }], tags: string[], strategyId }
strategy_analyze_post_idea 8 cr · $1.20
Validate a post idea against current web signal (1 AI/search call): traction summary, keyword tags, confidence, and a suggested optimized angle.
| Parameter | Type | Required | Description |
title |
string |
yes |
The post idea / title to analyze |
industry |
string |
no |
— |
Returns: { summary, tags: string[], confidence: 0-1, suggestedTitle, suggestedDraft }
strategy_competitor_gap 12 cr · $1.80
AI competitor gap analysis: topics/formats/angles the competitor covers that this brand does not, with immediate actions.
| Parameter | Type | Required | Description |
competitor |
string |
yes |
Competitor name |
Returns: { success: true, analysis: { topicGaps, formatGaps, angleOpportunities, immediateActions, confidenceLevel, dataQuality }, competitor }
Daily trends, competitor moves, and opportunities. signals_list is chunked in windows of 10 (cursor-based).
signals_list 5 cr · $0.75
List active signals in windows of 10 (cursor-based). Charged per window.
| Parameter | Type | Required | Description |
cursor |
string |
no |
Opaque cursor from the previous call (omit for first window) |
priority |
'low' | 'medium' | 'high' | 'critical' |
no |
— |
type |
string |
no |
Signal type, e.g. trend, competitor, opportunity, warning, insight |
Returns: { signals: Signal[], count, total, offset, windowSize: 10, nextCursor: string | null }
- Pass the returned nextCursor to fetch the next window; null means end of feed. Cursor is base64 of the numeric offset.
signals_scan 25 cr · $3.75
Run a fresh signal scan from monitored sources (async, scraping + LLM). Returns a scanJobId immediately — poll with signals_scan_status.
| Parameter | Type | Required | Description |
sources |
MonitoredSource[] |
no |
Sources to scan; defaults to the user's discovered monitored sources |
Returns: { scanJobId, status: "processing", message }
- Errors if no monitored sources exist — call sources_discover first.
signals_scan_status free
Poll a signal scan job status.
| Parameter | Type | Required | Description |
scanJobId |
string |
yes |
— |
Returns: { scanJobId, status: "processing" | "complete" | "error", signalsFound?, dataPointsAdded?, completedAt? }
signals_generate 10 cr · $1.50
Generate fresh signals from already-collected data (1 LLM call) and store them.
No parameters.
Returns: { success: true, signalCount: number }
signals_dismiss free
Dismiss (archive) a signal so it no longer appears in the feed (free — encourages feed hygiene).
| Parameter | Type | Required | Description |
signalId |
string |
yes |
— |
Returns: { success: true }
signals_snooze free
Snooze a signal for N days; it reappears afterwards (free).
| Parameter | Type | Required | Description |
signalId |
string |
yes |
— |
days |
number (1-30) |
no |
Default 7 |
Returns: { success: true, snoozedUntil: ISO string }
sources_list free
List monitored sources.
No parameters.
Returns: { sources: MonitoredSource[], count }
sources_discover 10 cr · $1.50
Discover monitoring sources for this account (LLM + scraping): LinkedIn voices, Reddit communities, search queries, websites.
No parameters.
Returns: { sources: MonitoredSource[], stored: true, count }
The generated content calendar, served in day-sized chunks. calendar_get_week is the bulk-discount alternative to 7 day calls.
calendar_get_day 5 cr · $0.75
Get all calendar posts for one day. Charged per day — plan a week day-by-day or use calendar_get_week for a bulk discount.
| Parameter | Type | Required | Description |
date |
string (YYYY-MM-DD) |
yes |
— |
Returns: { date, posts: Post[], total, calendarGeneratedAt }
- Archived/rejected posts are excluded (same default as the dashboard).
calendar_get_week 15 cr · $2.25
Get all calendar posts for a week (Monday-based start). Bulk discount vs 7 day calls.
| Parameter | Type | Required | Description |
weekStart |
string (YYYY-MM-DD) |
yes |
— |
Returns: { posts: Post[], weekStart, weekEnd, total }
calendar_get_upcoming free
Get upcoming posts for the next N days (free).
| Parameter | Type | Required | Description |
days |
number (1-90) |
no |
Default 7 |
status |
'planned' | 'published' | 'archived' | 'rejected' |
no |
— |
Returns: { posts: Post[], today, through, days, total }
calendar_get_post 3 cr · $0.45
Get one full calendar post including playbook, script, slides, and variants.
| Parameter | Type | Required | Description |
postId |
string |
yes |
— |
Returns: { post: Post }
calendar_search_posts 3 cr · $0.45
Search calendar posts by text, platform, format, or status.
| Parameter | Type | Required | Description |
q |
string |
no |
— |
platform |
string |
no |
— |
format |
string |
no |
— |
status |
'planned' | 'published' | 'archived' | 'rejected' |
no |
— |
limit |
number (1-100) |
no |
Default 20 |
Returns: { posts: Post[], total, limit }
- At least one search parameter is required.
calendar_update_post free
Update a calendar post status, notes, or schedule (free). Only the provided fields change.
| Parameter | Type | Required | Description |
postId |
string |
yes |
— |
status |
'planned' | 'published' | 'archived' | 'rejected' |
no |
— |
notes |
string |
no |
— |
date |
string (YYYY-MM-DD) |
no |
Reschedule to this date |
time |
string (HH:MM) |
no |
— |
Returns: { success: true }
calendar_create_variants 8 cr · $1.20
Generate 2 A/B variants of a calendar post (1 AI call) and store them on the post.
| Parameter | Type | Required | Description |
postId |
string |
yes |
— |
Returns: { success: true, variants: [{ id, hook, body, cta, rationale, generatedAt }], postId }
calendar_export 5 cr · $0.75
Export the content calendar as CSV, ICS (iCalendar), or JSON.
| Parameter | Type | Required | Description |
format |
'csv' | 'ics' | 'json' |
yes |
— |
Returns: csv/ics: { format, content: string }; json: { format, calendar }
Fresh raw data feeds strategy and signals. Priced per source class (third-party scraping cost).
data_collect 10 premium / 3 cheap cr
Collect fresh data from a source and store it as data points.
| Parameter | Type | Required | Description |
source |
'anysite_linkedin_posts' | 'anysite_twitter_posts' | 'anysite_instagram_posts' | 'exa_search' | 'hackernews_search' | 'rss_feed' |
yes |
— |
query |
string |
yes |
Search query / keywords (ignored for rss_feed) |
feedUrl |
string |
no |
RSS feed URL (rss_feed source only) |
Returns: { success: true, source, collected: number }
- Premium sources (10 cr): anysite_linkedin_posts, anysite_twitter_posts, anysite_instagram_posts — per-call scraping fees.
- Cheap sources (3 cr): exa_search, hackernews_search, rss_feed.
data_points_list 2 cr · $0.30
List collected data points (paginated). Filter by source, platform, or type.
| Parameter | Type | Required | Description |
limit |
number (1-100) |
no |
Default 50 |
offset |
number |
no |
Default 0 |
source |
string |
no |
— |
platform |
string |
no |
— |
type |
string |
no |
— |
Returns: { dataPoints: DataPoint[], total, limit, offset, hasMore }
Free — lets agents budget before running paid tools.
credits_get_balance free
Get monthly credit usage: billing mode, monthly allotment, used/remaining this cycle, cycle dates, daily cap usage, lifetime spend, and the 10 most recent transactions.
No parameters.
Returns: { mode, packageId, monthlyCredits, usedThisCycle, remainingThisCycle, cycleStart, cycleEnd, dailyCap, spentToday, lifetimeSpent, creditUsd, recentTransactions }
credits_get_pricing free
Machine-readable price list: every tool's credit price, the credit→USD rate, monthly allotment packages, PAYG rate, and the daily cap. Call this to budget before running paid tools.
No parameters.
Returns: { creditUsd, defaultDailyCap, toolPrices, packages: [{ id, name, monthlyCredits, priceUsdPerMonth, effectiveUsdPerCredit, overageNote }], payg, howToBuy }