Atisbo

MCP tools over one Atisbo workspace: Signals, Opportunities, Backlog, Decisions, Living Documents.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
94%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~11,393Tokens (tool definitions)
~16.6 KBTypical response size
Significant attention impact (8.90% of 128k context)

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": {
    "atisbo": {
      "url": "https://app.atisbo.dev/api/mcp"
    }
  }
}

Remote endpoints

https://app.atisbo.dev/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒atisbo_orient(mode, task, depth, limit, cursor, ...)

Workspace orientation. Modes: snapshot, whats_new, strategy, integrations. Continue the user's existing workflow; never create a parallel backlog. Living docs cite snippet:// refs β€” open with atisbo_lookup mode=open, full corpus via claim depth=work, aggregates via atisbo_analyze. Edit via atisbo_lookup mode=doc_patch_context then atisbo_capture mode=patch_artefact.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "description": "snapshot (alias: workspace) uses task; whats_new uses since_checkpoint; strategy/integrations need no IDs.",
      "enum": [
        "snapshot",
        "whats_new",
        "strategy",
        "integrations"
      ]
    },
    "task": {
      "type": "string",
      "description": "triage = untriaged inbox; planning = confirmed opportunities by priority; operations = signals & integrations; executive = KPIs & strategy.",
      "enum": [
        "triage",
        "planning",
        "operations",
        "executive"
      ]
    },
    "depth": {
      "type": "string",
      "description": "summary (alias: brief) = compact fields; work = full context (default).",
      "enum": [
        "summary",
        "work"
      ]
    },
    "limit": {
      "type": "number",
      "description": "Max items. snapshot clamps to 20; whats_new to 50."
    },
    "cursor": {
      "type": "string",
      "description": "Pagination cursor from a previous response.",
      "minLength": 1
    },
    "since_checkpoint": {
      "type": "string",
      "description": "ISO 8601 checkpoint for delta reads; invalid values are ignored."
    }
  }
}
🟒atisbo_lookup(mode, entity, ref, refs, query, ...)

Find or open Atisbo entities. Modes expose snippet text + attachment URLs, queues, outcomes and implementation context.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "description": "Named by its enum value; notes per mode in meta.guidance.",
      "enum": [
        "open",
        "resolve",
        "claims",
        "get",
        "similar_claims",
        "solutions",
        "outcome_review",
        "similar_solutions",
        "work_queue",
        "orphans",
        "maps",
        "context",
        "knowledge",
        "living_doc",
        "attachments",
        "accounts",
        "deal_breakers",
        "doc_patch_context",
        "implementation_context",
        "receipts"
      ]
    },
    "entity": {
      "type": "string",
      "description": "get: which entity kind the id field carries. Omit it β€” the id field you already sent names the entity.",
      "enum": [
        "claim",
        "solution",
        "node",
        "map"
      ]
    },
    "ref": {
      "type": "string",
      "description": "open: a handle ref, e.g. claim:UUID or snippet://UUID.",
      "minLength": 3,
      "maxLength": 120
    },
    "refs": {
      "type": "array",
      "description": "open: several refs (max 10).",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 120
      }
    },
    "query": {
      "type": "string",
      "description": "Search text (resolve/context).",
      "minLength": 2,
      "maxLength": 500
    },
    "types": {
      "type": "array",
      "description": "resolve: entity kinds.",
      "minItems": 1,
      "maxItems": 4,
      "items": {
        "type": "string",
        "enum": [
          "claim",
          "solution",
          "node",
          "map"
        ]
      }
    },
    "target_id": {
      "type": "string",
      "description": "Generic UUID for claim/solution/node/map/doc.",
      "format": "uuid"
    },
    "claim_id": {
      "type": "string",
      "description": "Claim UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "solution_id": {
      "type": "string",
      "description": "Solution UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "node_id": {
      "type": "string",
      "description": "Node UUID β€” mode=get targets it when entity is node.",
      "format": "uuid"
    },
    "map_id": {
      "type": "string",
      "description": "Map UUID β€” mode=get targets it when entity is map.",
      "format": "uuid"
    },
    "document_id": {
      "type": "string",
      "description": "Living document UUID.",
      "format": "uuid"
    },
    "dirty_event_id": {
      "type": "string",
      "description": "doc_patch_context: loads this event's snippets.",
      "format": "uuid"
    },
    "scope": {
      "type": "string",
      "description": "Scope for context / living_doc list.",
      "enum": [
        "company",
        "node",
        "claim",
        "solution",
        "map"
      ]
    },
    "scope_id": {
      "type": "string",
      "description": "Scope UUID unless scope=company.",
      "format": "uuid"
    },
    "status": {
      "type": "string",
      "description": "Status filter β€” see guidance for \"archived\".",
      "enum": [
        "active",
        "all",
        "archived"
      ]
    },
    "anchored": {
      "type": "string",
      "description": "Claim list anchoring filter.",
      "enum": [
        "any",
        "anchored",
        "unanchored"
      ]
    },
    "include_stale": {
      "type": "boolean",
      "description": "claims: include stale (no snippet in 30d)."
    },
    "focus": {
      "type": "string",
      "description": "claims: agent_work (default) | all.",
      "enum": [
        "agent_work",
        "all"
      ]
    },
    "lifecycle": {
      "type": "array",
      "description": "Solution lifecycle filters.",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "type": "string",
        "enum": [
          "IDEA",
          "DESIGNING",
          "IN_DEVELOPMENT",
          "IN_REVIEW",
          "LAUNCHED",
          "CANCELED"
        ]
      }
    },
    "sort_by": {
      "type": "string",
      "description": "Solution list order (priority = evidence-weighted Γ— boost).",
      "enum": [
        "priority",
        "created_at",
        "lifecycle"
      ]
    },
    "state": {
      "type": "string",
      "description": "work tokens (todo=DESIGNING, active=agent-consumable) or post-launch kinds (Backlog UI partition).",
      "enum": [
        "active",
        "todo",
        "draft",
        "in_review",
        "launched",
        "monitoring",
        "needs_review",
        "came_back",
        "didnt_work",
        "partly_worked",
        "worked",
        "delivered",
        "replaced",
        "canceled"
      ]
    },
    "claim_state": {
      "type": "string",
      "description": "claims/work_queue Claim state; open=untouched.",
      "enum": [
        "open",
        "in_progress",
        "resolved"
      ]
    },
    "type": {
      "type": "string",
      "description": "claims: classification.",
      "enum": [
        "problem",
        "idea",
        "question",
        "unclassified"
      ]
    },
    "depth": {
      "type": "string",
      "description": "summary (alias: brief) = compact fields; work = full context (default).",
      "enum": [
        "summary",
        "work"
      ]
    },
    "debug_score": {
      "type": "boolean",
      "description": "get entity=claim: PowerScore factor breakdown."
    },
    "limit": {
      "type": "number",
      "description": "Max results. Delegates cap what fits one page: claims clamp to 30, orphans to 50; others self-cap. Page with next_cursor."
    },
    "evidence_limit": {
      "type": "number",
      "description": "get entity=claim: max evidence rows on page one (1–25); stream cursor reaches the rest.",
      "minimum": 1,
      "maximum": 25
    },
    "cursor": {
      "type": "string",
      "description": "Pagination cursor from a previous response.",
      "minLength": 1
    },
    "action_cursor": {
      "type": "string",
      "description": "work_queue action_queue cursor; restart at page 1 after a mutation.",
      "minLength": 1
    },
    "exception_cursor": {
      "type": "string",
      "description": "work_queue: pages pm_exceptions.",
      "minLength": 1
    },
    "operational_block_cursor": {
      "type": "string",
      "description": "work_queue: pages operational_blocks.",
      "minLength": 1
    },
    "judgement_cursor": {
      "type": "string",
      "description": "work_queue: pages delegation.needs_judgement.",
      "minLength": 1
    },
    "review_kind": {
      "type": "string",
      "description": "unreviewed only (see atisbo_decide mode=mark_reviewed).",
      "enum": [
        "signal_triage",
        "claim_structure",
        "solution_quality"
      ]
    },
    "category": {
      "type": "string",
      "description": "knowledge: exact category filter. ≀60 chars.",
      "minLength": 1,
      "maxLength": 60
    },
    "command_id": {
      "type": "string",
      "description": "receipts: probe ONE write β€” the Idempotency-Key you sent, or the jsonrpc:N implicit key. Omit for your 25 most recent writes.",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "mode"
  ]
}
πŸ”΄atisbo_capture(mode, text, items, title, content, ...)

