Content Calendar Agent by Nova (CIVAI)
I create markdown content calendars and export them as PDFs via PDF Generator MCP
Should I use this
Quality & Safety
Findings (8)
- LOWin slidegen__converse
- LOWin bgpt_pdf_generator__list_previews
- LOWin bgpt_pdf_generator__get_preview
- LOWin bgpt_pdf_generator__preview_document
- LOWin bgpt_pdf_generator__generate_pdf
- LOWin bgpt_pdf_generator__delete_preview
- LOWin slidegen__generate_single_graphic
- LOWin slidegen__generate_multiple_graphics
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"content-calendar-agent": {
"url": "https://nova.civai.co/mcp/agents/content-calendar-agent"
}
}
}Remote endpoints
https://nova.civai.co/mcp/agents/content-calendar-agentstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢bgpt_pdf_generator__list_previews
List all stored PDF drafts in this session. Returns previews[{preview_id, title}], count, and most_recent_preview_id. Use when the user taps List PDFs or asks which drafts exist. Does not show document body — follow with get_preview after they pick.
Input Schema
{
"type": "object",
"properties": {},
"required": []
}🟢bgpt_pdf_generator__get_preview(preview_id)
Preview PDF button. Call with no args first: if one draft exists, returns document_markdown; if multiple, returns needs_selection + previews — emit_display layout P (interaction_mode none) numbered picker only. NEVER collect_user_input or emit_display input for preview_id. After user replies with a number/title, call again with preview_id.
Input Schema
{
"type": "object",
"properties": {
"preview_id": {
"type": "string",
"description": "Optional. Omit on first Preview PDF tap so the tool can list drafts. Pass only after the user picks from the numbered list (or when chat already has a clear id)."
}
},
"required": []
}🟡bgpt_pdf_generator__preview_document(title, content, update_preview_id)
Write or revise draft markdown into session storage (creates preview_id). Agent-only — not a suggestion button. Use when the user asks to create/write/edit document content. For showing an existing draft use get_preview (Preview PDF). Never put emit_display chrome into content.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Document title (real topic title, not 'Preview')"
},
"content": {
"type": "string",
"description": "Full substantive markdown for the PDF pages (use --- between pages; each page needs a heading). Must be the document the user requested — never UI phrases like 'Here is a preview of your PDF document.'"
},
"update_preview_id": {
"type": "string",
"description": "When the user asks to adjust an existing preview, set this to that preview's preview_id. Omit to create a new preview."
}
},
"required": [
"content"
]
}⚪bgpt_pdf_generator__generate_pdf(preview_id)
Generate a PDF from a preview. Call with no args first: if multiple previews exist, returns needs_selection + previews (title + preview_id) — ask the user which one, then call again with preview_id. If only one preview exists, generates it immediately. Returns pdf_url when generated.
Input Schema
{
"type": "object",
"properties": {
"preview_id": {
"type": "string",
"description": "Unique preview_id from a prior preview_document result. Omit to list choices (when multiple) or generate the only/last preview."
}
},
"required": []
}🔴bgpt_pdf_generator__delete_preview(preview_id)
Delete one stored PDF draft by preview_id from this chat session only. Hidden from suggestion buttons — agent-only. Returns deleted true/false. Does not remove already-generated public PDF files. Never accept path-like ids.
Input Schema
{
"type": "object",
"properties": {
"preview_id": {
"type": "string",
"description": "Hex preview_id from list_previews / get_preview in THIS session only"
}
},
"required": [
"preview_id"
]
}⚪slidegen__generate_single_graphic(detail)
🖼️ Slidegen: generate single graphic
Input Schema
{
"type": "object",
"properties": {
"detail": {
"type": "string",
"description": "Specific parameters for this action."
}
}
}⚪slidegen__generate_image(detail)
🖼️ Slidegen: generate image
Input Schema
{
"type": "object",
"properties": {
"detail": {
"type": "string",
"description": "Specific parameters for this action."
}
}
}⚪slidegen__generate_multiple_graphics(detail)
🖼️ Slidegen: generate multiple graphics
Input Schema
{
"type": "object",
"properties": {
"detail": {
"type": "string",
"description": "Specific parameters for this action."
}
}
}⚪slidegen__converse(reply_hint)
Reply conversationally when the request is ambiguous or needs clarification.
Input Schema
{
"type": "object",
"properties": {
"reply_hint": {
"type": "string",
"description": "Optional hint for the conversational reply."
}
}
}Recommended Prompts
bgpt_pdf_generator__get_previewbgpt_pdf_generator__list_previewsbgpt_pdf_generator__list_previewsbgpt_pdf_generator__get_previewbgpt_pdf_generator__get_previewbgpt_pdf_generator__list_previewsCommunity
Evidence