The MCP tool directory.
Each row is one tool from one provider. Tools sharing a name across providers (e.g. search) are listed separately because they aren't interchangeable.
[ 83 tools indexed ]
[ all tools ]
30 / 83
add_content_ideas
[ remote ] Account requiredAppends one or more pre-decided content ideas to a workstream. Use this when you have specific articles in mind rather than letting the AI propose them. Each idea defaults to contentType=BlogPost, contentRole=Support, targetWordCount=1000 (Support) or 3000 (Pillar), status=Idea. Pass a brief at creation to skip generate_brief_for_idea later; once status is set to ApprovedForGeneration, call generate_content_from_idea to produce the article.
add_primary_research
[ remote ] Account requiredAdds the brand's own material to a research dossier — their measurements, their usage numbers, what their customers told them, what they observed. It is turned into claims marked primary, which the writer prefers over every source on the web and which are exempt from the two-publisher rule that governs web claims. This is the material nobody else writing about the topic has. Pass suggestionId to answer one of the dossier's suggested primary research items; it is then marked answered.
approve_workstream
[ remote ] Account requiredApproves an entire workstream — sets all 'Idea' status items to 'ApprovedForGeneration' and schedules the first article today, then one every two days.
archive_content_plan
[ remote ] Account requiredArchives a content plan. Use this for plans that drifted off-brand, were superseded, or are otherwise dead — archived plans are filtered out of default list_content_plans but remain queryable with status='Archived'. Optional 'reason' is stored on the plan for audit.
assess_listing_quality
[ remote ] Account requiredAssesses how marketplace-ready a single product listing is — with no human file handling. Pass the product's fields as a flat object of column -> value (e.g. { "name": "...", "ean": "...", "description": "..." }). Returns an overall score (0-100), a per-dimension breakdown (identifier, title, description, brand, image, category, attributes), the specific gaps, and a recommendation. This is a free, read-only check; to actually fill the gaps and rewrite content, use the optimisation tool.
bulk_update_content_idea_status
[ remote ] Account requiredBatch status change for multiple content ideas across one plan. Mirrors bulk_update_content_status (which targets ContentItems) — fail-soft, returns per-id errors. Useful for quickly skipping or approving many ideas without one tool call per idea. Idea IDs are GUIDs (from get_content_plan), not ObjectIds.
bulk_update_content_status
[ remote ] Account requiredBatch status change for multiple content items (e.g. publish or archive several at once). Fail-soft: items that no longer exist are reported in 'errors' and the rest still succeed. If you see 'not found (deleted or never existed)' errors, the IDs are likely from a stale list_content_items response — refetch the list and retry.
complete_content_plan
[ remote ] Account requiredMarks a content plan as Completed. Use this when the plan's intended output has shipped and you don't expect further work — completed plans are filtered out of the default list_content_plans view but remain queryable with status='Completed'. Optional 'reason' is stored on the plan for audit and is shown back in get_content_plan.
copy_content_to_brief
[ remote ] Account requiredCopies the Content field of an existing ContentItem into the Brief field of a content idea. Use this to convert previously generated content into a brief for re-generation through the improved pipeline.
create_category
[ remote ] Account requiredCreates a content category for a brand. Categories are required for publishing articles. IMPORTANT: 'description' is served publicly as the category page meta description — keep it reader-friendly and free of strategy/positioning language. Put planner-facing notes in 'internalNotes' instead. Both fields are plain text — send literal characters, do not HTML-escape (no '&', '<', or '<tag>'). Returns the created category with its ID.
create_content_item
[ remote ] Account requiredCreates a new content item (article). Two paths: (a) pass 'content' with the full markdown article — done; or (b) pass 'brief' with instructions and call generate_content_from_item afterward to fill 'content' from the brief via AI. Provide at least one of 'content' or 'brief'. Free-text fields (title, description, brief, metaTitle, metaDescription) are plain text — send literal characters, do not HTML-escape (no '&', '<', or '<tag>'). 'content' is markdown and intentionally permits inline HTML.
create_content_plan
[ remote ] Account requiredCreates a new content plan. When 'autoGenerate' is true (default), AI proposes topical clusters to research — expensive LLM job (does not spend a cluster) and takes 15-30 seconds. Clusters are topics only; articles are proposed later from research (start_deep_research, then propose_ideas_from_research). When 'autoGenerate' is false, creates an empty plan in Draft status — no LLM cost. Use create_workstream to add clusters, and add_content_ideas only when you already have pre-decided article titles. Multi-language note: a content idea is one language-agnostic concept. The system renders it once per Brand.TargetLanguages — there are no separate per-language workstreams. Use update_localized_keywords to differ targeting per market. To bias generation per-language, set per-language ContentGuidelines via upsert_content_guideline. 'additionalInstructions' is rendered as a CRITICAL CONSTRAINTS block at the top of the generation prompt and overrides default cluster selection. Use it to enumerate must-have / must-not-have clusters for this plan. Only used when autoGenerate=true.
create_customer
[ remote ] Account requiredCreate a new customer (invoice recipient). Check list_customers first — Monego does not enforce unique customer names or emails, so repeated creates produce duplicates. For German public-sector (B2G) buyers that need XRechnung invoices, set leitwegId and preferredInvoiceFormat='xRechnungXml'. Response: { customer { id, name, ... } } — use customer.id as customerId in create_invoice. Errors: { error: { code: 'bad_input', field, message } }.
create_invoice
[ remote ] Account requiredCreate a draft invoice for a customer: allocates the next sequential invoice number, computes per-line and total amounts server-side (EN 16931 group-by-rate rounding; prices are net EUR), and returns the draft including eInvoiceIssues — anything that would block finalize_invoice. The draft is editable via update_invoice until finalize_invoice freezes it. Pass externalId (any stable key from your system) to make creation idempotent: retries and repeat calls with the same externalId return the existing invoice (alreadyExisted=true) instead of creating a duplicate. Response: { invoice { id, invoiceNumber, status:'draft', lineItems[], netTotal, taxTotal, grossTotal, effectiveFormat, eInvoiceIssues[], ... }, alreadyExisted? }. Errors: { error: { code: 'not_found' | 'bad_input' | 'subscription_required', ... } }.
create_monitored_query
[ remote ] Account requiredCreates a new AI visibility monitoring query (prompt) for a brand. Call list_prompt_industries for this brand first: 'industry' must be one of the values it returns, because that field groups prompts into rows in the customer's report.
create_workstream
[ remote ] Account requiredAppends a new workstream to a content plan. Use after create_content_plan with autoGenerate=false to build a plan manually, or to add a workstream to an existing plan. Workstreams are themed clusters (e.g. 'Authority Building', 'Product Education'). Returns the new workstream ID. Research the cluster (start_deep_research) so articles can be proposed from that research, or feed the ID into add_content_ideas if you already have titles.
crop_image
[ remote ] Account requiredCrops an existing image to a specific rectangle region. Creates a new image — the original is kept. Returns the new image URL. Use get_image_dimensions first if you need to know the source image size.
delete_content_guideline
[ remote ] Account requiredRemoves a per-language content guideline from the brand.
dismiss_research_claim
[ remote ] Account requiredRemoves a claim from a research dossier so the writer no longer uses it. Ideas that cited that claim id lose it. Keep at least one claim, or research the cluster again.
finalize_invoice
[ remote ] Account requiredFinalize a draft invoice — IRREVERSIBLE. Validates the data against the target e-invoice format, generates the legally required artifact (XRechnung: standalone CII XML; ZUGFeRD/Factur-X: PDF/A-3 with embedded XML), stores it immutably (GoBD), and locks the invoice against further edits. The format defaults to the customer's preferredInvoiceFormat (tenant default: zugferdPdf); pass format explicitly to override for this invoice — 'xRechnungXml' requires the customer to have a valid Leitweg-ID (set via update_customer). Check eInvoiceIssues on get_invoice first to avoid validation errors. After success, fetch the document with get_invoice_document or email it with send_invoice. Response: { invoice { status:'finalized', format, hasDocument:true, ... } }. Errors: { error: { code: 'invalid_state' | 'validation_failed' (details[] lists each problem) | 'precondition_failed' | 'not_found' | 'bad_input' | 'subscription_required', ... } }.
find
[ remote ] Account requiredResolves a brand, content plan, or workstream name to ids. Pass the ids to the other tools. Optional 'brandId' scopes plan and workstream search to one brand. Empty query lists accessible brands.
generate_brief_for_idea
[ remote ] Account requiredExpensive LLM job — does not spend a researched cluster. Generates an AI content brief for a content idea using web research. The brief specifies outline, key points, tone, CTAs — everything a writer needs. Stores the result in the idea's Brief field for review before content generation.
generate_content_from_idea
[ remote ] Account requiredExpensive LLM job — writing from a researched workstream does not spend a second cluster. Triggers content generation for an approved content idea. Enqueues a job that runs research, writing, and editorial review. Creates a ContentItem with the generated markdown when done.
generate_content_from_item
[ remote ] Account requiredExpensive LLM job — writing from a researched workstream does not spend a second cluster. Enqueues a content generation job for a ContentItem with a Brief. The job runs the full writer pipeline: research, two-call writer split, section-targeted expansion, editorial review with glossary/structural-marker enforcement, and post-editor glossary repair. The item's Content is overwritten UNCONDITIONALLY when the job completes — there is no skip-guard on the existing Content, so calling this on an already-populated item regenerates from the Brief. Description and MetaDescription are also overwritten. Returns immediately with the job ID; poll get_content_generation_status(jobId) for phase/progress/last-alive, or poll get_content_item for the finished article — UpdatedAt advances at every phase transition so you can distinguish 'in progress' from 'silently failed'. Item must have a Brief; the Brief should specify the desired length, or set 'targetWordCount' on the item via update_content_item.
generate_image
[ remote ] Account requiredExpensive LLM job — does not spend a researched cluster. Generates an AI image for a brand. Two models are available: 'gemini-3.1-flash-image-preview' (Nano Banana 2 — fast, default) and 'gpt-image-2' (GPT Image 2.0 — higher quality). If 'model' or 'aspectRatio' is omitted, the brand's defaults from upsert_visual_style (defaultModel / defaultAspectRatio) are used as fallbacks before the built-in default. The 'prompt' can be plain text OR a JSON object encoded as a string. When using JSON, keys are merged with the brand's visual style — per-image keys take precedence over brand defaults. Use get_visual_style to see what's already configured. Recognized JSON keys (first-class — influence the rendering): 'imageDescription' (the main subject — required if no plain-text prompt), 'altText', 'style', 'colorScheme' / 'colorPalette', 'mood', 'motif', 'lighting', 'composition', 'additionalInstructions', 'constraints' (array of negative prompts). Translatable keys (carried through localization): 'imageDescription', 'altText', 'text', 'title', 'caption', 'description'. Unknown keys pass through verbatim to the image model — useful for one-off experiments, but the brand-level fields above are what flow consistently across calls. Note: 'aspect' is NOT a recognized JSON key — pass aspect ratio via the 'aspectRatio' parameter, not in the JSON body. Example JSON prompt: {"imageDescription":"Cute robots working in a garden","motif":"isolated subjects","lighting":"soft natural daylight"}. Returns the public URL of the generated image.
get_analytics_timeline
[ remote ] Account requiredGets brand analytics over time — one data point per monitoring run. Shows how sentiment, share of voice, and rankings change over time.
get_brand_analytics
[ remote ] Account requiredGets brand analytics: sentiment scores, share of voice, mention rankings, and competitor mentions. Aggregated across all monitoring runs with optional filters.
get_brand_context
[ remote ] Account requiredPrimary entry point. Returns brand details, keywords (per-language when configured), topics, competitors, content guidelines (per-language voice/glossary), content summary (counts by status), active plan summaries, and recent timeline events. Call this first to understand the brand before using other tools. Pass 'language' to filter content guidelines and localized keywords to one language; omit it to return all configured languages. Returned 'setupStatus' is a lifecycle marker: 'PreReview' = brand was just discovered and is awaiting human curation; 'MonitorSetup' = curated, monitoring + analytics are being configured; 'Active' = fully operational, content generation enabled. Returned 'priority' on topics and competitors is a soft sort key in [0.0, 1.0] — higher = more emphasis when surfaced to prompts. Not a confidence score; treat the exact value as a relative ordering, not a probability. Returned 'setupGaps' lists known-incomplete configuration: 'contentGuidelines' (some target language has no guideline), 'localizedKeywords' (some target language has no keyword bucket). Empty list means everything's configured for the brand's TargetLanguages.
get_brand_timeline
[ remote ] Account requiredGets a unified event timeline for the brand: content publications, traffic changes, awareness changes, and monitoring run completions.
get_company_profile
[ remote ] Account requiredGet the seller identity (company profile) of the authenticated Monego account and whether it is ready to issue e-invoices. Call this first in any invoicing workflow: finalizing invoices fails without a configured company profile. Response: { profile { companyName, street, city, postalCode, country, defaultLanguage, vatId, taxNumber, registrationNumber, legalForm, iban, bic, email, website }, eInvoiceReady (bool — seller side only; per-invoice checks still run at finalize), issues[] (blocking gaps first, then entries prefixed 'Recommended:') }. The profile is edited by the operator in the Monego app — there is deliberately no MCP tool to change seller identity. Errors: { error: { code: 'precondition_failed', message, hint } } when no profile is configured yet.