Capture Signals or knowledge; update, patch or add evidence to artefacts.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "description": "Capture mode. Notes per mode in meta.guidance.",
      "enum": [
        "signal",
        "signal_batch",
        "knowledge",
        "update_artefact",
        "patch_artefact",
        "add_artefact_evidence"
      ]
    },
    "text": {
      "type": "string",
      "description": "Signal text.",
      "minLength": 10,
      "maxLength": 5000
    },
    "items": {
      "type": "array",
      "description": "signal_batch, max 100.",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Signal text; max 5000 chars.",
            "minLength": 10,
            "maxLength": 5000
          },
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "github",
              "webhook"
            ]
          },
          "modality": {
            "type": "string",
            "enum": [
              "Q",
              "O",
              "M"
            ]
          },
          "classification": {
            "type": "string",
            "enum": [
              "problem",
              "idea",
              "question"
            ]
          },
          "client_request_id": {
            "type": "string",
            "description": "Idempotency key; max 200 chars.",
            "minLength": 8,
            "maxLength": 200
          }
        },
        "required": [
          "text",
          "client_request_id"
        ]
      }
    },
    "title": {
      "type": "string",
      "description": "Knowledge or evidence title.",
      "minLength": 1,
      "maxLength": 200
    },
    "content": {
      "type": "string",
      "description": "Knowledge or artefact content.",
      "minLength": 1,
      "maxLength": 100000
    },
    "change_summary": {
      "type": "string",
      "description": "Artefact change summary.",
      "minLength": 1,
      "maxLength": 300
    },
    "source": {
      "type": "string",
      "description": "Signal source. Defaults to manual.",
      "enum": [
        "manual",
        "github",
        "webhook"
      ]
    },
    "modality": {
      "type": "string",
      "description": "Q=Quote, O=Observation, M=Metric. Pipeline infers if omitted.",
      "enum": [
        "Q",
        "O",
        "M"
      ]
    },
    "classification": {
      "type": "string",
      "description": "Signal classification hint.",
      "enum": [
        "problem",
        "idea",
        "question"
      ]
    },
    "note": {
      "type": "string",
      "description": "Why it matters or ingestion context.",
      "maxLength": 500
    },
    "scope_type": {
      "type": "string",
      "description": "Scope kind; company is treated as active workspace.",
      "enum": [
        "company",
        "workspace",
        "node",
        "claim",
        "solution",
        "map"
      ]
    },
    "scope_id": {
      "type": "string",
      "description": "Target scope UUID β€” required when scope_type is node/claim/solution/map.",
      "format": "uuid"
    },
    "claim_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id when scope_type=claim.",
      "format": "uuid"
    },
    "node_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id when scope_type=node.",
      "format": "uuid"
    },
    "solution_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id when scope_type=solution.",
      "format": "uuid"
    },
    "capture_mode": {
      "type": "string",
      "description": "Knowledge routing; default signals_only.",
      "enum": [
        "context_only",
        "signals_only",
        "context_and_signals"
      ]
    },
    "knowledge_kind": {
      "type": "string",
      "enum": [
        "auto",
        "transcript",
        "transcript_customer",
        "notes"
      ]
    },
    "category": {
      "type": "string",
      "description": "knowledge: free-form category label ≀60 chars. Filter via atisbo_lookup mode=knowledge.",
      "minLength": 1,
      "maxLength": 60
    },
    "file_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "mime_type": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "captured_from": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "corrects_prior_evidence": {
      "type": "boolean",
      "description": "signal: CORRECTS prior evidence, not repeats it."
    },
    "attachments": {
      "type": "array",
      "description": "1-5 files; 3 MB combined.",
      "minItems": 1,
      "maxItems": 5,
      "items": {
        "type": "object",
        "description": "PNG/JPG/WebP/PDF; no extraction.",
        "properties": {
          "data_base64": {
            "type": "string",
            "description": "Base64, ≀4200000 chars.",
            "minLength": 4,
            "maxLength": 4200000
          },
          "file_name": {
            "type": "string",
            "description": "Name, ≀200 chars.",
            "minLength": 1,
            "maxLength": 200
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg",
              "image/webp",
              "application/pdf"
            ]
          }
        },
        "required": [
          "data_base64",
          "file_name",
          "mime_type"
        ]
      }
    },
    "document_id": {
      "type": "string",
      "description": "Living document UUID for artefact modes.",
      "format": "uuid"
    },
    "patch_ops": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "op": {
            "type": "string",
            "enum": [
              "append_to_section",
              "replace_section",
              "annotate",
              "add_section"
            ]
          },
          "section_id": {
            "type": "string",
            "description": "Section id, ≀64 chars.",
            "minLength": 1,
            "maxLength": 64
          },
          "markdown": {
            "type": "string",
            "description": "Body, ≀20000 chars.",
            "minLength": 1,
            "maxLength": 20000
          },
          "kind": {
            "type": "string",
            "enum": [
              "note",
              "contradiction",
              "update"
            ]
          }
        },
        "required": [
          "op",
          "section_id",
          "markdown"
        ]
      }
    },
    "coverage_updates": {
      "type": "object",
      "description": "Snippet/idea/claim coverage updates.",
      "properties": {}
    },
    "expected_content_hash": {
      "type": "string",
      "description": "content_hash from doc_patch_context",
      "minLength": 1,
      "maxLength": 64
    },
    "dirty_event_id": {
      "type": "string",
      "description": "Dirty event resolved on success",
      "format": "uuid"
    },
    "agent_name": {
      "type": "string",
      "description": "Signs the change.",
      "minLength": 1,
      "maxLength": 120
    },
    "evidence": {
      "type": "object",
      "description": "Evidence fields; document_id is top-level.",
      "properties": {
        "block_type": {
          "type": "string",
          "description": "Evidence block kind.",
          "enum": [
            "query",
            "metric",
            "external_insight",
            "chart_snapshot",
            "link"
          ]
        },
        "provider": {
          "type": "string",
          "description": "Provider name, e.g. posthog, amplitude, custom_sql.",
          "minLength": 1,
          "maxLength": 80
        },
        "title": {
          "type": "string",
          "description": "Evidence block title.",
          "minLength": 1,
          "maxLength": 200
        },
        "query_text": {
          "type": "string",
          "description": "Query, event name, API request, or investigation prompt.",
          "maxLength": 20000
        },
        "query_language": {
          "type": "string",
          "description": "Language of query_text.",
          "enum": [
            "hogql",
            "sql",
            "api_request",
            "natural_language",
            "event"
          ]
        },
        "external_url": {
          "type": "string",
          "description": "External insight/dashboard/query URL, if available.",
          "maxLength": 2048
        },
        "result_snapshot": {
          "type": "object",
          "description": "Result snapshot; event_name + time_range_days make it refreshable.",
          "properties": {
            "event_name": {
              "type": "string",
              "description": "Provider event/metric name for refreshable metric blocks.",
              "minLength": 1,
              "maxLength": 500
            },
            "time_range_days": {
              "type": "number",
              "description": "Lookback window for refreshable metric blocks. Defaults to 30.",
              "minimum": 1,
              "maximum": 365
            },
            "latest_value": {
              "type": "number",
              "description": "Latest numeric value from the provider, when available."
            },
            "latest_date": {
              "type": "string",
              "description": "Date or timestamp for latest_value.",
              "maxLength": 80
            },
            "data_points": {
              "type": "array",
              "description": "Optional compact time series snapshot.",
              "maxItems": 365,
              "items": {
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "value": {
                    "type": "number"
                  }
                },
                "required": [
                  "date",
                  "value"
                ]
              }
            },
            "summary": {
              "type": "string",
              "description": "Text summary of tabular or non-numeric provider output.",
              "maxLength": 5000
            }
          }
        },
        "interpretation": {
          "type": "string",
          "description": "What this evidence means in the artefact context.",
          "maxLength": 5000
        },
        "status": {
          "type": "string",
          "description": "Relation to the hypothesis.",
          "enum": [
            "supported",
            "contradicted",
            "inconclusive",
            "tracking_missing",
            "informational"
          ]
        },
        "confidence": {
          "type": "number",
          "description": "Confidence from 0 to 1.",
          "minimum": 0,
          "maximum": 1
        },
        "warnings": {
          "type": "array",
          "description": "Provider warnings shown with the block.",
          "maxItems": 20,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "refresh_policy": {
          "type": "string",
          "description": "Refresh cadence for the snapshot.",
          "enum": [
            "manual",
            "scheduled",
            "none"
          ]
        }
      }
    }
  },
  "required": [
    "mode"
  ]
}
πŸ”΄atisbo_decide(solutionId, solution_id, effort, rice_effort, mode, ...)

