Atisbo

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

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
93%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~10,293토큰 (도구 정의)
~15.3 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 8.04%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "atisbo": {
      "url": "https://app.atisbo.dev/api/mcp"
    }
  }
}

원격 엔드포인트

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

할 수 있는 일

도구 목록

도구 (8)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢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.

입력 스키마

{
  "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.",
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "description": "Pagination cursor."
    },
    "since_checkpoint": {
      "type": "string",
      "description": "ISO 8601 checkpoint for delta reads."
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ]
}
🟢atisbo_lookup(mode, entity, ref, refs, query, ...)

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

입력 스키마

{
  "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 — the id field names the entity.",
      "enum": [
        "claim",
        "solution",
        "node",
        "map"
      ]
    },
    "ref": {
      "type": "string",
      "description": "open: a handle ref (claim:UUID, snippet://UUID).",
      "minLength": 3,
      "maxLength": 120
    },
    "refs": {
      "type": "array",
      "description": "open: several refs (max 10).",
      "maxItems": 10,
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 120
      }
    },
    "query": {
      "type": "string",
      "description": "Topic search: claims/solutions/knowledge/context; resolve: name→id.",
      "minLength": 2,
      "maxLength": 500
    },
    "types": {
      "type": "array",
      "description": "resolve: entity kinds.",
      "maxItems": 4,
      "items": {
        "type": "string",
        "enum": [
          "claim",
          "solution",
          "node",
          "map"
        ]
      }
    },
    "target_id": {
      "type": "string",
      "description": "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 (get; claims/solutions filter).",
      "format": "uuid"
    },
    "map_id": {
      "type": "string",
      "description": "Map UUID (mode=get).",
      "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_type": {
      "type": "string",
      "description": "Alias of scope (either name works); workspace is treated as company.",
      "enum": [
        "company",
        "workspace",
        "node",
        "claim",
        "solution",
        "map"
      ]
    },
    "scope_id": {
      "type": "string",
      "description": "Scope UUID unless scope/scope_type is company/workspace.",
      "format": "uuid"
    },
    "status": {
      "type": "string",
      "description": "Status filter.",
      "enum": [
        "active",
        "all",
        "archived"
      ]
    },
    "anchored": {
      "type": "string",
      "description": "Claim list anchoring filter.",
      "enum": [
        "any",
        "anchored",
        "unanchored"
      ]
    },
    "include_stale": {
      "type": "boolean",
      "description": "claims: include stale claims."
    },
    "focus": {
      "type": "string",
      "description": "claims: agent_work | all.",
      "enum": [
        "agent_work",
        "all"
      ]
    },
    "lifecycle": {
      "type": "array",
      "description": "Solution lifecycle filters.",
      "maxItems": 10,
      "items": {
        "type": "string",
        "enum": [
          "IDEA",
          "DESIGNING",
          "IN_DEVELOPMENT",
          "IN_REVIEW",
          "LAUNCHED",
          "CANCELED"
        ]
      }
    },
    "sort_by": {
      "type": "string",
      "description": "Solution 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.",
      "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": "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 claim: PowerScore breakdown."
    },
    "limit": {
      "type": "number",
      "description": "Max results (1–200); page with next_cursor.",
      "minimum": 1,
      "maximum": 200
    },
    "evidence_limit": {
      "type": "number",
      "description": "get entity=claim: evidence rows on page one (1–25); cursor reaches the rest.",
      "minimum": 1,
      "maximum": 25
    },
    "content_offset": {
      "type": "number"
    },
    "content_limit": {
      "type": "number"
    },
    "cursor": {
      "type": "string",
      "description": "Pagination cursor from a previous response."
    },
    "action_cursor": {
      "type": "string",
      "description": "work_queue action_queue cursor; restart at page 1 after a mutation."
    },
    "exception_cursor": {
      "type": "string",
      "description": "pages pm_exceptions."
    },
    "operational_block_cursor": {
      "type": "string",
      "description": "work_queue: pages operational_blocks."
    },
    "judgement_cursor": {
      "type": "string",
      "description": "pages needs_judgement."
    },
    "view": {
      "type": "string",
      "description": "work_queue: one whole bucket by whose move it is.",
      "enum": [
        "executable",
        "propose",
        "needs_pm"
      ]
    },
    "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.",
      "maxLength": 60
    },
    "command_id": {
      "type": "string",
      "description": "receipts: probe ONE write — the exact key on a listed receipt; omit for your 25 latest.",
      "maxLength": 200
    }
  },
  "required": [
    "mode"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ]
}
🔴atisbo_capture(mode, text, body, message, items, ...)

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

