{"workspace":{"artistName":"Artist workspace","workspaceName":"Creator Draft Desk","currentGoal":"Give Hermes enough TikTok performance memory to source better posts every day.","autonomyLevel":"Hermes insight layer","approvalRule":"Hermes can read synced TikTok performance, compare both owned accounts, and use the ranked signals before sourcing new posts."},"songs":[],"campaigns":[],"accounts":[],"posts":[],"upcomingPosts":[],"publishedPosts":[],"analytics":{"views":0,"likes":0,"comments":0,"shares":0,"saves":0,"follows":0,"engagement":0,"saveRate":0,"followRate":0,"engagementRate":0,"shareRate":0,"publishedPosts":0},"agentBrief":{"agentName":"Hermes","objective":"Before sourcing today's posts, compare both owned TikTok accounts and reuse the strongest song, hook, format, and caption patterns.","contextEndpoint":"/api/agent/context","postsAnalyzed":0,"rankedPosts":[],"accountPlaybooks":[],"doMore":["Sync TikTok analytics before Hermes sources today's posts."],"avoid":["Do not optimize from raw views alone.","Do not merge official-account and fan-style-account performance into one average.","Do not source new unrelated angles until the current winner has at least one variant."],"nextContentBrief":{"targetSong":"No signal yet","targetHook":"No hook yet","primaryAccount":"No account yet","secondaryAccount":"No second account","format":"No format yet","instruction":"Sync TikTok analytics, classify posts by song and hook, then source from the strongest ranked post."}},"recommendations":[{"id":"rec-01","priority":"high","title":"Import enough history to find a winner","action":"Load recent TikTok posts from both accounts, then repeat the highest-scoring song, hook, and format.","reason":"Hermes needs real post history before it can separate useful patterns from one-off guesses.","confidence":87},{"id":"rec-02","priority":"medium","title":"Keep the two accounts separate","action":"Compare official-account posts and fan-style posts by their own engagement and share rates.","reason":"A format that works on a fan-style account may not work in the artist account voice.","confidence":78},{"id":"rec-03","priority":"medium","title":"Rank by behavior, not just reach","action":"Use share rate, comment rate, and engagement rate before using raw views as a tiebreaker.","reason":"High-view posts are not always the best source material for Hermes.","confidence":73}],"guardrails":["Only connect TikTok accounts that explicitly authorize Creator Draft Desk.","Do not scrape arbitrary accounts or bypass TikTok API permissions.","Treat fan-style accounts as owned channels with clear internal labeling.","Review low-confidence song, hook, or format classifications before using them for strategy.","Imported TikTok analytics should include views, likes, comments, and shares; deeper retention data may require creator exports or future API approval."],"dataStatus":{"mode":"database-unavailable","message":"Persistent storage is not configured, so the dashboard is waiting for real TikTok imports."},"tools":[{"name":"read_agent_context","method":"GET","endpoint":"/api/agent/context","purpose":"Return the full workspace plus Hermes-ready ranked posts, account playbooks, and sourcing instructions."},{"name":"sync_tiktok_analytics","method":"POST","endpoint":"/api/tiktok/sync","purpose":"Refresh owned TikTok post metrics before Hermes decides what to source next."},{"name":"import_tiktok_history","method":"POST","endpoint":"/api/tiktok/import","purpose":"Import real TikTok CSV or JSON rows before OAuth is connected."},{"name":"create_post_draft","method":"POST","endpoint":"/api/posts","purpose":"Create a structured candidate tied to a song, hook, format, account, and campaign."},{"name":"submit_sourced_post","method":"POST","endpoint":"/api/agent/tools","purpose":"Store the post Hermes sourced so future analytics can be tied back to the decision that created it."},{"name":"import_analytics","method":"POST","endpoint":"/api/analytics","purpose":"Attach metrics to manually posted or API-published TikToks."},{"name":"recommend_next_sources","method":"POST","endpoint":"/api/agent/tools","purpose":"Generate the next sourcing instructions from ranked historical performance."}],"agentContract":{"readBeforeSourcing":["agentBrief.rankedPosts","agentBrief.accountPlaybooks","agentBrief.nextContentBrief"],"rankingMeaning":"Higher score means the post is a stronger source candidate for Hermes based on engagement, shares, comments, and view confidence.","expectedUse":"Hermes should source the next daily posts from these ranked signals, then store the created post with song, hook, format, account, and sourcePostId metadata."}}