PM decision facade. CURATE: evidence review/grouping, deal-breakers. EXECUTE: create, update, dispatch or delete Solutions, record Outcomes. DOCUMENT/GOVERN: living docs, coverage, schedules, knowledge, strategy. log_decision is only for external decisions; mutations log themselves. Writes require UUIDs. mode=declare_pm_exception marks a CLAIM as needing a human decision (SEN-180).

Input Schema

{
  "type": "object",
  "properties": {
    "solutionId": {
      "type": "string",
      "description": "Alias for solution_id",
      "format": "uuid"
    },
    "solution_id": {
      "type": "string",
      "description": "Solution UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "effort": {
      "type": "number",
      "description": "Size estimate, person-weeks (0.5-52). Sizing only, never affects order.",
      "minimum": 0.5,
      "maximum": 52
    },
    "rice_effort": {
      "type": "number",
      "description": "Alias for effort.",
      "minimum": 0.5,
      "maximum": 52
    },
    "mode": {
      "type": "string",
      "description": "Resolve names to UUIDs before mutating; notes per mode in meta.guidance.",
      "enum": [
        "triage",
        "rename_claim",
        "delete_claim",
        "combine_claims",
        "reassign_snippet",
        "create_claim_from_snippet",
        "split_snippet",
        "create_solution",
        "create_living_doc",
        "update_solution",
        "dispatch_solution",
        "record_outcome",
        "delete_solution",
        "apply_solution_spec",
        "update_strategy",
        "log_decision",
        "update_artefact_schedule",
        "create_solution_doc",
        "confirm_deal_breaker",
        "reject_deal_breaker",
        "flag_deal_breaker",
        "declare_pm_exception",
        "delete_knowledge",
        "set_knowledge_category",
        "set_claim_review_status",
        "set_snippet_status",
        "check_coverage",
        "mark_reviewed",
        "validate_delivery"
      ]
    },
    "claim_id": {
      "type": "string",
      "description": "Claim UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "claimId": {
      "type": "string",
      "format": "uuid"
    },
    "claim_ids": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "target_id": {
      "type": "string",
      "format": "uuid"
    },
    "id": {
      "type": "string",
      "description": "delete_knowledge / set_knowledge_category: doc id.",
      "format": "uuid"
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "set_knowledge_category: free-form label, ≀60 chars; pass null to clear."
    },
    "target_type": {
      "type": "string",
      "enum": [
        "claim",
        "solution",
        "snippet",
        "tenant",
        "pm_context",
        "node",
        "edge",
        "map",
        "chat_session",
        "context_document",
        "mcp_connection",
        "mcp_server_key",
        "decision_signal",
        "integration",
        "workspace",
        "access_link"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "description": {
      "type": "string",
      "description": "≀2000 chars.",
      "maxLength": 2000
    },
    "effort_estimate": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 52
    },
    "verdict": {
      "type": "string",
      "description": "mode=triage: BOTH values close the claim β€” see guidance.",
      "enum": [
        "real_fixed",
        "noise"
      ]
    },
    "note": {
      "type": "string",
      "description": "record_outcome narrative max 5000; triage/log_decision rationale max 2000.",
      "maxLength": 5000
    },
    "snippet_id": {
      "type": "string",
      "format": "uuid"
    },
    "target_claim_id": {
      "type": "string",
      "description": "Claim UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "force": {
      "type": "boolean",
      "description": "Confirms a source-deleting reassignment; omit = CONFIRMATION_REQUIRED."
    },
    "lifecycle": {
      "type": "string",
      "description": "IDEA, DESIGNING, IN_DEVELOPMENT, or LAUNCHED."
    },
    "snooze_days": {
      "type": "number",
      "maximum": 9007199254740991
    },
    "snooze_clear": {
      "type": "boolean"
    },
    "priority_boost": {
      "type": "number",
      "description": "update_solution: PM multiplier 0.5-5.0 (Backlog lever).",
      "minimum": 0.5,
      "maximum": 5
    },
    "comment": {
      "type": "string",
      "description": "update_solution: thread report as the agent.",
      "minLength": 1,
      "maxLength": 10000
    },
    "agent_name": {
      "type": "string",
      "description": "Signs comments/assignments/decisions. Default \"Agent\".",
      "minLength": 1,
      "maxLength": 120
    },
    "brief": {
      "type": "string",
      "description": "dispatch_solution: agent brief.",
      "maxLength": 20000
    },
    "force_reassign": {
      "type": "boolean",
      "description": "dispatch_solution: audited takeover of an in-progress Solution; omit refuses contested dispatch."
    },
    "assign_to_agent": {
      "type": "boolean",
      "description": "update_solution: take ownership."
    },
    "pm_exception_reason": {
      "type": "string",
      "description": "update_solution / declare_pm_exception: needs a PERSON decision; not ops (use operational_block_reason). ≀1000 chars.",
      "minLength": 1,
      "maxLength": 1000
    },
    "clear_pm_exception": {
      "type": "boolean"
    },
    "discard_reason": {
      "type": "string",
      "description": "update_solution: divergence loser (ADR-224); needs CANCELED.",
      "minLength": 1,
      "maxLength": 500
    },
    "clear_discard": {
      "type": "boolean"
    },
    "chosen_solution_id": {
      "type": "string",
      "description": "update_solution: the winning sibling.",
      "format": "uuid"
    },
    "operational_block_reason": {
      "type": "string",
      "description": "update_solution: operational blocker; not a decision.",
      "minLength": 1,
      "maxLength": 500
    },
    "operational_block_category": {
      "type": "string",
      "enum": [
        "credentials",
        "permissions",
        "budget",
        "provider_capacity",
        "external_dependency"
      ]
    },
    "clear_operational_block": {
      "type": "boolean"
    },
    "criteria_left_out": {
      "type": "array",
      "description": "update_solution: criteria left OUT (ADR-234); only with LAUNCHED.",
      "maxItems": 20,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 500
      }
    },
    "criteria_left_out_reason": {
      "type": "string",
      "description": "Why each criterion is out; required with criteria_left_out. ≀1000 chars.",
      "minLength": 1,
      "maxLength": 1000
    },
    "unassign": {
      "type": "boolean"
    },
    "assign_node_id": {
      "type": "string",
      "description": "update_solution: taxonomy node.",
      "format": "uuid"
    },
    "attach_claim_ids": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "detach_claim_ids": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "pr_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 500
    },
    "refresh_schedule": {
      "type": "string",
      "enum": [
        "none",
        "hourly",
        "daily",
        "weekly",
        "biweekly",
        "monthly"
      ]
    },
    "document_id": {
      "type": "string",
      "format": "uuid"
    },
    "outcome": {
      "type": "string",
      "description": "record_outcome: launch impact.",
      "enum": [
        "success",
        "partial",
        "miss",
        "unexpected"
      ]
    },
    "kpi_before": {
      "type": "string",
      "maxLength": 200
    },
    "kpi_after": {
      "type": "string",
      "maxLength": 200
    },
    "evidence_refs": {
      "type": "array",
      "description": "record_outcome: durable evidence refs.",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 500
      }
    },
    "verification_method": {
      "type": "string",
      "description": "record_outcome: how verified.",
      "minLength": 1,
      "maxLength": 500
    },
    "observed_at": {
      "type": "string",
      "format": "date-time"
    },
    "outcome_confidence": {
      "type": "string",
      "enum": [
        "high",
        "medium",
        "low"
      ]
    },
    "metric_current": {
      "type": "number",
      "description": "record_outcome (automated): fresh metric reading."
    },
    "contradictions_found": {
      "type": "boolean",
      "description": "record_outcome (automated): attest a contradiction sweep."
    },
    "outcome_classification": {
      "type": "string",
      "description": "Alias for outcome.",
      "enum": [
        "success",
        "partial",
        "miss",
        "unexpected"
      ]
    },
    "outcome_notes": {
      "type": "string",
      "description": "Alias for note.",
      "maxLength": 5000
    },
    "spec": {
      "type": "object",
      "properties": {
        "problem": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000
        },
        "evidence": {
          "type": "array",
          "maxItems": 30,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          }
        },
        "proposal": {
          "type": "string",
          "description": "What we will build; distinct from hypothesis.",
          "minLength": 1,
          "maxLength": 5000
        },
        "hypothesis": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000
        },
        "files": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "constraints": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "successCriteria": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000
        },
        "decisionLog": {
          "type": "object",
          "properties": {
            "alternatives": {
              "type": "array",
              "maxItems": 20,
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1000
              }
            },
            "assumptions": {
              "type": "string",
              "maxLength": 3000
            },
            "reasoning": {
              "type": "string",
              "maxLength": 5000
            }
          },
          "required": [
            "alternatives",
            "reasoning"
          ]
        }
      },
      "required": [
        "problem",
        "evidence",
        "hypothesis",
        "successCriteria"
      ]
    },
    "product_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "mission": {
      "type": "string",
      "description": "update_strategy: informational only. ≀2000.",
      "maxLength": 2000
    },
    "strategy": {
      "type": "string",
      "description": "update_strategy: the only functional field.",
      "maxLength": 5000
    },
    "roadmap": {
      "type": "string",
      "description": "update_strategy: informational only. ≀5000.",
      "maxLength": 5000
    },
    "main_features": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 1000
          }
        },
        "required": [
          "name",
          "description"
        ]
      }
    },
    "decision_type": {
      "type": "string",
      "enum": [
        "triage",
        "lifecycle_change",
        "rice_update",
        "outcome_recorded",
        "iteration_branch",
        "create",
        "delete",
        "github_event",
        "rename",
        "note",
        "merge",
        "split",
        "reassign",
        "anchor_change",
        "metric_bound",
        "product_decision",
        "update",
        "favorite_toggle",
        "dismiss",
        "revoke",
        "test",
        "export",
        "link_created",
        "link_revoked",
        "link_accepted",
        "deal_breaker_confirm",
        "deal_breaker_reject",
        "account_assign",
        "account_merge",
        "cluster_recomputed",
        "living_doc_created",
        "living_doc_updated",
        "living_doc_reverted",
        "living_doc_edited",
        "living_doc_content_deleted",
        "living_doc_rewritten",
        "living_doc_opened",
        "artefact_doc_created",
        "artifact_shared",
        "artifact_unshared"
      ]
    },
    "decision": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 1000
      }
    },
    "design_context": {
      "type": "string",
      "maxLength": 8000
    },
    "instruction": {
      "type": "string",
      "maxLength": 2000
    },
    "is_deal_breaker": {
      "type": "boolean",
      "description": "true = flag, false = unflag."
    },
    "updated_at": {
      "type": "string",
      "description": "Optimistic lock; stale edits fail STALE_DATA."
    },
    "node_id": {
      "type": "string",
      "format": "uuid"
    },
    "status": {
      "type": "string",
      "description": "Target classification.",
      "enum": [
        "signal",
        "noise",
        "review"
      ]
    },
    "covered_claims": {
      "type": "array",
      "description": "check_coverage: claim ids this work implements. 50 ids Γ—128 chars.",
      "maxItems": 50,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "covered_ideas": {
      "type": "array",
      "description": "check_coverage: idea ids from the coverage map. 100 ids Γ—128 chars.",
      "maxItems": 100,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "expected_behavior": {
      "type": "array",
      "description": "check_coverage: observable behavior delivered. 50 strings Γ—500 chars.",
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 500
      }
    },
    "out_of_scope": {
      "type": "array",
      "description": "check_coverage: ids intentionally NOT addressed. 100 ids Γ—128 chars.",
      "maxItems": 100,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "risk_notes": {
      "type": "array",
      "description": "check_coverage: unresolved contradictions acknowledged by id. 50 Γ—1000 chars.",
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 1000
      }
    },
    "review_kind": {
      "type": "string",
      "enum": [
        "signal_triage",
        "claim_structure",
        "solution_quality"
      ]
    },
    "matrix": {
      "type": "array",
      "description": "validate_delivery: one entry per success criterion. ≀20 entries.",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "criterion": {
            "type": "string",
            "description": "Success criterion, in the living doc's words where possible. Max 200.",
            "minLength": 1,
            "maxLength": 200
          },
          "status": {
            "type": "string",
            "enum": [
              "preview_verified",
              "production_verified",
              "not_applicable",
              "incomplete",
              "superseded"
            ]
          },
          "evidence": {
            "type": "string",
            "description": "What you did and saw β€” required in spirit for *_verified. Max 500.",
            "maxLength": 500
          },
          "evidence_refs": {
            "type": "array",
            "description": "Durable refs: PR, dashboard, log. Up to 10 of 300 chars.",
            "maxItems": 10,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            }
          },
          "note": {
            "type": "string",
            "description": "Required for an incomplete to be accepted: alternative method, or blocker. Max 500.",
            "maxLength": 500
          }
        },
        "required": [
          "criterion",
          "status"
        ]
      }
    }
  },
  "required": [
    "mode"
  ]
}
πŸ”΄atisbo_map(mode, claim_ids, note, name, description, ...)

