Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted 1 min ago
teppi

Server definition

Hash
sha256:d726434b95ba64fac094809e04b096bfd97aa574118c7605e59fc7c5e3ba431a
What it is
What a remote MCP server returned when asked what it offers: 8 tools

The blob, as servednamed by its sha256

{ "instructions": "Atisbo is one ordered list of what to do next for a product team — evidence comes in, groups into problems, and is ranked by how much there is and how urgent it sounds. Start with atisbo_orient mode=snapshot, read with atisbo_lookup, file evidence with atisbo_capture, and record decisions with atisbo_decide. To find anything about a topic, call atisbo_lookup mode=claims query=\"<topic>\" (add claim_state=open for untouched work, or focus=all for everything); mode=solutions and mode=knowledge take query= too. To pick up work, call atisbo_lookup mode=work_queue view=executable (what you can finish now); view=needs_pm lists everything waiting on a person, one row per ask. Discovery methods answer without a credential; every tools/call requires a workspace-scoped API key from Settings → Account → Connect agents. A mode's usage notes arrive in meta.guidance the first time you use it in a session, and again with any validation error — keep them. Tool schemas are snapshotted when your session starts: modes added after that stay unknown until you restart the session. If a mode you need errors as unknown, don't retry blindly — compare meta.contract_hash from atisbo_orient mode=snapshot against your Mcp-Session-Id and report the gap. If every call to a tool fails with a client-side error like \"Structured content does not match the tool's output schema\", or a value you know is published gets rejected as invalid, your cached tools/list is stale: compare the mcp-registry-revision response header against the value you saw at initialize — if it changed, re-initialize the session and refetch tools/list; if it is unchanged, report the gap.", "tools": [ { "description": "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.", "inputSchema": { "properties": { "analysis": { "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.", "enum": [ "summary", "table", "bar", "line", "scatter" ], "type": "string" }, "cursor": { "description": "From stream.next_cursor — pages grouped rows beyond `limit`.", "type": "string" }, "domain": { "description": "Free-text product area, resolved to map nodes.", "maxLength": 120, "minLength": 2, "type": "string" }, "filters": { "description": "Filters: AND across fields, OR within a field.", "properties": { "claim_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 50, "type": "array" }, "claim_status": { "description": "Known claim statuses (case-insensitive).", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "lifecycle": { "description": "Known lifecycle stages (case-insensitive).", "items": { "type": "string" }, "maxItems": 10, "type": "array" }, "node_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, "signal_origin": { "description": "customer | internal | operational — separates what `sources` cannot (claim matches if ANY snippet matches).", "items": { "enum": [ "customer", "internal", "operational" ], "type": "string" }, "maxItems": 3, "type": "array" }, "sources": { "description": "Transport, not provenance (captures store `manual`); claim/solution aggregates ignore it.", "items": { "type": "string" }, "maxItems": 20, "type": "array" } }, "type": "object" }, "group_by": { "description": "Row grouping dimensions (1-2).", "items": { "description": "Row grouping dimension. lifecycle is an alias for status.", "enum": [ "claim", "node", "day", "week", "status", "source" ], "type": "string" }, "maxItems": 2, "type": "array" }, "limit": { "description": " Max grouped rows; over-asks clamp.", "minimum": 1, "type": "number" }, "metrics": { "description": "Aggregate metrics per group (1-4).", "items": { "description": "Aggregate metric computed per group.", "enum": [ "claim_count", "snippet_count", "avg_power_score", "decision_count", "activity_count", "effort_proxy_avg" ], "type": "string" }, "maxItems": 4, "type": "array" }, "subject": { "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).", "enum": [ "claims", "solutions", "activity" ], "type": "string" }, "time_range": { "description": "Preset (7d/30d/90d) or explicit from/to ISO dates. Defaults to 30d.", "properties": { "from": { "type": "string" }, "preset": { "description": "Relative time window preset.", "enum": [ "7d", "30d", "90d" ], "type": "string" }, "to": { "type": "string" } }, "type": "object" } }, "type": "object" }, "name": "atisbo_analyze", "outputSchema": { "properties": { "data": { "properties": { "artifact": { "properties": { "artifact_data": { "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "chart": { "properties": { "kind": { "enum": [ "bar", "line", "scatter" ], "type": "string" }, "series_key": { "type": "string" }, "title": { "type": "string" }, "x_key": { "type": "string" }, "y_key": { "type": "string" } }, "required": [ "kind", "title", "x_key", "y_key" ], "type": "object" }, "dataset": { "properties": { "columns": { "items": { "type": "string" }, "type": "array" }, "row_count": { "minimum": 0, "type": "number" }, "rows": { "items": { "properties": {}, "type": "object" }, "type": "array" }, "total_rows": { "minimum": 0, "type": "number" } }, "required": [ "columns", "rows", "row_count" ], "type": "object" }, "resolved_query": { "properties": { "analysis": { "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.", "enum": [ "summary", "table", "bar", "line", "scatter" ], "type": "string" }, "domain": { "type": "string" }, "filters": { "properties": { "claim_ids": { "items": { "type": "string" }, "type": "array" }, "claim_status": { "items": { "type": "string" }, "type": "array" }, "lifecycle": { "items": { "type": "string" }, "type": "array" }, "node_ids": { "items": { "type": "string" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "group_by": { "items": { "description": "Row grouping dimension. lifecycle is an alias for status.", "enum": [ "claim", "node", "day", "week", "status", "source" ], "type": "string" }, "type": "array" }, "metrics": { "items": { "description": "Aggregate metric computed per group.", "enum": [ "claim_count", "snippet_count", "avg_power_score", "decision_count", "activity_count", "effort_proxy_avg" ], "type": "string" }, "type": "array" }, "resolved_nodes": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "score": { "type": "number" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "subject": { "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).", "enum": [ "claims", "solutions", "activity" ], "type": "string" }, "time_range": { "properties": { "from": { "type": "string" }, "preset": { "enum": [ "7d", "30d", "90d", "custom" ], "type": "string" }, "timezone": { "type": "string" }, "to": { "type": "string" } }, "required": [ "from", "to", "timezone", "preset" ], "type": "object" } }, "required": [ "subject", "time_range", "group_by", "metrics", "analysis", "filters", "resolved_nodes" ], "type": "object" }, "sources": { "properties": { "row_count": { "minimum": 0, "type": "number" }, "views_used": { "items": { "type": "string" }, "type": "array" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "views_used", "row_count" ], "type": "object" }, "summary": { "type": "string" }, "title": { "type": "string" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "title", "summary", "resolved_query", "dataset", "sources", "warnings", "assumptions" ], "type": "object" }, "artifact_type": { "enum": [ "analytics-report" ], "type": "string" } }, "required": [ "artifact_type", "artifact_data" ], "type": "object" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "chart": { "properties": { "kind": { "enum": [ "bar", "line", "scatter" ], "type": "string" }, "series_key": { "type": "string" }, "title": { "type": "string" }, "x_key": { "type": "string" }, "y_key": { "type": "string" } }, "required": [ "kind", "title", "x_key", "y_key" ], "type": "object" }, "dataset": { "properties": { "columns": { "items": { "type": "string" }, "type": "array" }, "row_count": { "minimum": 0, "type": "number" }, "rows": { "items": { "properties": {}, "type": "object" }, "type": "array" }, "total_rows": { "minimum": 0, "type": "number" } }, "required": [ "columns", "rows", "row_count" ], "type": "object" }, "resolved_query": { "properties": { "analysis": { "description": "summary (prose), table, or chart kind (bar/line/scatter); trend aliases line.", "enum": [ "summary", "table", "bar", "line", "scatter" ], "type": "string" }, "domain": { "type": "string" }, "filters": { "properties": { "claim_ids": { "items": { "type": "string" }, "type": "array" }, "claim_status": { "items": { "type": "string" }, "type": "array" }, "lifecycle": { "items": { "type": "string" }, "type": "array" }, "node_ids": { "items": { "type": "string" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "group_by": { "items": { "description": "Row grouping dimension. lifecycle is an alias for status.", "enum": [ "claim", "node", "day", "week", "status", "source" ], "type": "string" }, "type": "array" }, "metrics": { "items": { "description": "Aggregate metric computed per group.", "enum": [ "claim_count", "snippet_count", "avg_power_score", "decision_count", "activity_count", "effort_proxy_avg" ], "type": "string" }, "type": "array" }, "resolved_nodes": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "score": { "type": "number" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "subject": { "description": "Dataset: claims (opportunities), solutions, or activity (decisions + events).", "enum": [ "claims", "solutions", "activity" ], "type": "string" }, "time_range": { "properties": { "from": { "type": "string" }, "preset": { "enum": [ "7d", "30d", "90d", "custom" ], "type": "string" }, "timezone": { "type": "string" }, "to": { "type": "string" } }, "required": [ "from", "to", "timezone", "preset" ], "type": "object" } }, "required": [ "subject", "time_range", "group_by", "metrics", "analysis", "filters", "resolved_nodes" ], "type": "object" }, "sources": { "properties": { "row_count": { "minimum": 0, "type": "number" }, "views_used": { "items": { "type": "string" }, "type": "array" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "views_used", "row_count" ], "type": "object" }, "stream": { "properties": { "checkpoint": { "type": "string" }, "has_more": { "type": "boolean" }, "next_cursor": { "type": "string" } }, "required": [ "checkpoint", "has_more" ], "type": "object" }, "summary": { "type": "string" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "resolved_query", "summary", "dataset", "sources", "warnings", "assumptions" ], "type": "object" }, "meta": { "properties": { "contract_version": { "type": "string" }, "gates_applied": { "items": { "type": "string" }, "type": "array" }, "persona": { "type": "string" }, "scoring_model": { "type": "string" }, "tenant_plan": { "enum": [ "free", "pro", "enterprise" ], "type": "string" }, "timestamp": { "type": "string" }, "workspace_id": { "type": "string" }, "workspace_name": { "type": "string" } }, "required": [ "tenant_plan", "workspace_id", "workspace_name", "timestamp" ], "type": "object" } }, "required": [ "data", "meta" ], "type": "object" } }, { "description": "Capture Signals or knowledge; update, patch or add evidence to artefacts.", "inputSchema": { "properties": { "agent_name": { "maxLength": 120, "type": "string" }, "attachments": { "description": "1-5 files; 3 MB combined.", "items": { "description": "PNG/JPG/WebP/PDF; no extraction.", "properties": { "data_base64": { "description": "Base64.", "maxLength": 4200000, "minLength": 4, "type": "string" }, "file_name": { "maxLength": 200, "type": "string" }, "mime_type": { "enum": [ "image/png", "image/jpeg", "image/webp", "application/pdf" ], "type": "string" } }, "required": [ "data_base64", "file_name", "mime_type" ], "type": "object" }, "maxItems": 5, "type": "array" }, "body": {}, "capture_mode": { "description": "Knowledge routing.", "enum": [ "context_only", "signals_only", "context_and_signals" ], "type": "string" }, "captured_from": { "maxLength": 120, "type": "string" }, "category": { "description": "knowledge: free-form category label ≤60 chars.", "maxLength": 60, "type": "string" }, "change_summary": { "description": "patch_artefact: REQUIRED top-level change_summary (or note) — one sentence of what changed.", "maxLength": 300, "type": "string" }, "claim_id": { "description": "knowledge: alias for scope_id (scope_type=claim).", "format": "uuid", "type": "string" }, "classification": { "description": "Signal classification hint.", "enum": [ "problem", "idea", "question" ], "type": "string" }, "client_request_id": { "description": "signal: retry key.", "maxLength": 200, "minLength": 8, "type": "string" }, "content": { "description": "Knowledge content.", "maxLength": 100000, "type": "string" }, "corrects_prior_evidence": { "description": "signal: TRUE to CORRECT prior evidence, not repeat it (skips dedup; when/why in meta.guidance).", "type": "boolean" }, "coverage_updates": { "description": "buckets snippets/ideas/claims; snippets[].{snippet_id, status, rationale}" }, "dirty_event_id": { "description": "Dirty event resolved on success", "format": "uuid", "type": "string" }, "document_id": { "description": "Living document UUID (artefact modes).", "format": "uuid", "type": "string" }, "evidence": { "description": "Evidence fields; document_id top-level.", "properties": { "block_type": { "description": "Evidence block kind.", "enum": [ "query", "metric", "external_insight", "chart_snapshot", "link" ], "type": "string" }, "confidence": { "description": "Confidence from 0 to 1.", "maximum": 1, "minimum": 0, "type": "number" }, "external_url": { "description": "External insight/dashboard/query URL, if available.", "maxLength": 2048, "type": "string" }, "interpretation": { "description": "What this evidence means in the artefact context.", "maxLength": 5000, "type": "string" }, "provider": { "description": "Provider name, e.g. posthog, amplitude, custom_sql.", "maxLength": 80, "type": "string" }, "query_language": { "description": "Language of query_text.", "enum": [ "hogql", "sql", "api_request", "natural_language", "event" ], "type": "string" }, "query_text": { "description": "Query, event name, API request, or investigation prompt.", "maxLength": 20000, "type": "string" }, "refresh_policy": { "description": "Refresh cadence for the snapshot.", "enum": [ "manual", "scheduled", "none" ], "type": "string" }, "result_snapshot": { "description": "Result snapshot; event_name + time_range_days make it refreshable.", "properties": { "data_points": { "description": "Optional compact time series snapshot.", "items": { "properties": { "date": { "maxLength": 80, "type": "string" }, "value": { "type": "number" } }, "required": [ "date", "value" ], "type": "object" }, "maxItems": 365, "type": "array" }, "event_name": { "description": "Provider event/metric name for refreshable metric blocks.", "maxLength": 500, "type": "string" }, "latest_date": { "description": "Date or timestamp for latest_value.", "maxLength": 80, "type": "string" }, "latest_value": { "description": "Latest numeric value from the provider, when available.", "type": "number" }, "summary": { "description": "Text summary of tabular or non-numeric provider output.", "maxLength": 5000, "type": "string" }, "time_range_days": { "description": "Lookback window for refreshable metric blocks. Defaults to 30.", "maximum": 365, "minimum": 1, "type": "number" } }, "type": "object" }, "status": { "description": "Relation to the hypothesis.", "enum": [ "supported", "contradicted", "inconclusive", "tracking_missing", "informational" ], "type": "string" }, "title": { "description": "Evidence block title.", "maxLength": 200, "type": "string" }, "warnings": { "description": "Provider warnings shown with the block.", "items": { "maxLength": 500, "type": "string" }, "maxItems": 20, "type": "array" } }, "type": "object" }, "expected_content_hash": { "description": "doc_patch_context content_hash", "maxLength": 64, "type": "string" }, "file_name": { "maxLength": 200, "type": "string" }, "items": { "description": "Batch; max 100 items.", "items": { "properties": { "classification": { "enum": [ "problem", "idea", "question" ], "type": "string" }, "client_request_id": { "description": "Idempotency key.", "maxLength": 200, "minLength": 8, "type": "string" }, "corrects_prior_evidence": { "type": "boolean" }, "modality": { "enum": [ "Q", "O", "M" ], "type": "string" }, "source": { "enum": [ "manual", "github", "webhook" ], "type": "string" }, "text": { "description": "Signal text; max 5000 chars.", "maxLength": 5000, "minLength": 10, "type": "string" } }, "required": [ "text", "client_request_id" ], "type": "object" }, "maxItems": 100, "type": "array" }, "knowledge_kind": { "enum": [ "auto", "transcript", "transcript_customer", "notes" ], "type": "string" }, "message": {}, "mime_type": { "maxLength": 120, "type": "string" }, "modality": { "description": "Q=Quote, O=Observation, M=Metric; inferred if omitted.", "enum": [ "Q", "O", "M" ], "type": "string" }, "mode": { "description": "Capture mode. Notes per mode in meta.guidance.", "enum": [ "signal", "signal_batch", "knowledge", "update_artefact", "patch_artefact", "add_artefact_evidence" ], "type": "string" }, "node_id": { "description": "knowledge: alias for scope_id (scope_type=node).", "format": "uuid", "type": "string" }, "note": { "description": "Why it matters (signal).", "maxLength": 500, "type": "string" }, "ops": {}, "patchOps": {}, "patch_ops": { "items": { "properties": { "kind": { "enum": [ "note", "contradiction", "update" ], "type": "string" }, "markdown": { "maxLength": 20000, "type": "string" }, "op": { "enum": [ "append_to_section", "replace_section", "annotate", "add_section" ], "type": "string" }, "section_id": { "maxLength": 64, "type": "string" } }, "required": [ "op", "section_id", "markdown" ], "type": "object" }, "maxItems": 20, "type": "array" }, "patches": {}, "scope_id": { "description": "Target scope UUID; required for node/claim/solution/map.", "format": "uuid", "type": "string" }, "scope_type": { "description": "Scope kind; company = active workspace.", "enum": [ "company", "workspace", "node", "claim", "solution", "map" ], "type": "string" }, "solution_id": { "description": "knowledge: alias for scope_id (scope_type=solution).", "format": "uuid", "type": "string" }, "source": { "description": "Signal source.", "enum": [ "manual", "github", "webhook" ], "type": "string" }, "text": { "description": "Signal text.", "maxLength": 5000, "minLength": 10, "type": "string" }, "title": { "description": "Knowledge title.", "maxLength": 200, "type": "string" } }, "required": [ "mode" ], "type": "object" }, "name": "atisbo_capture", "outputSchema": { "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "WHERE Atisbo gets its signals. Modes: list, catalog, create (returns endpoint), configure, pause, resume, sync_now, delete (soft-disconnect). THE CATALOG IS NOT THE BOUNDARY: almost anything connects (push app, daily-pull app, raw webhook/email) — call catalog and read `fallback` before ever saying \"Atisbo cannot ingest that\". Atisbo only READS a connected system. create returns endpoint + signing secret shown ONCE — relay to the human immediately.", "inputSchema": { "properties": { "collection_path": { "description": "composio_create with pull_tool: dotted path to the record array if not inferable.", "maxLength": 200, "type": "string" }, "config": { "description": "mode=create with provider: catalog required_fields. Stored encrypted, never readable again.", "properties": {}, "type": "object" }, "connection_id": { "description": "Connection id from mode=list; required for configure/pause/resume/sync_now/delete.", "format": "uuid", "type": "string" }, "json_paths": { "description": "create/configure: dotted paths into the POSTed payload's JSON body.", "properties": { "channel": { "type": "string" }, "deep_link_url": { "description": "Path to a URL opening the item in the origin tool.", "type": "string" }, "native_object_id": { "type": "string" }, "native_revision_id": { "type": "string" }, "occurred_at": { "description": "Path to the timestamp; else ingestion time.", "type": "string" }, "raw_text": { "description": "REQUIRED: path to the customer's own words, e.g. \"ticket.description\".", "type": "string" }, "source": { "type": "string" }, "user_id": { "description": "Path to who said it — enables company attribution.", "type": "string" } }, "required": [ "raw_text" ], "type": "object" }, "kind": { "description": "mode=create: \"email\" provisions the ingest address; default webhook.", "enum": [ "webhook", "email" ], "type": "string" }, "label": { "description": "create/configure: human name for the source, e.g. \"Freshdesk\".", "maxLength": 120, "type": "string" }, "mode": { "description": "list/catalog need no ids; others need connection_id or create fields.", "enum": [ "list", "catalog", "create", "configure", "pause", "resume", "sync_now", "delete", "composio_catalog", "composio_actions", "composio_create", "composio_authorize" ], "type": "string" }, "provider": { "description": "mode=create: NATIVE provider from catalog native_providers. Pair with config.", "maxLength": 40, "type": "string" }, "pull_arguments": { "description": "composio_create with pull_tool: action arguments.", "properties": {}, "type": "object" }, "pull_tool": { "description": "composio_create, DAILY apps: read-only action from composio_actions.", "maxLength": 120, "type": "string" }, "query": { "description": "mode=catalog only: filter by name, category or description.", "maxLength": 100, "type": "string" }, "rate_limit": { "description": "create/configure: max requests per minute accepted. Default 100.", "maximum": 10000, "type": "number" }, "recipe_id": { "description": "mode=create: catalog recipe id — applies its curated mapping.", "maxLength": 100, "type": "string" }, "skip_attribution": { "description": "mode=create: true for anonymous public-forum sources with no attributable customer.", "type": "boolean" }, "source_category": { "description": "mode=create with your own mapping: what the payload carries.", "enum": [ "conversation_message", "survey_response", "document_revision", "transcript_session", "operational_event" ], "type": "string" }, "sync_every": { "description": "PULL sources only: cadence. Default daily.", "enum": [ "hourly", "daily", "weekly" ], "type": "string" }, "toolkit": { "description": "composio_actions / composio_create: Composio app slug (e.g. \"freshdesk\", \"jira\").", "maxLength": 80, "type": "string" }, "trigger_slug": { "description": "composio_create, INSTANT apps: trigger from composio_catalog.", "maxLength": 120, "type": "string" } }, "type": "object" }, "name": "atisbo_connect", "outputSchema": { "properties": { "result": {} }, "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "agent_name": { "description": "Signs comments/assignments/decisions. Default \"Agent\".", "maxLength": 120, "type": "string" }, "alternatives": { "items": { "maxLength": 1000, "type": "string" }, "maxItems": 20, "type": "array" }, "assign_node_id": { "description": "update_solution: taxonomy node.", "format": "uuid", "type": "string" }, "assign_to_agent": { "description": "update_solution: take ownership.", "type": "boolean" }, "attach_claim_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, "brief": { "description": "dispatch_solution: agent brief.", "maxLength": 20000, "type": "string" }, "category": { "description": "label to set; null clears.", "maxLength": 60, "type": "string" }, "chosen_solution_id": { "description": "update_solution: the winning sibling.", "format": "uuid", "type": "string" }, "claim_id": { "description": "Claim UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "claim_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 50, "type": "array" }, "clear_discard": { "type": "boolean" }, "clear_operational_block": { "type": "boolean" }, "clear_pm_exception": { "type": "boolean" }, "comment": { "description": "update_solution: thread report as the agent.", "maxLength": 10000, "type": "string" }, "contradictions_found": { "description": "record_outcome (automated): attest a contradiction sweep.", "type": "boolean" }, "covered_claims": { "description": "check_coverage: claim ids this work implements.", "items": { "maxLength": 128, "type": "string" }, "maxItems": 50, "type": "array" }, "covered_ideas": { "description": "check_coverage: idea ids from the coverage map.", "items": { "maxLength": 128, "type": "string" }, "maxItems": 100, "type": "array" }, "criteria_left_out": { "description": "update_solution: criteria left OUT (ADR-234); only with LAUNCHED.", "items": { "maxLength": 500, "type": "string" }, "maxItems": 20, "type": "array" }, "criteria_left_out_reason": { "description": "Why each criterion is out; required with criteria_left_out.", "maxLength": 1000, "type": "string" }, "decision": { "type": "string" }, "decision_type": { "description": "log_decision: e.g. product_decision, note (full list in the error).", "maxLength": 60, "type": "string" }, "description": { "maxLength": 2000, "type": "string" }, "design_context": { "maxLength": 8000, "type": "string" }, "detach_claim_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 20, "type": "array" }, "discard_reason": { "description": "update_solution: divergence loser (ADR-224); needs CANCELED.", "maxLength": 500, "type": "string" }, "document_id": { "format": "uuid", "type": "string" }, "effort": { "description": "Size estimate, person-weeks. Sizing only, never affects order.", "maximum": 52, "minimum": 0.5, "type": "number" }, "evidence_refs": { "description": "record_outcome: durable evidence refs.", "items": { "maxLength": 500, "type": "string" }, "maxItems": 20, "type": "array" }, "expected_behavior": { "description": "check_coverage: observable behavior delivered.", "items": { "maxLength": 500, "type": "string" }, "maxItems": 50, "type": "array" }, "force": { "description": "Confirms a source-deleting reassignment; omit = CONFIRMATION_REQUIRED.", "type": "boolean" }, "force_reassign": { "description": "dispatch_solution: audited takeover of an in-progress Solution; omit refuses contested dispatch.", "type": "boolean" }, "id": { "description": "delete_knowledge/set_knowledge_category doc id.", "format": "uuid", "type": "string" }, "instruction": { "maxLength": 2000, "type": "string" }, "is_deal_breaker": { "description": "deal_breaker: true = confirm/flag, false = reject/unflag.", "type": "boolean" }, "kpi_after": { "maxLength": 200, "type": "string" }, "kpi_before": { "maxLength": 200, "type": "string" }, "lifecycle": { "description": "IDEA|DESIGNING|IN_DEVELOPMENT; LAUNCHED only via update_solution.", "type": "string" }, "main_features": { "items": { "properties": { "description": { "maxLength": 1000, "type": "string" }, "name": { "maxLength": 200, "type": "string" } }, "required": [ "name", "description" ], "type": "object" }, "type": "array" }, "matrix": { "description": "validate_delivery: one entry per success criterion.", "items": { "properties": { "criterion": { "description": "Success criterion, in the living doc's words where possible.", "maxLength": 200, "type": "string" }, "evidence": { "description": "What you did and saw — required in spirit for *_verified.", "maxLength": 500, "type": "string" }, "evidence_refs": { "description": "Durable refs: PR, dashboard, log.", "items": { "maxLength": 300, "type": "string" }, "maxItems": 10, "type": "array" }, "note": { "description": "Required for an incomplete to be accepted: alternative method, or blocker.", "maxLength": 500, "type": "string" }, "status": { "enum": [ "preview_verified", "production_verified", "not_applicable", "incomplete", "superseded" ], "type": "string" } }, "required": [ "criterion", "status" ], "type": "object" }, "maxItems": 20, "type": "array" }, "metric_current": { "description": "record_outcome (automated): fresh metric reading.", "type": "number" }, "mission": { "description": "update_strategy: informational only. ≤2000.", "maxLength": 2000, "type": "string" }, "mode": { "description": "Resolve names to UUIDs before mutating; notes per mode in meta.guidance.", "enum": [ "triage", "rename_claim", "delete_claim", "combine_claims", "reassign_snippet", "create_claim_from_snippet", "split_snippet", "create_solution", "create_living_doc", "update_solution", "dispatch_solution", "record_outcome", "delete_solution", "apply_solution_spec", "update_strategy", "log_decision", "update_artefact_schedule", "create_solution_doc", "deal_breaker", "declare_pm_exception", "delete_knowledge", "set_knowledge_category", "set_claim_review_status", "set_snippet_status", "check_coverage", "mark_reviewed", "validate_delivery" ], "type": "string" }, "node_id": { "format": "uuid", "type": "string" }, "note": { "description": "record_outcome narrative max 5000; triage/log_decision rationale max 2000.", "maxLength": 5000, "type": "string" }, "observed_at": { "format": "date-time", "type": "string" }, "operational_block_category": { "enum": [ "credentials", "permissions", "budget", "provider_capacity", "external_dependency" ], "type": "string" }, "operational_block_reason": { "description": "update_solution: operational blocker; not a decision.", "maxLength": 500, "type": "string" }, "out_of_scope": { "description": "check_coverage: ids intentionally NOT addressed.", "items": { "maxLength": 128, "type": "string" }, "maxItems": 100, "type": "array" }, "outcome": { "description": "record_outcome: launch impact.", "enum": [ "success", "partial", "miss", "unexpected" ], "type": "string" }, "outcome_confidence": { "enum": [ "high", "medium", "low" ], "type": "string" }, "pm_exception_reason": { "description": "update_solution / declare_pm_exception: needs a PERSON decision; not ops (use operational_block_reason).", "maxLength": 1000, "type": "string" }, "pr_url": { "format": "uri", "maxLength": 500, "type": "string" }, "priority_boost": { "description": "update_solution: PM multiplier over evidence-weighted priority.", "maximum": 5, "minimum": 0.5, "type": "number" }, "product_name": { "maxLength": 200, "type": "string" }, "refresh_schedule": { "enum": [ "none", "hourly", "daily", "weekly", "biweekly", "monthly" ], "type": "string" }, "replace_confirmed": { "description": "validate_delivery: true ONLY to confirm deliberately replacing a longer recorded matrix with a shorter one.", "type": "boolean" }, "review_kind": { "enum": [ "signal_triage", "claim_structure", "solution_quality" ], "type": "string" }, "risk_notes": { "description": "check_coverage: unresolved contradictions acknowledged by id.", "items": { "maxLength": 1000, "type": "string" }, "maxItems": 50, "type": "array" }, "roadmap": { "description": "update_strategy: informational only. ≤5000.", "maxLength": 5000, "type": "string" }, "snippet_id": { "format": "uuid", "type": "string" }, "snooze_clear": { "type": "boolean" }, "snooze_days": { "type": "number" }, "solution_id": { "description": "Solution UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "spec": { "properties": { "constraints": { "items": { "maxLength": 500, "type": "string" }, "maxItems": 50, "type": "array" }, "decisionLog": { "properties": { "alternatives": { "items": { "maxLength": 1000, "type": "string" }, "maxItems": 20, "type": "array" }, "assumptions": { "maxLength": 3000, "type": "string" }, "reasoning": { "maxLength": 5000, "type": "string" } }, "required": [ "alternatives", "reasoning" ], "type": "object" }, "evidence": { "items": { "maxLength": 1000, "type": "string" }, "maxItems": 30, "type": "array" }, "files": { "items": { "maxLength": 500, "type": "string" }, "maxItems": 50, "type": "array" }, "hypothesis": { "maxLength": 5000, "type": "string" }, "problem": { "maxLength": 5000, "type": "string" }, "proposal": { "description": "What we will build; distinct from hypothesis.", "maxLength": 5000, "type": "string" }, "successCriteria": { "description": "What must be TRUE at launch. Template: implementation_context.", "maxLength": 5000, "type": "string" } }, "required": [ "problem", "evidence", "hypothesis", "successCriteria" ], "type": "object" }, "status": { "description": "Target classification.", "enum": [ "signal", "noise", "review" ], "type": "string" }, "strategy": { "description": "update_strategy: the only functional field.", "maxLength": 5000, "type": "string" }, "target_claim_id": { "description": "Claim UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "target_id": { "format": "uuid", "type": "string" }, "target_type": { "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" ], "type": "string" }, "title": { "maxLength": 500, "type": "string" }, "unassign": { "type": "boolean" }, "updated_at": { "description": "Optimistic lock; stale edits fail STALE_DATA.", "type": "string" }, "verdict": { "description": "mode=triage: BOTH values close the claim — see guidance.", "enum": [ "real_fixed", "noise" ], "type": "string" }, "verification_method": { "description": "record_outcome: how verified (max 500 chars).", "maxLength": 500, "type": "string" } }, "required": [ "mode" ], "type": "object" }, "name": "atisbo_decide", "outputSchema": { "properties": { "result": {} }, "type": "object" } }, { "description": "Find or open Atisbo entities. Modes expose snippet text + attachment URLs, queues, outcomes and implementation context.", "inputSchema": { "properties": { "action_cursor": { "description": "work_queue action_queue cursor; restart at page 1 after a mutation.", "type": "string" }, "anchored": { "description": "Claim list anchoring filter.", "enum": [ "any", "anchored", "unanchored" ], "type": "string" }, "category": { "description": "knowledge: exact category filter.", "maxLength": 60, "type": "string" }, "claim_id": { "description": "Claim UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "claim_state": { "description": "Claim state; open=untouched.", "enum": [ "open", "in_progress", "resolved" ], "type": "string" }, "command_id": { "description": "receipts: probe ONE write — the exact key on a listed receipt; omit for your 25 latest.", "maxLength": 200, "type": "string" }, "content_limit": { "type": "number" }, "content_offset": { "type": "number" }, "cursor": { "description": "Pagination cursor from a previous response.", "type": "string" }, "debug_score": { "description": "get claim: PowerScore breakdown.", "type": "boolean" }, "depth": { "description": "summary (alias: brief) = compact fields; work = full context (default).", "enum": [ "summary", "work" ], "type": "string" }, "dirty_event_id": { "description": "doc_patch_context: loads this event's snippets.", "format": "uuid", "type": "string" }, "document_id": { "description": "Living document UUID.", "format": "uuid", "type": "string" }, "entity": { "description": "get: which entity kind the id field carries. Omit — the id field names the entity.", "enum": [ "claim", "solution", "node", "map" ], "type": "string" }, "evidence_limit": { "description": "get entity=claim: evidence rows on page one (1–25); cursor reaches the rest.", "maximum": 25, "minimum": 1, "type": "number" }, "exception_cursor": { "description": "pages pm_exceptions.", "type": "string" }, "focus": { "description": "claims: agent_work | all.", "enum": [ "agent_work", "all" ], "type": "string" }, "include_stale": { "description": "claims: include stale claims.", "type": "boolean" }, "judgement_cursor": { "description": "pages needs_judgement.", "type": "string" }, "lifecycle": { "description": "Solution lifecycle filters.", "items": { "enum": [ "IDEA", "DESIGNING", "IN_DEVELOPMENT", "IN_REVIEW", "LAUNCHED", "CANCELED" ], "type": "string" }, "maxItems": 10, "type": "array" }, "limit": { "description": "Max results (1–200); page with next_cursor.", "maximum": 200, "minimum": 1, "type": "number" }, "map_id": { "description": "Map UUID (mode=get).", "format": "uuid", "type": "string" }, "mode": { "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" ], "type": "string" }, "node_id": { "description": "Node UUID (get; claims/solutions filter).", "format": "uuid", "type": "string" }, "operational_block_cursor": { "description": "work_queue: pages operational_blocks.", "type": "string" }, "query": { "description": "Topic search: claims/solutions/knowledge/context; resolve: name→id.", "maxLength": 500, "minLength": 2, "type": "string" }, "ref": { "description": "open: a handle ref (claim:UUID, snippet://UUID).", "maxLength": 120, "minLength": 3, "type": "string" }, "refs": { "description": "open: several refs (max 10).", "items": { "maxLength": 120, "minLength": 3, "type": "string" }, "maxItems": 10, "type": "array" }, "review_kind": { "description": "unreviewed only (see atisbo_decide mode=mark_reviewed).", "enum": [ "signal_triage", "claim_structure", "solution_quality" ], "type": "string" }, "scope": { "description": "Scope for context / living_doc list.", "enum": [ "company", "node", "claim", "solution", "map" ], "type": "string" }, "scope_id": { "description": "Scope UUID unless scope/scope_type is company/workspace.", "format": "uuid", "type": "string" }, "scope_type": { "description": "Alias of scope (either name works); workspace is treated as company.", "enum": [ "company", "workspace", "node", "claim", "solution", "map" ], "type": "string" }, "solution_id": { "description": "Solution UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "sort_by": { "description": "Solution order (priority = evidence-weighted × boost).", "enum": [ "priority", "created_at", "lifecycle" ], "type": "string" }, "state": { "description": "work tokens (todo=DESIGNING, active=agent-consumable) or post-launch kinds.", "enum": [ "active", "todo", "draft", "in_review", "launched", "monitoring", "needs_review", "came_back", "didnt_work", "partly_worked", "worked", "delivered", "replaced", "canceled" ], "type": "string" }, "status": { "description": "Status filter.", "enum": [ "active", "all", "archived" ], "type": "string" }, "target_id": { "description": "UUID for claim/solution/node/map/doc.", "format": "uuid", "type": "string" }, "type": { "description": "claims: classification.", "enum": [ "problem", "idea", "question", "unclassified" ], "type": "string" }, "types": { "description": "resolve: entity kinds.", "items": { "enum": [ "claim", "solution", "node", "map" ], "type": "string" }, "maxItems": 4, "type": "array" }, "view": { "description": "work_queue: one whole bucket by whose move it is.", "enum": [ "executable", "propose", "needs_pm" ], "type": "string" } }, "required": [ "mode" ], "type": "object" }, "name": "atisbo_lookup", "outputSchema": { "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Map facade: create/apply maps, generate/edit nodes and edges, anchor claims/snippets, bind metrics, manage claim-snipe maps, regroup (merge/split). Prefer mode=apply for full MECE categorization. TWO WAYS TO PUT A CLAIM ON A NODE, not interchangeable: mode=anchor sets the TAXONOMY category (auto_node_id; refuses non-taxonomy maps); mode=link_claims adds STRUCTURAL-map membership (claim keeps its category; refuses taxonomy maps).", "inputSchema": { "properties": { "anchors": { "description": "Batch claim anchors.", "items": { "properties": { "claim_id": { "format": "uuid", "type": "string" }, "node_id": { "format": "uuid", "type": "string" } }, "type": "object" }, "maxItems": 200, "type": "array" }, "assignments": { "items": { "description": "One snippet per L2 branch: snippet_id + branch_key.", "properties": { "branchKey": { "maxLength": 120, "type": "string" }, "branchName": { "maxLength": 200, "type": "string" }, "branch_key": { "maxLength": 120, "type": "string" }, "branch_name": { "maxLength": 200, "type": "string" }, "snippetId": { "format": "uuid", "type": "string" }, "snippet_id": { "format": "uuid", "type": "string" } }, "type": "object" }, "maxItems": 500, "type": "array" }, "binding_id": { "description": "metric_update: binding to update (atisbo_lookup mode=get, metrics[].id).", "format": "uuid", "type": "string" }, "branch_options": { "items": { "properties": { "key": { "maxLength": 120, "type": "string" }, "label": { "maxLength": 200, "type": "string" } }, "required": [ "key", "label" ], "type": "object" }, "maxItems": 20, "type": "array" }, "branches": { "description": "Branches for apply mode.", "items": { "properties": { "claim_ids": { "items": { "format": "uuid", "type": "string" }, "maxItems": 500, "type": "array" }, "description": { "description": "Branch description.", "maxLength": 2000, "type": "string" }, "name": { "maxLength": 200, "type": "string" } }, "required": [ "name" ], "type": "object" }, "maxItems": 50, "type": "array" }, "claim_id": { "description": "Claim UUID — resolve names with atisbo_lookup mode=resolve first", "format": "uuid", "type": "string" }, "claim_ids": { "description": "link_claims: claims to place under node_id.", "items": { "format": "uuid", "type": "string" }, "maxItems": 200, "type": "array" }, "context_answers": { "description": "Grounding answers for AI map generation.", "properties": {}, "type": "object" }, "current_value": { "description": "metric_update: today's value; same-day re-entry replaces it.", "type": "number" }, "description": { "description": "Map/node/branch description.", "maxLength": 2000, "type": "string" }, "direction": { "description": "regroup: broader merges; specific splits.", "enum": [ "broader", "specific" ], "type": "string" }, "edge_id": { "description": "Edge UUID for delete_edge mode.", "format": "uuid", "type": "string" }, "edge_type": { "enum": [ "causal", "sequential", "associative" ], "type": "string" }, "event_name": { "maxLength": 200, "type": "string" }, "grouping_mode": { "enum": [ "classification", "mece", "tasks", "journey", "severity", "custom" ], "type": "string" }, "historical_data": { "description": "metric_update: full series REPLACEMENT (omit to append current_value).", "items": { "properties": { "date": { "type": "string" }, "value": { "type": "number" } }, "required": [ "date", "value" ], "type": "object" }, "maxItems": 365, "type": "array" }, "label": { "maxLength": 100, "type": "string" }, "level": { "description": "Node hierarchy depth.", "maximum": 5, "minimum": 1, "type": "number" }, "map_id": { "description": "Map UUID.", "format": "uuid", "type": "string" }, "map_type": { "enum": [ "taxonomy", "kpi_tree", "ost", "custom" ], "type": "string" }, "metric_name": { "maxLength": 200, "type": "string" }, "metric_type": { "enum": [ "input", "north_star", "business_kpi" ], "type": "string" }, "mode": { "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" ], "type": "string" }, "name": { "description": "Map, node, or metric name.", "maxLength": 200, "type": "string" }, "new_level": { "description": "New depth after a move.", "maximum": 5, "minimum": 1, "type": "number" }, "new_parent_id": { "description": "Move target parent; null promotes to root.", "format": "uuid", "type": "string" }, "node_id": { "description": "Node UUID.", "format": "uuid", "type": "string" }, "note": { "description": "link_claims: rationale stored on every link.", "maxLength": 500, "type": "string" }, "parent_id": { "description": "Parent node UUID.", "format": "uuid", "type": "string" }, "preview": { "description": "regroup: read-only preview — ALWAYS run it first.", "type": "boolean" }, "provider": { "description": "Metric provider: posthog, amplitude, stripe, manual…", "type": "string" }, "regroup_level": { "description": "regroup broader: merge aggressiveness.", "enum": [ "conservative", "moderate", "aggressive" ], "type": "string" }, "snippet_id": { "format": "uuid", "type": "string" }, "source_map_id": { "format": "uuid", "type": "string" }, "source_node_id": { "format": "uuid", "type": "string" }, "target_node_id": { "format": "uuid", "type": "string" }, "target_threshold": { "description": "regroup direction=specific: split threshold.", "maximum": 0.98, "minimum": 0.5, "type": "number" }, "target_value": { "type": "number" }, "template": { "enum": [ "taxonomy", "metric_tree", "goal_tree", "opportunity_solution_tree", "freeform" ], "type": "string" }, "time_range_days": { "type": "number" }, "updated_at": { "description": "metric_update: binding updated_at from your last read (stale edits fail).", "format": "date-time", "type": "string" }, "workspace_wide": { "description": "regroup: explicit YES to run WORKSPACE-WIDE (refused without it).", "type": "boolean" } }, "required": [ "mode" ], "type": "object" }, "name": "atisbo_map", "outputSchema": { "properties": { "result": {} }, "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "cursor": { "description": "Pagination cursor.", "type": "string" }, "depth": { "description": "summary (alias: brief) = compact fields; work = full context (default).", "enum": [ "summary", "work" ], "type": "string" }, "limit": { "description": "Max items. snapshot clamps to 20; whats_new to 50.", "minimum": 1, "type": "number" }, "mode": { "description": "snapshot (alias: workspace) uses task; whats_new uses since_checkpoint; strategy/integrations need no IDs.", "enum": [ "snapshot", "whats_new", "strategy", "integrations" ], "type": "string" }, "since_checkpoint": { "description": "ISO 8601 checkpoint for delta reads.", "type": "string" }, "task": { "description": "triage = untriaged inbox; planning = confirmed opportunities by priority; operations = signals & integrations; executive = KPIs & strategy.", "enum": [ "triage", "planning", "operations", "executive" ], "type": "string" } }, "type": "object" }, "name": "atisbo_orient", "outputSchema": { "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "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.", "inputSchema": { "properties": { "area": { "description": "Narrows which checks run. Omit when unsure — the full set costs the same round-trip.", "enum": [ "ingestion", "integrations", "clustering", "mcp", "workspace", "billing", "unknown" ], "type": "string" }, "observed_error": { "description": "The failing error string VERBATIM — diagnostics cannot see the failed call, so this is often the only evidence.", "maxLength": 1000, "type": "string" }, "problem": { "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.", "maxLength": 2000, "minLength": 10, "type": "string" }, "share_report": { "description": "File a verdict-only report when the problem is not caller-side; false = diagnose only.", "type": "boolean" } }, "required": [ "problem" ], "type": "object" }, "name": "atisbo_support", "outputSchema": { "properties": { "data": { "properties": { "explanation": { "type": "string" }, "findings": { "items": { "properties": { "check": { "type": "string" }, "detail": { "type": "string" }, "facts": { "properties": {}, "type": "object" }, "playbook": { "type": "string" }, "status": { "enum": [ "ok", "warn", "fail", "skipped" ], "type": "string" } }, "required": [ "check", "status", "facts", "detail" ], "type": "object" }, "type": "array" }, "headline": { "type": "string" }, "known_issue": { "properties": { "affected_report_count": { "type": "number" }, "claim_id": { "type": "string" }, "status": { "type": "string" }, "title": { "type": "string" } }, "required": [ "claim_id", "title", "status", "affected_report_count" ], "type": "object" }, "next_steps": { "items": { "type": "string" }, "type": "array" }, "outcome": { "enum": [ "resolved", "answer", "known_issue", "captured" ], "type": "string" }, "report_id": { "type": "string" }, "reported": { "type": "boolean" } }, "required": [ "outcome", "headline", "explanation", "findings", "next_steps", "reported" ], "type": "object" }, "meta": { "properties": { "contract_version": { "type": "string" }, "gates_applied": { "items": { "type": "string" }, "type": "array" }, "persona": { "type": "string" }, "scoring_model": { "type": "string" }, "tenant_plan": { "enum": [ "free", "pro", "enterprise" ], "type": "string" }, "timestamp": { "type": "string" }, "workspace_id": { "type": "string" }, "workspace_name": { "type": "string" } }, "required": [ "tenant_plan", "workspace_id", "workspace_name", "timestamp" ], "type": "object" } }, "required": [ "data", "meta" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:d726434b95ba64fac094809e04b096bfd97aa574118c7605e59fc7c5e3ba431a | sha256sum