Exposes the idea2post.app content engine to Hermes Agent as a set of tools for autonomous content research, generation, and publishing orchestration.
Server exposes 7 tools with basic descriptions and parameter schemas. All tools are READ_ONLY except queue_publish (WRITE). Naming follows verb_noun convention (list_*, generate_*, queue_*). However, descriptions lack LLM-optimized structure (missing WHEN to use, prerequisites, and dependency hints). Parameter descriptions are minimal or absent. Output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling is generic (subprocess timeout, JSON parse failures) with no recovery guidance. No input validation or constraint documentation. Composition is reasonable (7 focused tools), but chaining is unclear, generate_content returns content but queue_publish expects content_id, forcing an undocumented storage assumption.
Generate multi-format viral content from an idea using the idea2post engine. formats can include: hook, blog, facebook, twitter, linkedin, email, script, instagram, thread, cta, faq. Returns each format with title, body, viral_score, hook_strength. Use this AFTER research to produce concrete content the user can publish.
List competitor accounts being tracked by idea2post crawlers. Returns name, source_type (youtube/website/rss/facebook), website URL, post_count, last_scanned_at. Use this to know which sources the user is monitoring before suggesting content angles.
List autonomous content pipelines (auto-publish loops). Returns active flag, frequency, next_run_at, posts_published. Use this to see what's running on autopilot before recommending new pipelines.
List active publishing accounts (Facebook pages, LinkedIn, WordPress) where content can be posted. Returns id, platform, label, token_status. Use the returned id when calling queue_publish.
Queue a previously-generated content row for publishing on a connected account. Provide content_id (from generate_content result, when stored) and account_id (from list_publish_accounts). Returns the new job_id. Only call this when the user explicitly approves publishing.
Output schemas not documented. LLMs cannot infer response structure (fields, types, nesting). Forces agents to guess what data is available for downstream calls.
Descriptions lack WHEN/WHY guidance. E.g., 'List competitor accounts' does not explain when to call it vs recent_competitor_posts, or that it should be called before suggesting content angles (which is buried in the description).
generate_content returns content but queue_publish expects content_id. No documentation of how content_id is obtained or stored. Breaks tool chaining, agent cannot infer the flow.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Most recently crawled posts from tracked competitors — title, excerpt, engagement, source name, published_at. This is the agent's primary research signal for what's currently trending in the user's niche.
Snapshot of the idea2post system: queued/done/failed publish jobs, content generated in the last 7 days, competitor count, recent competitor posts in last 24h, and active pipelines. Call this first to understand the state.
Error handling is generic. Subprocess timeout returns 'timed out after 90s' with no recovery guidance. JSON parse failures return raw output (truncated to 400 chars), LLM cannot self-correct.
No input validation or constraint documentation. generate_content accepts arbitrary formats array; PHP backend filters silently. LLM has no way to know which formats are valid before calling.