Atisbo
MCP tools over one Atisbo workspace: Signals, Opportunities, Backlog, Decisions, Living Documents.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"atisbo": {
"url": "https://app.atisbo.dev/api/mcp"
}
}
}Puntos de conexión remotos
https://app.atisbo.dev/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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
}
}
}Esquema de salida
{
"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.
Esquema de entrada
{
"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"
]
}Esquema de salida
{
"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"
]
}Comunidad
Evidencia