Map facade: create/apply maps, generate/edit nodes and edges, anchor claims/snippets, bind metrics, manage claim-snipe maps, regroup (mode=regroup: merge/split). Prefer mode=apply for full MECE categorization. TWO WAYS TO PUT A CLAIM ON A NODE, not interchangeable: mode=anchor sets the TAXONOMY category (claims.auto_node_id, what the Board groups by), refusing non-taxonomy maps; mode=link_claims adds membership in a STRUCTURAL map while the claim keeps its category, refusing taxonomy maps.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "description": "Notes per mode in meta.guidance.",
      "enum": [
        "apply",
        "create",
        "rename",
        "delete",
        "generate_nodes",
        "create_node",
        "update_node",
        "delete_node",
        "anchor",
        "create_edge",
        "delete_edge",
        "metric_bind",
        "metric_update",
        "preview_claim_snipes",
        "sync_claim_snipes",
        "regroup",
        "link_claims"
      ]
    },
    "claim_ids": {
      "type": "array",
      "description": "link_claims: claims to place under node_id.",
      "minItems": 1,
      "maxItems": 200,
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "note": {
      "type": "string",
      "description": "link_claims: why these claims sit under this driver; stored on every link.",
      "maxLength": 500
    },
    "name": {
      "type": "string",
      "description": "Map, node, or metric name depending on mode.",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "description": "Map/node/branch description. ≀2000 chars.",
      "maxLength": 2000
    },
    "map_id": {
      "type": "string",
      "description": "Map UUID.",
      "format": "uuid"
    },
    "node_id": {
      "type": "string",
      "description": "Node UUID.",
      "format": "uuid"
    },
    "parent_id": {
      "type": "string",
      "description": "Parent node UUID.",
      "format": "uuid"
    },
    "new_parent_id": {
      "type": "string",
      "format": "uuid",
      "description": "Move target parent; null promotes to root."
    },
    "level": {
      "type": "number",
      "description": "Node hierarchy depth.",
      "minimum": 1,
      "maximum": 5
    },
    "new_level": {
      "type": "number",
      "description": "New depth after a move.",
      "minimum": 1,
      "maximum": 5
    },
    "template": {
      "type": "string",
      "enum": [
        "taxonomy",
        "metric_tree",
        "goal_tree",
        "opportunity_solution_tree",
        "freeform"
      ]
    },
    "map_type": {
      "type": "string",
      "enum": [
        "taxonomy",
        "kpi_tree",
        "ost",
        "custom"
      ]
    },
    "context_answers": {
      "type": "object",
      "description": "Grounding answers for AI map generation.",
      "properties": {}
    },
    "branches": {
      "type": "array",
      "description": "Branches for apply mode.",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "description": "Branch description. ≀2000 chars.",
            "maxLength": 2000
          },
          "claim_ids": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "claim_id": {
      "type": "string",
      "description": "Claim UUID β€” resolve names with atisbo_lookup mode=resolve first",
      "format": "uuid"
    },
    "snippet_id": {
      "type": "string",
      "format": "uuid"
    },
    "anchors": {
      "type": "array",
      "description": "Batch claim anchors.",
      "minItems": 1,
      "maxItems": 200,
      "items": {
        "type": "object",
        "properties": {
          "claim_id": {
            "type": "string",
            "format": "uuid"
          },
          "node_id": {
            "type": "string",
            "format": "uuid"
          }
        }
      }
    },
    "edge_id": {
      "type": "string",
      "description": "Edge UUID for delete_edge mode.",
      "format": "uuid"
    },
    "source_map_id": {
      "type": "string",
      "format": "uuid"
    },
    "source_node_id": {
      "type": "string",
      "format": "uuid"
    },
    "target_node_id": {
      "type": "string",
      "format": "uuid"
    },
    "edge_type": {
      "type": "string",
      "enum": [
        "causal",
        "sequential",
        "associative"
      ]
    },
    "label": {
      "type": "string",
      "maxLength": 100
    },
    "metric_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "provider": {
      "type": "string",
      "description": "Metric provider: posthog, amplitude, stripe, manual…",
      "minLength": 1
    },
    "event_name": {
      "type": "string",
      "maxLength": 200
    },
    "time_range_days": {
      "type": "number",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "target_value": {
      "type": "number"
    },
    "metric_type": {
      "type": "string",
      "enum": [
        "input",
        "north_star",
        "business_kpi"
      ]
    },
    "binding_id": {
      "type": "string",
      "description": "metric_update: binding to update β€” from atisbo_lookup mode=get (metrics[].id).",
      "format": "uuid"
    },
    "bindingId": {
      "type": "string",
      "description": "Alias for binding_id.",
      "format": "uuid"
    },
    "current_value": {
      "type": "number",
      "description": "metric_update: today's value; same-day re-entry replaces it."
    },
    "currentValue": {
      "type": "number",
      "description": "Alias for current_value."
    },
    "historical_data": {
      "type": "array",
      "description": "metric_update: full series REPLACEMENT. Omit to append current_value instead.",
      "maxItems": 365,
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "value": {
            "type": "number"
          }
        },
        "required": [
          "date",
          "value"
        ]
      }
    },
    "historicalData": {
      "type": "array",
      "description": "Alias for historical_data.",
      "maxItems": 365,
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "value": {
            "type": "number"
          }
        },
        "required": [
          "date",
          "value"
        ]
      }
    },
    "updated_at": {
      "type": "string",
      "description": "metric_update: binding updated_at from your last read; concurrent edits fail STALE_DATA.",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "description": "Alias for updated_at.",
      "format": "date-time"
    },
    "grouping_mode": {
      "type": "string",
      "enum": [
        "classification",
        "mece",
        "tasks",
        "journey",
        "severity",
        "custom"
      ]
    },
    "assignments": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "type": "object",
        "description": "One snippet per L2 branch: snippet_id + branch_key (branch_name derives).",
        "properties": {
          "snippet_id": {
            "type": "string",
            "format": "uuid"
          },
          "snippetId": {
            "type": "string",
            "format": "uuid"
          },
          "branch_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "branchKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "branch_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "branchName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        }
      }
    },
    "branch_options": {
      "type": "array",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "key",
          "label"
        ]
      }
    },
    "direction": {
      "type": "string",
      "description": "regroup: broader merges similar claims, specific splits claims apart.",
      "enum": [
        "broader",
        "specific"
      ]
    },
    "regroup_level": {
      "type": "string",
      "description": "For mode=regroup, direction=broader: how aggressively to merge.",
      "enum": [
        "conservative",
        "moderate",
        "aggressive"
      ]
    },
    "target_threshold": {
      "type": "number",
      "description": "regroup direction=specific: split similarity threshold (0.50–0.98).",
      "minimum": 0.5,
      "maximum": 0.98
    },
    "preview": {
      "type": "boolean",
      "description": "regroup: read-only preview. ALWAYS preview before executing."
    }
  },
  "required": [
    "mode"
  ]
}
πŸ”΄atisbo_connect(mode, connection_id, query, recipe_id, kind, ...)