입력 스키마

{
  "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
    },
    "body": {},
    "message": {},
    "items": {
      "type": "array",
      "description": "Batch; max 100 items.",
      "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"
            ]
          },
          "corrects_prior_evidence": {
            "type": "boolean"
          },
          "client_request_id": {
            "type": "string",
            "description": "Idempotency key.",
            "minLength": 8,
            "maxLength": 200
          }
        },
        "required": [
          "text",
          "client_request_id"
        ]
      }
    },
    "title": {
      "type": "string",
      "description": "Knowledge title.",
      "maxLength": 200
    },
    "content": {
      "type": "string",
      "description": "Knowledge content.",
      "maxLength": 100000
    },
    "source": {
      "type": "string",
      "description": "Signal source.",
      "enum": [
        "manual",
        "github",
        "webhook"
      ]
    },
    "modality": {
      "type": "string",
      "description": "Q=Quote, O=Observation, M=Metric; inferred if omitted.",
      "enum": [
        "Q",
        "O",
        "M"
      ]
    },
    "classification": {
      "type": "string",
      "description": "Signal classification hint.",
      "enum": [
        "problem",
        "idea",
        "question"
      ]
    },
    "note": {
      "type": "string",
      "description": "Why it matters (signal).",
      "maxLength": 500
    },
    "scope_type": {
      "type": "string",
      "description": "Scope kind; company = active workspace.",
      "enum": [
        "company",
        "workspace",
        "node",
        "claim",
        "solution",
        "map"
      ]
    },
    "scope_id": {
      "type": "string",
      "description": "Target scope UUID; required for node/claim/solution/map.",
      "format": "uuid"
    },
    "claim_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id (scope_type=claim).",
      "format": "uuid"
    },
    "node_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id (scope_type=node).",
      "format": "uuid"
    },
    "solution_id": {
      "type": "string",
      "description": "knowledge: alias for scope_id (scope_type=solution).",
      "format": "uuid"
    },
    "capture_mode": {
      "type": "string",
      "description": "Knowledge routing.",
      "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.",
      "maxLength": 60
    },
    "file_name": {
      "type": "string",
      "maxLength": 200
    },
    "mime_type": {
      "type": "string",
      "maxLength": 120
    },
    "captured_from": {
      "type": "string",
      "maxLength": 120
    },
    "corrects_prior_evidence": {
      "type": "boolean",
      "description": "signal: TRUE to CORRECT prior evidence, not repeat it (skips dedup; when/why in meta.guidance)."
    },
    "client_request_id": {
      "type": "string",
      "description": "signal: retry key.",
      "minLength": 8,
      "maxLength": 200
    },
    "attachments": {
      "type": "array",
      "description": "1-5 files; 3 MB combined.",
      "maxItems": 5,
      "items": {
        "type": "object",
        "description": "PNG/JPG/WebP/PDF; no extraction.",
        "properties": {
          "data_base64": {
            "type": "string",
            "description": "Base64.",
            "minLength": 4,
            "maxLength": 4200000
          },
          "file_name": {
            "type": "string",
            "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 (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",
            "maxLength": 64
          },
          "markdown": {
            "type": "string",
            "maxLength": 20000
          },
          "kind": {
            "type": "string",
            "enum": [
              "note",
              "contradiction",
              "update"
            ]
          }
        },
        "required": [
          "op",
          "section_id",
          "markdown"
        ]
      }
    },
    "ops": {},
    "patchOps": {},
    "patches": {},
    "coverage_updates": {
      "description": "buckets snippets/ideas/claims; snippets[].{snippet_id, status, rationale}"
    },
    "expected_content_hash": {
      "type": "string",
      "description": "doc_patch_context content_hash",
      "maxLength": 64
    },
    "dirty_event_id": {
      "type": "string",
      "description": "Dirty event resolved on success",
      "format": "uuid"
    },
    "change_summary": {
      "type": "string",
      "description": "patch_artefact: REQUIRED top-level change_summary (or note) — one sentence of what changed.",
      "maxLength": 300
    },
    "agent_name": {
      "type": "string",
      "maxLength": 120
    },
    "evidence": {
      "type": "object",
      "description": "Evidence fields; document_id 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.",
          "maxLength": 80
        },
        "title": {
          "type": "string",
          "description": "Evidence block title.",
          "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.",
              "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",
            "maxLength": 500
          }
        },
        "refresh_policy": {
          "type": "string",
          "description": "Refresh cadence for the snapshot.",
          "enum": [
            "manual",
            "scheduled",
            "none"
          ]
        }
      }
    }
  },
  "required": [
    "mode"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  },
  "required": [
    "result"
  ]
}
🔴atisbo_decide(solution_id, effort, mode, claim_id, claim_ids, ...)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "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. Sizing only, never affects order.",
      "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",
        "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"
    },
    "claim_ids": {
      "type": "array",
      "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",
      "maxLength": 60,
      "description": "label to set; null clears."
    },
    "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",
      "maxLength": 500
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "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; LAUNCHED only via update_solution."
    },
    "snooze_days": {
      "type": "number"
    },
    "snooze_clear": {
      "type": "boolean"
    },
    "priority_boost": {
      "type": "number",
      "description": "update_solution: PM multiplier over evidence-weighted priority.",
      "minimum": 0.5,
      "maximum": 5
    },
    "comment": {
      "type": "string",
      "description": "update_solution: thread report as the agent.",
      "maxLength": 10000
    },
    "agent_name": {
      "type": "string",
      "description": "Signs comments/assignments/decisions. Default \"Agent\".",
      "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).",
      "maxLength": 1000
    },
    "clear_pm_exception": {
      "type": "boolean"
    },
    "discard_reason": {
      "type": "string",
      "description": "update_solution: divergence loser (ADR-224); needs CANCELED.",
      "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.",
      "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",
        "maxLength": 500
      }
    },
    "criteria_left_out_reason": {
      "type": "string",
      "description": "Why each criterion is out; required with criteria_left_out.",
      "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.",
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 500
      }
    },
    "verification_method": {
      "type": "string",
      "description": "record_outcome: how verified (max 500 chars).",
      "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."
    },
    "spec": {
      "type": "object",
      "properties": {
        "problem": {
          "type": "string",
          "maxLength": 5000
        },
        "evidence": {
          "type": "array",
          "maxItems": 30,
          "items": {
            "type": "string",
            "maxLength": 1000
          }
        },
        "proposal": {
          "type": "string",
          "description": "What we will build; distinct from hypothesis.",
          "maxLength": 5000
        },
        "hypothesis": {
          "type": "string",
          "maxLength": 5000
        },
        "files": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "string",
            "maxLength": 500
          }
        },
        "constraints": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "string",
            "maxLength": 500
          }
        },
        "successCriteria": {
          "type": "string",
          "description": "What must be TRUE at launch. Template: implementation_context.",
          "maxLength": 5000
        },
        "decisionLog": {
          "type": "object",
          "properties": {
            "alternatives": {
              "type": "array",
              "maxItems": 20,
              "items": {
                "type": "string",
                "maxLength": 1000
              }
            },
            "assumptions": {
              "type": "string",
              "maxLength": 3000
            },
            "reasoning": {
              "type": "string",
              "maxLength": 5000
            }
          },
          "required": [
            "alternatives",
            "reasoning"
          ]
        }
      },
      "required": [
        "problem",
        "evidence",
        "hypothesis",
        "successCriteria"
      ]
    },
    "product_name": {
      "type": "string",
      "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",
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 1000
          }
        },
        "required": [
          "name",
          "description"
        ]
      }
    },
    "decision_type": {
      "type": "string",
      "description": "log_decision: e.g. product_decision, note (full list in the error).",
      "maxLength": 60
    },
    "decision": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "string",
        "maxLength": 1000
      }
    },
    "design_context": {
      "type": "string",
      "maxLength": 8000
    },
    "instruction": {
      "type": "string",
      "maxLength": 2000
    },
    "is_deal_breaker": {
      "type": "boolean",
      "description": "deal_breaker: true = confirm/flag, false = reject/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.",
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 128
      }
    },
    "covered_ideas": {
      "type": "array",
      "description": "check_coverage: idea ids from the coverage map.",
      "maxItems": 100,
      "items": {
        "type": "string",
        "maxLength": 128
      }
    },
    "expected_behavior": {
      "type": "array",
      "description": "check_coverage: observable behavior delivered.",
      "maxItems": 50,
      "items": {
        "type": "string",
        "maxLength": 500
      }
    },
    "out_of_scope": {
      "type": "array",
      "description": "check_coverage: ids intentionally NOT addressed.",
      "maxItems": 100,
      "items": {
        "type": "string",
        "maxLength": 128
      }
    },
    "risk_notes": {
      "type": "array",
      "description": "check_coverage: unresolved contradictions acknowledged by id.",
      "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.",
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "criterion": {
            "type": "string",
            "description": "Success criterion, in the living doc's words where possible.",
            "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.",
            "maxLength": 500
          },
          "evidence_refs": {
            "type": "array",
            "description": "Durable refs: PR, dashboard, log.",
            "maxItems": 10,
            "items": {
              "type": "string",
              "maxLength": 300
            }
          },
          "note": {
            "type": "string",
            "description": "Required for an incomplete to be accepted: alternative method, or blocker.",
            "maxLength": 500
          }
        },
        "required": [
          "criterion",
          "status"
        ]
      }
    },
    "replace_confirmed": {
      "type": "boolean",
      "description": "validate_delivery: true ONLY to confirm deliberately replacing a longer recorded matrix with a shorter one."
    }
  },
  "required": [
    "mode"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  }
}
🔴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 (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 (auto_node_id; refuses non-taxonomy maps); mode=link_claims adds STRUCTURAL-map membership (claim keeps its category; refuses taxonomy maps).

입력 스키마

{
  "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.",
      "maxItems": 200,
      "items": {
        "type": "string",
        "format": "uuid"
      }
    },
    "note": {
      "type": "string",
      "description": "link_claims: rationale stored on every link.",
      "maxLength": 500
    },
    "name": {
      "type": "string",
      "description": "Map, node, or metric name.",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "description": "Map/node/branch description.",
      "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.",
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "description": "Branch description.",
            "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.",
      "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",
      "maxLength": 200
    },
    "provider": {
      "type": "string",
      "description": "Metric provider: posthog, amplitude, stripe, manual…"
    },
    "event_name": {
      "type": "string",
      "maxLength": 200
    },
    "time_range_days": {
      "type": "number"
    },
    "target_value": {
      "type": "number"
    },
    "metric_type": {
      "type": "string",
      "enum": [
        "input",
        "north_star",
        "business_kpi"
      ]
    },
    "binding_id": {
      "type": "string",
      "description": "metric_update: binding to update (atisbo_lookup mode=get, metrics[].id).",
      "format": "uuid"
    },
    "current_value": {
      "type": "number",
      "description": "metric_update: today's value; same-day re-entry replaces it."
    },
    "historical_data": {
      "type": "array",
      "description": "metric_update: full series REPLACEMENT (omit to append current_value).",
      "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 (stale edits fail).",
      "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.",
        "properties": {
          "snippet_id": {
            "type": "string",
            "format": "uuid"
          },
          "snippetId": {
            "type": "string",
            "format": "uuid"
          },
          "branch_key": {
            "type": "string",
            "maxLength": 120
          },
          "branchKey": {
            "type": "string",
            "maxLength": 120
          },
          "branch_name": {
            "type": "string",
            "maxLength": 200
          },
          "branchName": {
            "type": "string",
            "maxLength": 200
          }
        }
      }
    },
    "branch_options": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "maxLength": 120
          },
          "label": {
            "type": "string",
            "maxLength": 200
          }
        },
        "required": [
          "key",
          "label"
        ]
      }
    },
    "direction": {
      "type": "string",
      "description": "regroup: broader merges; specific splits.",
      "enum": [
        "broader",
        "specific"
      ]
    },
    "regroup_level": {
      "type": "string",
      "description": "regroup broader: merge aggressiveness.",
      "enum": [
        "conservative",
        "moderate",
        "aggressive"
      ]
    },
    "target_threshold": {
      "type": "number",
      "description": "regroup direction=specific: split threshold.",
      "minimum": 0.5,
      "maximum": 0.98
    },
    "preview": {
      "type": "boolean",
      "description": "regroup: read-only preview — ALWAYS run it first."
    },
    "workspace_wide": {
      "type": "boolean",
      "description": "regroup: explicit YES to run WORKSPACE-WIDE (refused without it)."
    }
  },
  "required": [
    "mode"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  }
}
🔴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, delete (soft-disconnect). THE CATALOG IS NOT THE BOUNDARY: almost anything connects (push app, daily-pull app, raw webhook/email) — call catalog and read `fallback` before ever saying "Atisbo cannot ingest that". Atisbo only READS a connected system. create returns endpoint + signing secret shown ONCE — relay to the human immediately.

