com.meta-council/decision-intelligence · v1.4.0 · sales-and-crm
Meta Council is healthy: it completed an MCP handshake in 3011 ms and exposes 280 tools. It scores 55/100.
Multi-expert decision intelligence with transparent synthesis and auditable workflows.
Endpoint: https://meta-council.com/mcp (streamable-http)
Repository · JSON · Add to my inventory
| health | 17 / 25 |
| authEase | 15 / 15 |
| toolQuality | 12 / 15 |
| maintenance | 3 / 15 |
| adoption | 0 / 10 |
| usage | 0 / 10 |
| security | 8 / 10 |
Scoring v0.3, computed 2026-10-15T02:31:25.495Z.
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-14T20:35:50.677Z | Healthy | 3011 |
run_council | Submit a question or decision to Meta Council. A panel of specialized AI agents will independently analyze it, then a synthesis step combines their opinions into a unified recommendation with full transparency. Starts asynchronously by default; use get_session with the returned session id. |
plan_council | Resolve the effective Council models, parameters, tools, and setup reasons for this account without starting a session, calling a provider, or recording usage. |
list_panels | List all available expert panels with their descriptions and agent counts. |
list_agents | List all available expert agents with their roles, domains, and specialties. |
get_session | Get the full results of a previous Meta Council session, including all agent opinions and the synthesis. |
get_visualization | Fetch a chart artifact generated by a council session or LOCUS determination. Returns the machine-readable spec (the data behind the chart) plus the stable SVG URL, or the raw SVG itself with include_svg=true. Artifact ids appear in session results as 'visualizations' / 'visualization' reference blo |
list_workflows | List available multi-step workflow pipelines (composable bundles that chain several steps, each able to run on its own model/provider). Returns each workflow's slug, description, per-step model, and definition_sha — a fingerprint of that definition as loaded right now, comparable against the definit |
plan_workflow | Preview what a workflow WOULD do, without running it. Costs nothing and runs no models: returns the step execution order, each step's role/model/max_tokens and whether it pauses for a human checkpoint, the workflow's declared parameters (validated if you supply values), which required integrations y |
test_workflow_step | Run exactly ONE step of a workflow and return what it produced, so you can iterate on a single step's wording without running the steps before it. THIS SPENDS CREDITS EXACTLY LIKE A REAL STEP: the step runs on a real model through the same engine a full run uses and is billed identically -- it is no |
run_workflow | Start a multi-step workflow pipeline and return its session id and definition_sha immediately by default — the fingerprint of the definition this run resolved, comparable against the one plan_workflow reported. Poll get_workflow_session for each step's model/provider and output. synthesis. Steps run |
get_workflow_session | Poll a previously started workflow run for its current step-by-step status and output (useful when run_workflow timed out or is awaiting a checkpoint). Also returns that run's definition_sha — the fingerprint of the definition it resolved when it started, comparable against the one plan_workflow rep |
recommend_panel | Recommend the best expert panel for a query (semantic match with keyword fallback). Returns the top panel + confidence and the runner-up options — feed the result into run_council's panel argument. Requires authentication because the query may be sent to the configured embedding provider. |
estimate_cost | Estimate what a panel or saved workflow would cost before running it: returns a per-agent/per-step price breakdown, the total for the requested number of runs, your remaining quota and platform credit, an honest list of any models the platform could not price, and a go/no-go decision. Reserves nothi |
get_agent_detail | Full detail on one expert agent by slug (from list_agents): role, description, default model, domain, tags, and tools. |
advance_workflow | Advance a workflow past a human checkpoint — approve or reject the paused step so the pipeline continues. Use the session id from run_workflow / get_workflow_session. Requires authentication. |
retry_workflow | Continue a stalled or finished workflow run from a chosen step. This starts a NEW run that reuses the outputs the original run already recorded and only executes — and only pays for — the steps from 'from_step' onward. The original run is left untouched and the new one records which run it continues |
get_settings | Get the authenticated user's Meta Council settings — preferred model, plan tier, which credentials are saved (not live-verified), and the registry-backed tools that require, optionally use, or do not use account credentials. Names and booleans only, never secret values. Requires authentication. |
list_integrations | List which outside services the authenticated user has connected — ticket boards, stored connector credentials (name, kind, whether configured, and when last verified) and the connectors available to call them. Returns configured / not configured facts, names and dates ONLY, and never returns a secr |
get_api_key_info | Report the scopes, plan tier, expiry and remaining quota of the API key making this call, so an agent can check what it is allowed to do before attempting it rather than by being refused. Requires API-key authentication. |
rotate_api_key | Replace the API key making this call with a fresh one carrying the same scopes. WARNING: this IRREVERSIBLY deactivates the current key the moment it succeeds — every other caller using that key stops working immediately, so do not call it on a shared credential. The new key is returned exactly once |
mint_child_api_key | Mint a short-lived child API key for a delegated subtask. The child can never exceed the calling key: requested scopes must be a subset of what the caller holds, its expiry is capped by the caller's, and it may never itself mint keys (delegation is exactly one level deep). A caller whose own scopes |
list_outreach_campaigns | List the authenticated user's outreach campaigns with current lead counts and recorded sent/replied workflow labels, not independently verified delivery or human-reply totals. Requires authentication. |
search_outreach_leads | Search the user's outreach leads — filter by a text query (company / contact / email), pipeline status, and/or campaign. Returns stable IDs, evidence, holds and exact rendered draft bytes/hash for review. Replies over 256 KiB refuse in full; narrow the query or limit. Requires authentication. |
outreach_analytics | Outreach summary for the user — total leads, recorded status counts/ratios and incomplete outcome evidence. Requires authentication. |
score_locus_case | Score an anonymized adult mental-health / addiction case against LOCUS. Convenes the LOCUS Assessment Panel (psychiatrist, addiction specialist, clinical social worker, utilization reviewer, peer specialist, safety officer); each reviewer independently rates all six LOCUS dimensions, then a DETERMIN |
locus_determine_from_scores | Compute a LOCUS Level of Care from dimension ratings you already have. Deterministic — no LLM, instant: composite + Determination Grid + the inviolable override floors (e.g. Risk-of-Harm=4 → minimum Level 5), applied in code. Provide EITHER the seven flat D* ratings (1-5 each; Dimension IV splits in |
ask_legal | Request fixed legacy Themis source/citation records and attach a proposed Laws & Regulations agent/source/synthesis plan whose routes are planned_not_run. Check the law uses fixed legacy provider-record retrieval, but returned records do not prove exact citation identity, relevance, authority, or co |
campaign_pipeline_stats | Pipeline-stage breakdown for one outreach campaign — total / sent / active / won / lost workflow labels, recorded status ratio, and incomplete outcome evidence. Requires authentication. |
list_campaign_triggers | List automation triggers (auto-reply rules, status updates, notifications) configured for an outreach campaign. Requires authentication. |
list_campaign_replies | List sent / received emails for an outreach campaign, newest first — subject, body preview, and reply classification. Requires authentication. |
create_outreach_campaign | Create a new outreach campaign owned by the authenticated user. Returns the new campaign id. Reversible (campaigns can be edited/deleted in the dashboard). Requires authentication. |
add_outreach_lead | Add a single lead to the authenticated user's outreach book. Returns the new lead id. Provenance is stamped source="agent" server-side. Does not send any email. Requires authentication. |
assign_leads_to_campaign | Assign one or more of the user's existing leads to one of the user's campaigns (both must be owned by the caller). Returns how many were assigned. Idempotent. Requires authentication. |
update_outreach_lead_status | Advance a lead through the pipeline — set its status / pipeline stage and, optionally, a recorded reply, pitch, or notes. The core pipeline-drive action. Idempotent (setting the same status twice is a no-op). Requires authentication. |
draft_outreach_email | Save a draft email subject and/or body onto one of the user's leads. This only stores the draft for human review — it does NOT send anything. A human sends from the dashboard. Requires authentication. |
create_outreach_pitch | Create a reusable pitch template (subject + body templates, optional drafting prompt) owned by the user. Provenance is stamped source="agent" server-side. Returns the new pitch id. Requires authentication. |
list_deals | List the caller's sales deals (newest first) together with a weighted pipeline forecast (open/weighted/won totals). Optionally filter by stage or lead_id. Deals are private to the API-key owner. |
get_deal | Fetch one of the caller's deals by id with its full activity timeline (notes, calls, meetings, emails, tasks; newest first). |
list_sales_tasks | List the caller's open sales tasks (activities of type 'task' not yet done), bucketed overdue / today / upcoming and ordered most-urgent-first with per-bucket counts. Close one with complete_sales_task. |
get_business_suite_overview | What needs attention across my business? Return the same private, counts-only review as the browser: Sales tasks, Marketing approvals, Accounting runs and Consulting work, with deterministic next actions. Legal is a governed entry point, not a verified review queue; generated Legal advice is disable |
get_sales_analytics | Sales pipeline analytics for the caller: probability-weighted forecast, per-stage $ rollup, win rate (won / decided, by count and by value), average sales-cycle days over won deals, and open-deal aging with a stale count. Read-only; computed from the caller's own deals. Requires authentication. |
get_sales_recommendations | The caller's prioritized next-best sales actions: interested leads to convert, open deals gone stale enough to need a follow-up, and overdue tasks — each with a rationale and the exact governed tool to run next (convert_lead_to_deal / log_deal_activity / complete_sales_task) plus its arguments. Read |
get_deal_health | Health scores for the caller's OPEN deals: each scored 0-100 on how likely it is to be slipping (healthy >= 70 / watch / at_risk), worst first, with plain-language reasons — days since last logged contact, whether it is past its own expected close date, and how its age compares to the caller's avera |
create_deal | Create a sales deal owned by the caller. Provide a title, or a lead_id to inherit the lead's company/name as the title. The deal appears live on the owner's Sales board. No deletes are exposed over MCP. |
update_deal | Update one of the caller's deals — most commonly to ADVANCE its stage (e.g. discovery -> proposal). Moving to closed_won/closed_lost stamps the close date; reopening to an open stage clears it. Only the fields you pass change; deal_id is required. |
convert_lead_to_deal | Convert an owned outreach lead into a deal and advance the lead into the deal stage of the funnel (never downgrading an already-closed lead). Optional deal fields mirror create_deal; lead_id is required. |
log_deal_activity | Log an activity on a deal (or lead) — a note/call/meeting/email, or a follow-up task with a due date. Pass deal_id and/or lead_id (each must be owned by the caller). type defaults to 'note'; for a task set type='task' and a due_date (YYYY-MM-DD). Tasks appear in list_sales_tasks. |
complete_sales_task | Mark one of the caller's sales tasks/activities done (or reopen it with done=false). Stamps or clears the completion time; activity_id is required. |
list_invoices | List the caller's invoices (newest first), optionally filtered by status (draft/sent/paid/void). Each entry includes its computed overdue flag. |
get_invoice | Fetch one of the caller's invoices by id, including its line items. |
get_invoice_aging | Summarize the caller's unpaid invoices by how long they have been past due. This owner-scoped, read-only report is computed live; an invoice is overdue only when its status is sent and its due_date is before today. Balances are separated by currency, with no conversion or combined money total. |
create_invoice | Create a draft invoice owned by the caller for a client, optionally seeded with line items and linked to an existing deal. Totals (subtotal/tax/total) are computed from the line items and tax_rate. The invoice starts in status 'draft' — call send_invoice to mark it sent. |
update_invoice | Update a draft or sent invoice's header fields (client, terms, due date, tax rate, notes). Only the fields you pass change. Blocked once paid/void — void and re-issue instead. invoice_id is required. |
add_invoice_line_item | Add a billable line item to a draft or sent invoice; totals are recomputed automatically. Blocked once paid/void. invoice_id is required. |
send_invoice | Mark a draft invoice as sent (stamps issued_at). Re-sending an already-sent invoice is a harmless no-op. invoice_id is required. |
mark_invoice_paid | Mark a draft or sent invoice as paid (stamps paid_at). Cannot be applied to a void invoice. invoice_id is required. |
void_invoice | Void a draft or sent invoice. Cannot be applied to an already-paid invoice (issue a credit note instead). invoice_id is required. No delete tool is exposed over MCP — void is the terminal non-destructive state. |
convert_deal_to_invoice | Create a draft invoice from one of the caller's deals: one line item for the deal's amount, client_name defaulted from the deal's company/title. deal_id is required. |
create_accounting_run | Every new run requires one explicitly assigned entity and calendar tax_year in scope. Optional inclusive period_start/period_end must remain in that year. Unassigned source occurrences remain pending and excluded from amounts. Inspect catalog.scope_review, then resubmit with scope_assignments keyed |
list_accounting_runs | List only the caller's private Accounting-run audit metadata, newest first. Raw source text and analysis results are intentionally omitted. |
get_accounting_run | Get one private Accounting run owned by the caller, including its deterministic estimates, disclaimer, engine revision, and audit timestamps. Source input stays omitted unless include_input=true is explicitly requested. |
delete_accounting_run | Hide one owned Accounting run from normal lists and reads. Its encrypted data and provenance are retained and restore_accounting_run reverses this action; this is not permanent erasure. Repeating delete is safe. No external service is contacted. |
restore_accounting_run | Restore one owned soft-deleted Accounting run to normal lists and reads, retaining its original encrypted data and provenance. Repeating restore is safe. No external service is contacted. |
preview_accounting_ticket_sync | Preview, without writing, how one completed owned Accounting run's WRITEOff work plan would map to stable Meta Council tickets. Reports creates, updates, unchanged tickets, human-edited generated fields that will be preserved, and identity conflicts. Requires both accounting:read and tickets:read; t |
sync_accounting_tickets | Commit a previously previewed completed Accounting run's WRITEOff work plan to stable owner-private Meta Council tickets. The expected_plan_hash from the preview is required, retries are idempotent, stable references prevent duplicate tickets across reprocessed runs, and human edits to generated con |
ticket_plan | Preview or idempotently commit an owner-private ticket tree generated from a planning prompt or supplied structured plan. Requires tickets:write. A preview without a supplied plan invokes the planner model and additionally requires councils:run; supplied-plan preview and commit are provider-free and |
ticket_batch_create | Preview or idempotently commit one atomic owner-private batch of structured tickets and nested subtickets. Preview is non-mutating and returns the normalized commit payload, exact preview_token, and deterministic predicted IDs as JSON. Commit requires that exact token: combine commit_payload with mo |
ticket_list | Page through the caller's tickets on the Meta Council board. The opaque next_cursor is owner- and filter-bound; keep every filter unchanged on the next call. Immutable cursor ordering keeps a stable full-board traversal exact while returned tickets are edited or reordered. Filter by status, assignee |
ticket_get | Full detail for one owned ticket: description, acceptance criteria, subticket progress, and the recent activity/comment trail. ticket_id is required. Use ticket_comments for complete bodies and older discussion pages. |
ticket_comments | Read complete discussion bodies, authors, kinds and timestamps for one owned ticket, including archived tickets. Returns a JSON page, newest first with legacy null times last. limit is 1–100 (default 50). Continue with next_cursor while has_more; reached_oldest means there are no older rows. Cursors |
list_reviewed_attention | Discover latest owned attention reviews, including cleared, terminal, archived and unavailable work. Requires tickets:read. Filter unresolved (including withdrawn), resolved or all; independently set follow_up=due for saved follow-ups whose stored UTC instant has arrived. Due pages sort oldest first |
get_ticket_attention_resolution | Inspect original reviewed evidence, a separately labeled fresh assessment and immutable owner resolution history. Requires tickets:read. limit 1–50, exclusive before_revision. Current state always refers to the latest review; unavailable work is not proof of deletion or resolution. |
record_ticket_attention_resolution | Record or withdraw an owner resolution with a required explanation, latest review ID/revision, resolution revision and fresh assessment digest. Requires tickets:write. Use a stable idempotency key; exact retries return the original receipt, conflicts require fresh inspection. Resolution never change |
get_ticket_attention_policy | Read the owner-private effective attention policy, built-in defaults, applicable statuses and immutable history. Requires tickets:read. limit 1–50 (default 20); exclusive before_revision. Earlier unrecorded history is unknown. No writes or providers. |
save_ticket_attention_policy | Save owner-private attention thresholds in UTC days (finite 0–3650), status overrides and optional paused_statuses. Requires tickets:write. Supply full base thresholds, sparse overrides, expected_revision and caller-stable idempotency_key. paused_statuses specifies all four timed reasons with unique |
get_ticket_attention_review | Read the owner-private current attention assessment, latest review and immutable history. Requires tickets:read. History uses limit 1–50 (default 20) and exclusive before_revision; stays readable after ticket closure/archive/deletion. Evidence-changed and follow-up-due are separate states. Dates bec |
save_ticket_attention_review | Record an owner-private review of current attention evidence, with optional note (2000 characters) and follow_up_date plus explicit IANA follow_up_timezone, or null for both. Requires tickets:write. Supply the current evidence digest, current review revision (0 first), and caller-stable idempotency |
get_ticket_attention_queue | Read the same ranked Needs attention queue as the browser and REST. Returns complete JSON with reasons, UTC clock evidence, effective owner policy thresholds and revision, approximation flags, unmet prerequisites and suggested next actions. Ordinary attention covers open active owned tickets; integr |
get_ticket_projects | Projects overview of the caller's board: one entry per top-level epic with recursive descendant progress (done %, counts by status, blocked, points, sub-epics, last activity), plus a triage strip of unrouted work (backlog + unassigned root tickets). Read-only, recomputed live. Use this before planni |
get_workspace_metrics | One cross-domain rollup of the caller's own workspace: council sessions (total, last 30 days, by status, tokens), feedback ratings, tickets (open/done), deals (count by stage, open pipeline value) and invoices (count by status, outstanding total, overdue count). Read-only, recomputed live, and scope |
get_meta_council_platform_metrics | OPERATOR ONLY: cross-owner analytics for the META COUNCIL PLATFORM itself — every account added together, NOT the caller's workspace (use get_workspace_metrics for that). Requires both the platform:admin scope AND an ADMIN_EMAILS operator account; everyone else gets a permission error. Returns conte |
get_site_analytics | OPERATOR ONLY: visitor traffic for the META COUNCIL PLATFORM's own website — every visitor added together, NOT the caller's workspace (use get_workspace_metrics for that) and NOT the business rollup (use get_meta_council_platform_metrics for that). Requires both the platform:admin scope AND an ADMIN |
get_feature_delivery_summary | Read one owned feature epic's current task completion, estimates, weekly delivery flow, lead/cycle evidence, risks and throughput scenario. Includes a separate retained-history view of scope additions/removals, estimate changes and accumulated blocked task-hours, with explicit incomplete/ambiguous c |
get_ticket_burndown | Daily burndown series replayed from the append-only ticket ledger: per-day scope (existing, non-cancelled), remaining, done levels plus added/completed flows, with a summary. Optionally scope to one epic's current subtree via root_id. Backfill (legacy_snapshot) rows seed state but never count as add |
get_ticket_label_history | Read immutable owner-private observed label assignments/removals, revision bindings and legacy limits. Retains deleted tickets. Bounded cursor pagination; no provider or ticket changes. |
get_ticket_label_cohort | Report a fixed cohort holding one exact label at the UTC window start, observed daily task completions/reopens, status and point coverage. Today's labels never rewrite history. end_date is exclusive; default today UTC. Bounded cursor pagination; unknown history is disclosed. |
list_saved_views | List saved ticket views you can open: the stored filter, column, grouping and sort combinations saved by you, plus any shared with a team you belong to. Shared views appear under the active and all scopes and never once archived, because an owner's archive is their own working state. Returns the sam |
get_saved_view | Fetch one saved ticket view's definition by id: its name, filters, columns, grouping, sort and whether it is shared. This returns the view itself, not the tickets it selects -- use execute_saved_view to run it. A view you cannot read is reported as not found rather than as forbidden, so this cannot |
execute_saved_view | Run saved ticket, attention or reviewed-work intent against live owned data. Ordinary views return matching tickets and optional group counts. Triage returns the original reader envelope in data, the view and a definition_token. For triage continuation send expected_definition_token; attention uses |
list_portfolio_report_history | Browse owned saved reports in portfolio (default), project or all scopes, newest first. Project scope requires project_id. Each report supplies its immutable ID and payload hash for comparisons or replacement declarations. Continue with next_before_id while has_more; omit the cursor to refresh newes |
get_portfolio_report_lineage | Read bounded outgoing replacement chains and incoming owner declarations for one owned saved report. Absence means no replacement recorded, not approval. Continue outgoing pages with next_snapshot_id and incoming pages with next_before_relation_id. Original reports and downloads never change. ticket |
get_portfolio_snapshot_inputs | Verify and return the retained minimal inputs and regenerated counts of one owned project report. Reads stored inputs only; later ticket moves or deletion do not recapture the report. Legacy reports without retained inputs return a precise unavailable dependency. Requires tickets:read. |
export_portfolio_snapshot | Download one owned saved report using the same JSON, CSV, accessible HTML or optional tagged PDF renderer as the browser. Returns filename, media_type, encoding, content and SHA-256; PDF content is base64. Unsupported PDF fonts or renderer dependencies return an explicit error with HTML fallback. No |
supersede_portfolio_report | Record that one owned saved report replaces another, with a required reason and both fetched payload hashes. This is an immutable owner declaration, not approval, sharing or a claim of accuracy. Both reports must have no replacement recorded. Use the same key and exact payload after an uncertain res |
list_portfolio_snapshots | List your own portfolio (default), project or all snapshots, newest first. Project scope requires project_id: the immutable rollups of how your ticket portfolio stood at the moments you captured them. Each carries its label, schema version, stored payload, content hash, recording actor and creation |
get_portfolio_snapshot | Fetch one portfolio snapshot by id: its label, schema version, the exact stored rollup payload, its content hash, who recorded it and when. The payload is served from storage and is never recomputed from live tickets, so a snapshot read today reports what was true when it was taken. A snapshot you d |
diff_portfolio_snapshots | Compare two of your own portfolio snapshots and return the per-dimension movement between them. snapshot_id is always the 'to' side; against is the 'from' baseline, defaulting to your newest snapshot in the same project or portfolio strictly older than it -- the 'what changed since last time' read, |
list_portfolio_snapshot_notes | Read the decision and comment thread recorded against one of your portfolio snapshots, oldest first. Each note carries the snapshot content hash it was written against plus binding_intact comparing that hash to the snapshot's hash now, so a note can be read as evidence of what was actually on the sc |
create_saved_view | Save a named ticket filter, column, grouping and sort bundle so you can reopen it later or share it with a team. Saves the QUESTION, not an answer: the view is re-run against live tickets every time it is opened, so it never goes stale. The new view is private until you share it. Same endpoint the w |
update_saved_view | Revise one of YOUR OWN saved views in place, keeping its id and any existing team share. Only the fields you send change; the rest are left exactly as they were, while scorecard-enrolled views require the current definition_revision; after a conflict or uncertain reply, read current state and delibe |