WHERE Atisbo gets its signals. Modes: list, catalog, create (returns endpoint), configure, pause, resume, sync_now. THE CATALOG IS NOT THE BOUNDARY: almost anything connects β€” push app (composio_catalog), daily-pull app (composio_actions, ~1,000 apps), raw webhook/email. Never answer "Atisbo cannot ingest that" from an empty search; call catalog and read `fallback`. Atisbo only READS a connected system. create returns endpoint + signing secret shown ONCE β€” relay to the human immediately.

Input Schema

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "description": "list/catalog need no ids; others need connection_id or create fields.",
      "enum": [
        "list",
        "catalog",
        "create",
        "configure",
        "pause",
        "resume",
        "sync_now",
        "composio_catalog",
        "composio_actions",
        "composio_create",
        "composio_authorize"
      ]
    },
    "connection_id": {
      "type": "string",
      "description": "Connection id from mode=list; required for configure/pause/resume/sync_now.",
      "format": "uuid"
    },
    "query": {
      "type": "string",
      "description": "mode=catalog only: filter by name, category or description.",
      "maxLength": 100
    },
    "recipe_id": {
      "type": "string",
      "description": "mode=create: catalog recipe id β€” applies its curated mapping.",
      "maxLength": 100
    },
    "kind": {
      "type": "string",
      "description": "mode=create: \"email\" provisions the ingest address; default webhook.",
      "enum": [
        "webhook",
        "email"
      ]
    },
    "label": {
      "type": "string",
      "description": "create/configure: human name for the source, e.g. \"Freshdesk\".",
      "maxLength": 120
    },
    "source_category": {
      "type": "string",
      "description": "mode=create with your own mapping: what the payload carries.",
      "enum": [
        "conversation_message",
        "survey_response",
        "document_revision",
        "transcript_session",
        "operational_event"
      ]
    },
    "json_paths": {
      "type": "object",
      "description": "create/configure: dotted paths into the POSTed payload's JSON body.",
      "properties": {
        "raw_text": {
          "type": "string",
          "description": "REQUIRED: path to the customer's own words, e.g. \"ticket.description\"."
        },
        "source": {
          "type": "string"
        },
        "channel": {
          "type": "string"
        },
        "deep_link_url": {
          "type": "string",
          "description": "Path to a URL opening the item in the origin tool."
        },
        "user_id": {
          "type": "string",
          "description": "Path to who said it β€” enables company attribution."
        },
        "native_object_id": {
          "type": "string"
        },
        "native_revision_id": {
          "type": "string"
        },
        "occurred_at": {
          "type": "string",
          "description": "Path to the timestamp; else ingestion time."
        }
      },
      "required": [
        "raw_text"
      ]
    },
    "rate_limit": {
      "type": "number",
      "description": "create/configure: max requests per minute accepted. Default 100.",
      "maximum": 10000
    },
    "skip_attribution": {
      "type": "boolean",
      "description": "mode=create: true for anonymous public-forum sources with no attributable customer."
    },
    "provider": {
      "type": "string",
      "description": "mode=create: NATIVE provider from catalog native_providers. Pair with config.",
      "maxLength": 40
    },
    "config": {
      "type": "object",
      "description": "mode=create with provider: catalog required_fields. Stored encrypted, never readable again.",
      "properties": {}
    },
    "sync_every": {
      "type": "string",
      "description": "PULL sources only: cadence. Default daily.",
      "enum": [
        "hourly",
        "daily",
        "weekly"
      ]
    },
    "toolkit": {
      "type": "string",
      "description": "composio_actions / composio_create: Composio app slug (e.g. \"freshdesk\", \"jira\").",
      "maxLength": 80
    },
    "trigger_slug": {
      "type": "string",
      "description": "composio_create, INSTANT apps: trigger from composio_catalog.",
      "maxLength": 120
    },
    "pull_tool": {
      "type": "string",
      "description": "composio_create, DAILY apps: read-only action from composio_actions.",
      "maxLength": 120
    },
    "pull_arguments": {
      "type": "object",
      "description": "composio_create with pull_tool: arguments the action needs.",
      "properties": {}
    },
    "collection_path": {
      "type": "string",
      "description": "composio_create with pull_tool: dotted path to the record array, when not inferable.",
      "maxLength": 200
    }
  }
}
🟒atisbo_analyze(subject, mode, domain, time_range, filters, ...)