입력 스키마

{
  "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",
        "delete",
        "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/delete.",
      "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: action arguments.",
      "properties": {}
    },
    "collection_path": {
      "type": "string",
      "description": "composio_create with pull_tool: dotted path to the record array if not inferable.",
      "maxLength": 200
    }
  }
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {}
  }
}
🟢atisbo_analyze(subject, domain, time_range, filters, group_by, ...)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).",
      "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).",
          "maxItems": 10,
          "items": {
            "type": "string"
          }
        },
        "lifecycle": {
          "type": "array",
          "description": "Known lifecycle stages (case-insensitive).",
          "maxItems": 10,
          "items": {
            "type": "string"
          }
        },
        "sources": {
          "type": "array",
          "description": "Transport, not provenance (captures store `manual`); claim/solution aggregates ignore it.",
          "maxItems": 20,
          "items": {
            "type": "string"
          }
        },
        "signal_origin": {
          "type": "array",
          "description": "customer | internal | operational — separates what `sources` cannot (claim matches if ANY snippet matches).",
          "maxItems": 3,
          "items": {
            "type": "string",
            "enum": [
              "customer",
              "internal",
              "operational"
            ]
          }
        },
        "node_ids": {
          "type": "array",
          "maxItems": 20,
          "items": {
            "type": "string",
            "format": "uuid"
          }
        },
        "claim_ids": {
          "type": "array",
          "maxItems": 50,
          "items": {
            "type": "string",
            "format": "uuid"
          }
        }
      }
    },
    "group_by": {
      "type": "array",
      "description": "Row grouping dimensions (1-2).",
      "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).",
      "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; over-asks clamp.",
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "description": "From stream.next_cursor — pages grouped rows beyond `limit`."
    }
  }
}

