agent_config JSONB inside autopilot_tenant_settings (upsert, so safe for new tenants).
Web UI Location
citedy.com/dashboard/settings/agent
The page has 7 sections: Platforms, Image Style, Content Tone, Schedule, Timezone, Trust Level, Scan Sources.
The Agent Settings card also includes an inline Test your agent in 60 seconds smoke-test banner above Default Platforms. The banner expands in place and uses the MCP tool registry as its source of truth, so the recommended calls stay aligned with the live agent surface.
Smoke-test flow:
agent.status->GET /api/agent/statusarticle.generate->POST /api/agent/autopilotwithmode: standard,size: mini,auto_publish: false, andwait_for_completion: falsearticle.get->GET /api/agent/articles/{id}
Connect & Create Key modal used by Team Settings. The full secret key is never read back or rendered after creation.
Settings Flow
All Settings
defaultPlatforms
Which social platforms to target when not specified per request.| Field | Value |
|---|---|
| Type | string[] |
| Allowed values | linkedin, x_article, x_thread, facebook, reddit, threads, instagram, instagram_reels |
| Max items | 10 |
| Default | [] (empty = ask or use all connected) |
| Schema | z.array(z.enum(ADAPT_PLATFORMS)).max(10) |
trustLevel is show_preview, agent shows preview and asks which platforms. If autopilot, uses all connected platforms.
Example:
imageStylePreset
Controls the visual style applied to AI-generated images for posts and articles.| Field | Value |
|---|---|
| Type | string enum |
| Values | minimal / tech / bold |
| Default | minimal |
| Change via agent | PUT /api/agent/image-style |
styleLock override into the illustration planner prompt. It does not prevent per-image variation — it constrains the palette and composition rules.
contentTone
Default writing tone for posts and articles.| Field | Value |
|---|---|
| Type | string enum |
| Values | professional / casual / bold |
| Default | professional |
professional: Formal, structured, industry languagecasual: Conversational, first-person, contractions allowedbold: Short sentences, strong claims, opinion-led
/post topic tone=casual
publishSchedule
Controls how many posts per day and which time slots to use.| Field | Value |
|---|---|
| Type | object |
| Default | { postsPerDay: 2 } |
slots is empty, GET /api/agent/schedule/suggest returns timezone-appropriate recommendations.
Example:
targetTimezone
IANA timezone identifier for scheduling and slot suggestions.| Field | Value |
|---|---|
| Type | string (IANA timezone) |
| Default | America/New_York |
| Validation | Intl.DateTimeFormat check at write time |
trustLevel
Controls how much the agent acts vs asks before taking action.| Field | Value |
|---|---|
| Type | string enum |
| Values | ask_all / show_preview / autopilot |
| Default | show_preview |
scanSources
Which sources the trend scanner uses by default when mode is not specified per request.| Field | Value |
|---|---|
| Type | string[] |
| Allowed values | x, google, hn, reddit |
| Default | ["x", "google"] |
API
Read settings
AgentSettings object with all fields and their current values.
Write settings (partial update)
Web dashboard settings (cookie auth)
/dashboard/settings/agent. Uses Supabase session cookie, not API key.
Platform Connection Status
Social platforms must be connected separately athttps://www.citedy.com/dashboard/settings?section=account&tab=integrations before publishing works.
Platform connection flow:
GET /api/auth/youtube → GET /api/auth/youtube/callback
Instagram OAuth: GET /api/auth/instagram
The /api/agent/status endpoint shows which platforms are connected and which are not.
Default Values Summary
| Setting | Default |
|---|---|
| defaultPlatforms | [] (empty) |
| imageStylePreset | minimal |
| contentTone | professional |
| publishSchedule.postsPerDay | 2 |
| publishSchedule.slots | undefined (auto-suggested) |
| targetTimezone | America/New_York |
| trustLevel | show_preview |
| scanSources | ["x", "google"] |