Broad analytical query over claims, solutions, or activity: time filters, grouping, metrics, ready-to-render chart artifact. Use FIRST for analytical questions spanning entities or time windows; a single-entity drill-down is atisbo_lookup mode=get with the entity id.

Input Schema

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).",
      "enum": [
        "claims",
        "solutions",
        "activity"
      ]
    },
    "mode": {
      "type": "string",
      "description": "Alias for subject.",
      "enum": [
        "claims",
        "solutions",
        "activity"
      ]
    },
    "domain": {
      "type": "string",
      "description": "Free-text product area, resolved to map nodes.",
      "minLength": 2,
      "maxLength": 120
    },
    "time_range": {
      "type": "object",
      "description": "Preset (7d/30d/90d) or explicit from/to ISO dates. Defaults to 30d.",
      "properties": {
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "preset": {
          "type": "string",
          "description": "Relative time window preset.",
          "enum": [
            "7d",
            "30d",
            "90d"
          ]
        }
      }
    },
    "filters": {
      "type": "object",
      "description": "Filters: AND across fields, OR within a field.",
      "properties": {
        "claim_status": {
          "type": "array",
          "description": "Known claim statuses (case-insensitive).",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "lifecycle": {
          "type": "array",
          "description": "Known lifecycle stages (case-insensitive).",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "sources": {
          "type": "array",
          "description": "Transport, not provenance (captures store `manual`); claim/solution aggregates ignore it.",
          "minItems": 1,
          "maxItems": 20,
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "signal_origin": {
          "type": "array",
          "description": "customer | internal | operational β€” separates what `sources` cannot (claim matches if ANY snippet matches).",
          "minItems": 1,
          "maxItems": 3,
          "items": {
            "type": "string",
            "enum": [
              "customer",
              "internal",
              "operational"
            ]
          }
        },
        "node_ids": {
          "type": "array",
          "minItems": 1,
          "maxItems": 20,
          "items": {
            "type": "string",
            "format": "uuid"
          }
        },
        "claim_ids": {
          "type": "array",
          "minItems": 1,
          "maxItems": 50,
          "items": {
            "type": "string",
            "format": "uuid"
          }
        }
      }
    },
    "group_by": {
      "type": "array",
      "description": "Row grouping dimensions (1-2).",
      "minItems": 1,
      "maxItems": 2,
      "items": {
        "type": "string",
        "description": "Row grouping dimension. lifecycle is an alias for status.",
        "enum": [
          "claim",
          "node",
          "day",
          "week",
          "status",
          "source"
        ]
      }
    },
    "metrics": {
      "type": "array",
      "description": "Aggregate metrics per group (1-4).",
      "minItems": 1,
      "maxItems": 4,
      "items": {
        "type": "string",
        "description": "Aggregate metric computed per group.",
        "enum": [
          "claim_count",
          "snippet_count",
          "avg_power_score",
          "decision_count",
          "activity_count",
          "effort_proxy_avg"
        ]
      }
    },
    "analysis": {
      "type": "string",
      "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.",
      "enum": [
        "summary",
        "table",
        "bar",
        "line",
        "scatter"
      ]
    },
    "limit": {
      "type": "number",
      "description": "Max grouped rows (1–50, default 20); over-asks clamp."
    },
    "cursor": {
      "type": "string",
      "description": "From stream.next_cursor β€” pages grouped rows beyond `limit`.",
      "minLength": 1
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "resolved_query": {
          "type": "object",
          "properties": {
            "subject": {
              "type": "string",
              "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).",
              "enum": [
                "claims",
                "solutions",
                "activity"
              ]
            },
            "domain": {
              "type": "string"
            },
            "time_range": {
              "type": "object",
              "properties": {
                "from": {
                  "type": "string"
                },
                "to": {
                  "type": "string"
                },
                "timezone": {
                  "type": "string",
                  "minLength": 1
                },
                "preset": {
                  "type": "string",
                  "enum": [
                    "7d",
                    "30d",
                    "90d",
                    "custom"
                  ]
                }
              },
              "required": [
                "from",
                "to",
                "timezone",
                "preset"
              ]
            },
            "group_by": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Row grouping dimension. lifecycle is an alias for status.",
                "enum": [
                  "claim",
                  "node",
                  "day",
                  "week",
                  "status",
                  "source"
                ]
              }
            },
            "metrics": {
              "type": "array",
              "items": {
                "type": "string",
                "description": "Aggregate metric computed per group.",
                "enum": [
                  "claim_count",
                  "snippet_count",
                  "avg_power_score",
                  "decision_count",
                  "activity_count",
                  "effort_proxy_avg"
                ]
              }
            },
            "analysis": {
              "type": "string",
              "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.",
              "enum": [
                "summary",
                "table",
                "bar",
                "line",
                "scatter"
              ]
            },
            "filters": {
              "type": "object",
              "properties": {
                "claim_status": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "lifecycle": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "node_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "claim_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            },
            "resolved_nodes": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "score": {
                    "type": "number"
                  }
                },
                "required": [
                  "id",
                  "name"
                ]
              }
            }
          },
          "required": [
            "subject",
            "domain",
            "time_range",
            "group_by",
            "metrics",
            "analysis",
            "filters",
            "resolved_nodes"
          ]
        },
        "summary": {
          "type": "string",
          "minLength": 1
        },
        "dataset": {
          "type": "object",
          "properties": {
            "columns": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string",
                "minLength": 1
              }
            },
            "rows": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {}
              }
            },
            "row_count": {
              "type": "number",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "total_rows": {
              "type": "number",
              "minimum": 0,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "columns",
            "rows",
            "row_count"
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "checkpoint": {
              "type": "string"
            },
            "has_more": {
              "type": "boolean"
            },
            "next_cursor": {
              "type": "string"
            }
          },
          "required": [
            "checkpoint",
            "has_more",
            "next_cursor"
          ]
        },
        "chart": {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "enum": [
                "bar",
                "line",
                "scatter"
              ]
            },
            "title": {
              "type": "string",
              "minLength": 1
            },
            "x_key": {
              "type": "string",
              "minLength": 1
            },
            "y_key": {
              "type": "string",
              "minLength": 1
            },
            "series_key": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "kind",
            "title",
            "x_key",
            "y_key"
          ]
        },
        "sources": {
          "type": "object",
          "properties": {
            "views_used": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              }
            },
            "row_count": {
              "type": "number",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "warnings": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "views_used",
            "row_count"
          ]
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "assumptions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "artifact": {
          "type": "object",
          "properties": {
            "artifact_type": {
              "type": "string",
              "enum": [
                "analytics-report"
              ]
            },
            "artifact_data": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "summary": {
                  "type": "string",
                  "minLength": 1
                },
                "resolved_query": {
                  "type": "object",
                  "properties": {
                    "subject": {
                      "type": "string",
                      "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).",
                      "enum": [
                        "claims",
                        "solutions",
                        "activity"
                      ]
                    },
                    "domain": {
                      "type": "string"
                    },
                    "time_range": {
                      "type": "object",
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string",
                          "minLength": 1
                        },
                        "preset": {
                          "type": "string",
                          "enum": [
                            "7d",
                            "30d",
                            "90d",
                            "custom"
                          ]
                        }
                      },
                      "required": [
                        "from",
                        "to",
                        "timezone",
                        "preset"
                      ]
                    },
                    "group_by": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "Row grouping dimension. lifecycle is an alias for status.",
                        "enum": [
                          "claim",
                          "node",
                          "day",
                          "week",
                          "status",
                          "source"
                        ]
                      }
                    },
                    "metrics": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "Aggregate metric computed per group.",
                        "enum": [
                          "claim_count",
                          "snippet_count",
                          "avg_power_score",
                          "decision_count",
                          "activity_count",
                          "effort_proxy_avg"
                        ]
                      }
                    },
                    "analysis": {
                      "type": "string",
                      "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.",
                      "enum": [
                        "summary",
                        "table",
                        "bar",
                        "line",
                        "scatter"
                      ]
                    },
                    "filters": {
                      "type": "object",
                      "properties": {
                        "claim_status": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "lifecycle": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "sources": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "node_ids": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          }
                        },
                        "claim_ids": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1
                          }
                        }
                      }
                    },
                    "resolved_nodes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "minLength": 1
                          },
                          "name": {
                            "type": "string",
                            "minLength": 1
                          },
                          "score": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ]
                      }
                    }
                  },
                  "required": [
                    "subject",
                    "domain",
                    "time_range",
                    "group_by",
                    "metrics",
                    "analysis",
                    "filters",
                    "resolved_nodes"
                  ]
                },
                "dataset": {
                  "type": "object",
                  "properties": {
                    "columns": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "row_count": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "total_rows": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "columns",
                    "rows",
                    "row_count"
                  ]
                },
                "chart": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "bar",
                        "line",
                        "scatter"
                      ]
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1
                    },
                    "x_key": {
                      "type": "string",
                      "minLength": 1
                    },
                    "y_key": {
                      "type": "string",
                      "minLength": 1
                    },
                    "series_key": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": [
                    "kind",
                    "title",
                    "x_key",
                    "y_key"
                  ]
                },
                "sources": {
                  "type": "object",
                  "properties": {
                    "views_used": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "row_count": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "views_used",
                    "row_count"
                  ]
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "assumptions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "title",
                "summary",
                "resolved_query",
                "dataset",
                "sources",
                "warnings",
                "assumptions"
              ]
            }
          },
          "required": [
            "artifact_type",
            "artifact_data"
          ]
        }
      },
      "required": [
        "resolved_query",
        "summary",
        "dataset",
        "sources",
        "warnings",
        "assumptions",
        "artifact"
      ]
    },
    "meta": {
      "type": "object",
      "properties": {
        "contract_version": {
          "type": "string",
          "minLength": 1
        },
        "tenant_plan": {
          "type": "string",
          "enum": [
            "free",
            "pro",
            "enterprise"
          ]
        },
        "workspace_id": {
          "type": "string",
          "minLength": 1
        },
        "workspace_name": {
          "type": "string",
          "minLength": 1
        },
        "persona": {
          "type": "string",
          "minLength": 1
        },
        "scoring_model": {
          "type": "string",
          "minLength": 1
        },
        "gates_applied": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timestamp": {
          "type": "string"
        }
      },
      "required": [
        "contract_version",
        "tenant_plan",
        "workspace_id",
        "workspace_name",
        "persona",
        "scoring_model",
        "gates_applied",
        "timestamp"
      ]
    }
  },
  "required": [
    "data",
    "meta"
  ]
}
🟒atisbo_support(problem, area, observed_error, share_report)