출력 스키마

{
  "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"
                },
                "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"
                  }
                },
                "lifecycle": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "node_ids": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "claim_ids": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "resolved_nodes": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "score": {
                    "type": "number"
                  }
                },
                "required": [
                  "id",
                  "name"
                ]
              }
            }
          },
          "required": [
            "subject",
            "time_range",
            "group_by",
            "metrics",
            "analysis",
            "filters",
            "resolved_nodes"
          ]
        },
        "summary": {
          "type": "string"
        },
        "dataset": {
          "type": "object",
          "properties": {
            "columns": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "rows": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {}
              }
            },
            "row_count": {
              "type": "number",
              "minimum": 0
            },
            "total_rows": {
              "type": "number",
              "minimum": 0
            }
          },
          "required": [
            "columns",
            "rows",
            "row_count"
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "checkpoint": {
              "type": "string"
            },
            "has_more": {
              "type": "boolean"
            },
            "next_cursor": {
              "type": "string"
            }
          },
          "required": [
            "checkpoint",
            "has_more"
          ]
        },
        "chart": {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "enum": [
                "bar",
                "line",
                "scatter"
              ]
            },
            "title": {
              "type": "string"
            },
            "x_key": {
              "type": "string"
            },
            "y_key": {
              "type": "string"
            },
            "series_key": {
              "type": "string"
            }
          },
          "required": [
            "kind",
            "title",
            "x_key",
            "y_key"
          ]
        },
        "sources": {
          "type": "object",
          "properties": {
            "views_used": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "row_count": {
              "type": "number",
              "minimum": 0
            },
            "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"
                },
                "summary": {
                  "type": "string"
                },
                "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"
                        },
                        "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"
                          }
                        },
                        "lifecycle": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "sources": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "node_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "claim_ids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "resolved_nodes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "score": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ]
                      }
                    }
                  },
                  "required": [
                    "subject",
                    "time_range",
                    "group_by",
                    "metrics",
                    "analysis",
                    "filters",
                    "resolved_nodes"
                  ]
                },
                "dataset": {
                  "type": "object",
                  "properties": {
                    "columns": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "row_count": {
                      "type": "number",
                      "minimum": 0
                    },
                    "total_rows": {
                      "type": "number",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "columns",
                    "rows",
                    "row_count"
                  ]
                },
                "chart": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "bar",
                        "line",
                        "scatter"
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "x_key": {
                      "type": "string"
                    },
                    "y_key": {
                      "type": "string"
                    },
                    "series_key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "title",
                    "x_key",
                    "y_key"
                  ]
                },
                "sources": {
                  "type": "object",
                  "properties": {
                    "views_used": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "row_count": {
                      "type": "number",
                      "minimum": 0
                    },
                    "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"
      ]
    },
    "meta": {
      "type": "object",
      "properties": {
        "contract_version": {
          "type": "string"
        },
        "tenant_plan": {
          "type": "string",
          "enum": [
            "free",
            "pro",
            "enterprise"
          ]
        },
        "workspace_id": {
          "type": "string"
        },
        "workspace_name": {
          "type": "string"
        },
        "persona": {
          "type": "string"
        },
        "scoring_model": {
          "type": "string"
        },
        "gates_applied": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timestamp": {
          "type": "string"
        }
      },
      "required": [
        "tenant_plan",
        "workspace_id",
        "workspace_name",
        "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.

입력 스키마

{
  "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"
  ]
}

출력 스키마

{
  "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",
        "reported"
      ]
    },
    "meta": {
      "type": "object",
      "properties": {
        "contract_version": {
          "type": "string"
        },
        "tenant_plan": {
          "type": "string",
          "enum": [
            "free",
            "pro",
            "enterprise"
          ]
        },
        "workspace_id": {
          "type": "string"
        },
        "workspace_name": {
          "type": "string"
        },
        "persona": {
          "type": "string"
        },
        "scoring_model": {
          "type": "string"
        },
        "gates_applied": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timestamp": {
          "type": "string"
        }
      },
      "required": [
        "tenant_plan",
        "workspace_id",
        "workspace_name",
        "timestamp"
      ]
    }
  },
  "required": [
    "data",
    "meta"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 8개
검증됨버전이 기록되지 않음도구 8개
검증됨버전이 기록되지 않음도구 8개