Atisbo
MCP tools over one Atisbo workspace: Signals, Opportunities, Backlog, Decisions, Living Documents.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"atisbo": {
"url": "https://app.atisbo.dev/api/mcp"
}
}
}Remote endpoints
https://app.atisbo.dev/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (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.
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
Evidence