Diagnose Atisbo, including "I connected a source and nothing appeared", "I sent text and no opportunity formed", or "my data is missing". Checks integrations, ingestion, clustering, gates and key scope, then returns a playbook. share_report files only diagnostics + your text. Use atisbo_lookup/atisbo_analyze for backlog.

Input Schema

{
  "type": "object",
  "properties": {
    "problem": {
      "type": "string",
      "description": "What went wrong, in your words. Do NOT paste customer feedback, document bodies or credentials β€” this string IS filed if a report is created.",
      "minLength": 10,
      "maxLength": 2000
    },
    "area": {
      "type": "string",
      "description": "Narrows which checks run. Omit when unsure β€” the full set costs the same round-trip.",
      "enum": [
        "ingestion",
        "integrations",
        "clustering",
        "mcp",
        "workspace",
        "billing",
        "unknown"
      ]
    },
    "observed_error": {
      "type": "string",
      "description": "The failing error string VERBATIM β€” diagnostics cannot see the failed call, so this is often the only evidence.",
      "maxLength": 1000
    },
    "share_report": {
      "type": "boolean",
      "description": "File a verdict-only report when the problem is not caller-side; false = diagnose only."
    }
  },
  "required": [
    "problem"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "outcome": {
          "type": "string",
          "enum": [
            "resolved",
            "answer",
            "known_issue",
            "captured"
          ]
        },
        "headline": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "check": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ok",
                  "warn",
                  "fail",
                  "skipped"
                ]
              },
              "facts": {
                "type": "object",
                "properties": {}
              },
              "detail": {
                "type": "string"
              },
              "playbook": {
                "type": "string"
              }
            },
            "required": [
              "check",
              "status",
              "facts",
              "detail"
            ]
          }
        },
        "next_steps": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "known_issue": {
          "type": "object",
          "properties": {
            "claim_id": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "status": {
              "type": "string"
            },
            "affected_report_count": {
              "type": "number"
            }
          },
          "required": [
            "claim_id",
            "title",
            "status",
            "affected_report_count"
          ]
        },
        "report_id": {
          "type": "string"
        },
        "reported": {
          "type": "boolean"
        }
      },
      "required": [
        "outcome",
        "headline",
        "explanation",
        "findings",
        "next_steps",
        "known_issue",
        "report_id",
        "reported"
      ]
    },
    "meta": {
      "type": "object",
      "properties": {
        "contract_version": {
          "type": "string",
          "minLength": 1
        },
        "tenant_plan": {
          "type": "string",
          "enum": [
            "free",
            "pro",
            "enterprise"
          ]
        },
        "workspace_id": {
          "type": "string",
          "minLength": 1
        },
        "workspace_name": {
          "type": "string",
          "minLength": 1
        },
        "persona": {
          "type": "string",
          "minLength": 1
        },
        "scoring_model": {
          "type": "string",
          "minLength": 1
        },
        "gates_applied": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timestamp": {
          "type": "string"
        }
      },
      "required": [
        "contract_version",
        "tenant_plan",
        "workspace_id",
        "workspace_name",
        "persona",
        "scoring_model",
        "gates_applied",
        "timestamp"
      ]
    }
  },
  "required": [
    "data",
    "meta"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools