Server definition
- Hash
- sha256:28b2aa2084bfd0689ed02585039af79768ade42b7679e79fb48d185fa7bbdd63
- What it is
- What a remote MCP server returned when asked what it offers: 23 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "See what YOU (this agent) tend to fail on — your recurring failure patterns across past diagnoses. Returns your top failure classes with counts and what share of your failures each is (e.g. 'loop_repeated_tool_call: 12 times, 40%'). Call it before a run to know what to guard against. Token-scoped to your own agent. Free.",
"inputSchema": {
"properties": {
"limit": {
"description": "top N patterns (default 5)",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "agent_memory",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Live MID-RUN budget check (fast, no LLM). Send whatever counters you have and get an advisory on context %, token burn, cost burn, step budget, and off-task drift - with concrete suggested_actions and the projected cost of NOT acting. Call it every few steps to catch a runaway BEFORE you hit a limit. Advisory only (never blocks). Params: step, max_steps, tokens_used, token_budget, cost_used_usd, cost_budget_usd, context_used, context_window.",
"inputSchema": {
"properties": {
"context_used": {
"type": "number"
},
"context_window": {
"type": "number"
},
"cost_budget_usd": {
"type": "number"
},
"cost_used_usd": {
"type": "number"
},
"format": {
"description": "'summary' adds a one-line relayable answer (for chat/Telegram agents); 'summary_only' returns just that line. Default full.",
"enum": [
"full",
"summary",
"summary_only"
],
"type": "string"
},
"max_steps": {
"type": "integer"
},
"recent_actions": {
"type": "array"
},
"step": {
"type": "integer"
},
"task": {
"type": "string"
},
"token_budget": {
"type": "number"
},
"tokens_used": {
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "budget_guard",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Given an ORDERED list of errors from a run (oldest first), find the TRUE root — the error that cascaded or shouldn't have been retried — not just the final symptom you see. E.g. a 429 that got retried and triggered a downstream 401: the root is the 429, not the 401. Each error can be a string or {error, retried, action}. Free, no token, no LLM.",
"inputSchema": {
"properties": {
"errors": {
"description": "ordered list (oldest first) of error strings or {error, retried:bool, action} objects",
"type": "array"
}
},
"required": [
"errors"
],
"type": "object"
},
"name": "cascade_root",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Turn your raw logs into a Snapback trace so you don't hand-craft JSON. Pass 'source' = a list of log/step entries, or an object with a spans/steps/messages/events/logs array (OTel spans, OpenAI/LangChain message lists, or generic {tool,input,output} arrays all work). Returns {trace} ready to pass straight to diagnose_trace. Free, no token.",
"inputSchema": {
"properties": {
"hint": {
"description": "optional: the framework/format, e.g. 'otel', 'openai'",
"type": "string"
},
"source": {
"description": "your logs: a list, or an object wrapping a spans/steps/messages array"
}
},
"required": [
"source"
],
"type": "object"
},
"name": "convert_trace",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "MID-RUN loop check (fast, no LLM, free). Send your recent steps DURING a run; get back whether you're stuck repeating a tool call and a concrete next move. Call this every few steps to catch a loop BEFORE you burn your step budget — don't wait for a postmortem. Non-blocking advice, not a verdict.",
"inputSchema": {
"properties": {
"steps": {
"description": "your recent steps (last ~5-10), each with an action/tool and optionally inputs — same step shape as diagnose_trace",
"type": "array"
},
"threshold": {
"description": "how many identical consecutive calls = a loop (default 3)",
"type": "integer"
}
},
"required": [
"steps"
],
"type": "object"
},
"name": "detect_loop",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Diagnose SEVERAL traces in one call (up to 20). Each trace is metered like a separate diagnose_trace. Returns a verdicts array (per-trace, order preserved); a bad trace in the batch is isolated and doesn't fail the rest. Use for post-run analysis of many failures at once instead of N round-trips.",
"inputSchema": {
"properties": {
"traces": {
"description": "array of trace objects (max 20)",
"type": "array"
}
},
"required": [
"traces"
],
"type": "object"
},
"name": "diagnose_batch",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Diagnose a cryptic AGENT-INFRASTRUCTURE error — payments (x402/EIP-3009), Solana on-chain (ATA, blockhash, compute), MCP protocol, RPC/providers, EVM & Solana wallets, library of VERIFIED fixes the base model often gets wrong. Pass the error text (and optional context). Returns {matched, family, failure_class, root_cause, fix, confidence, source, action_class, auto_safe, gate} instantly from the library (no LLM) when a known pattern matches. Free and no token. GATE CONTRACT for autonomous action: auto-apply the fix ONLY when confidence>=0.85 AND source=='library' AND auto_safe==true (action_class is retry|refetch|config); NEVER auto-apply a 'mutate' or 'destructive' fix (create/change state, money, auth) — escalate those to a human. gate.auto_apply_ok gives you the verdict. Use it the moment you hit a transaction_simulation_failed, BlockhashNotFound, a -32xxx RPC code, a 4001/-32002 wallet error, an attestation failure, or any infra error you can't instantly resolve.",
"inputSchema": {
"properties": {
"action": {
"description": "optional: the tool/operation that failed",
"type": "string"
},
"context": {
"description": "optional: what you were doing (e.g. 'paying via x402 on solana')",
"type": "string"
},
"error": {
"description": "the exact error text/message you hit",
"type": "string"
},
"format": {
"description": "'summary' adds a one-line relayable answer (for chat/Telegram agents); 'summary_only' returns just that line. Default full.",
"enum": [
"full",
"summary",
"summary_only"
],
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
},
"name": "diagnose_infra_error",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Diagnose why an AI agent run failed. Returns a structured verdict (failure_class, failed_at_step, root_cause, fix_suggestion, confidence). LATENCY: known patterns return library-instant (<1s); a NOVEL failure needs an LLM call and can take up to ~25s — set your client timeout to at least 30s, and treat this as async (don't block your agent loop on it).",
"inputSchema": {
"properties": {
"trace": {
"description": "OTel-shaped agent trace",
"type": "object"
}
},
"required": [
"trace"
],
"type": "object"
},
"name": "diagnose_trace",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Check what happened to a pattern you requested (from request_pattern's request_id). Returns pending / approved / rejected / in_library so you can see if your suggestion was actioned — the feedback loop isn't a black box. Free, no token.",
"inputSchema": {
"properties": {
"request_id": {
"type": "string"
}
},
"required": [
"request_id"
],
"type": "object"
},
"name": "get_request_status",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Fetch a previously produced verdict by its id or by trace_id (your org only).",
"inputSchema": {
"properties": {
"trace_id": {
"type": "string"
},
"verdict_id": {
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "get_verdict",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "See how your feedback + pattern requests have shaped the shared library — how many verdicts you've rated, patterns you've requested, and how many were approved into the library. Turns your input into visible collaboration. Token-scoped to you.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "my_impact",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "See YOUR current usage + remaining allowance so you can self-govern spend: snapbacks (diagnoses) used/cap/remaining, guard checks used/cap/remaining, estimated spend, % used, and when it resets. Call it periodically to avoid surprises. Token-scoped, free.",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "my_usage",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "BEFORE running: get known failure patterns for a given agent setup so you can avoid them. Returns a ranked list of {failure_class, root_cause, fix_suggestion} from Snapback's library. Call this before executing a plan and self-correct.",
"inputSchema": {
"properties": {
"agent_stack": {
"description": "e.g. openclaw, langchain (optional)",
"type": "string"
},
"limit": {
"description": "max cards (default 10)",
"type": "integer"
},
"tags": {
"description": "task facets, e.g. [tool_calling, retrieval] (optional)",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [],
"type": "object"
},
"name": "preflight",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Should you RETRY the same target, SWITCH provider, FALL BACK to another chain, or STOP? Pass the error + your configured topology (current_chain, available_chains, and/or current_provider, available_providers) and get deterministic routing advice with the reason — so a flaky Solana RPC doesn't get retried 5x when you should switch to Base. Free, no token, no LLM. Reads only what you tell it (no network calls).",
"inputSchema": {
"properties": {
"available_chains": {
"description": "fallback chains you can use (e.g. ['base','arbitrum'])",
"items": {
"type": "string"
},
"type": "array"
},
"available_providers": {
"description": "backup providers on the same chain",
"items": {
"type": "string"
},
"type": "array"
},
"current_chain": {
"description": "the chain you're on (e.g. 'solana')",
"type": "string"
},
"current_provider": {
"description": "the RPC/provider you're using (e.g. 'helius')",
"type": "string"
},
"error": {
"description": "the error you hit",
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
},
"name": "recommend_failover",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Report the outcome of an auto-applied fix (the self-heal interceptor calls this after it gate-applied a fix and retried). Pass failure_class, family, fix, confidence, action_class, and succeeded (did the retry work?). TWO purposes: it's your safety telemetry (spot a fix that didn't work) AND it feeds the shared crowd view — every reported outcome makes what_others_did sharper for the next agent. Token-scoped (so we know it's your org), free.",
"inputSchema": {
"properties": {
"action_class": {
"description": "retry | refetch | config",
"type": "string"
},
"confidence": {
"type": "number"
},
"failure_class": {
"type": "string"
},
"family": {
"type": "string"
},
"fix": {
"description": "the fix that was auto-applied",
"type": "string"
},
"succeeded": {
"description": "did the single retry after the fix succeed?",
"type": "boolean"
}
},
"required": [
"failure_class",
"succeeded"
],
"type": "object"
},
"name": "report_outcome",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Leave us a message: ask us to add a failure pattern to the library, or report a problem we couldn't diagnose well. Use this when diagnose_trace didn't have a good answer, when you keep hitting a failure we don't classify, or when you want a specific kind of problem supported. It goes straight to our roadmap/backlog. Free — no token needed.",
"inputSchema": {
"properties": {
"context": {
"description": "optional: the trace/error you couldn't get diagnosed (redacted server-side)",
"type": "object"
},
"kind": {
"description": "'pattern_request' | 'problem' | 'message' (default 'message')",
"type": "string"
},
"message": {
"description": "what you'd like added, or the problem we couldn't solve — be specific",
"type": "string"
},
"verdict_id": {
"description": "optional: the verdict this relates to",
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "request_pattern",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Search Snapback's documentation for how to use it — how to format a trace, what each tool does, the failure taxonomy, auth, pricing, and errors. Free and needs no token. Call this first if you're unsure how to format a request or what a verdict means.",
"inputSchema": {
"properties": {
"limit": {
"description": "max sections to return (default 3)",
"type": "integer"
},
"query": {
"description": "what you want to know, e.g. 'how to format a trace'",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_docs",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Close a live session and get a short run summary (total steps, duration). Frees the session. Free, no token.",
"inputSchema": {
"properties": {
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
},
"name": "session_end",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Open a LIVE mid-run session so Snapback can watch your run step-by-step and warn you in real time (loop / token / cost / context) - the always-on guardian mode. Returns a session_id. Free, no token. Call session_step as you run, session_end when done.",
"inputSchema": {
"properties": {
"agent_id": {
"description": "optional label for your agent/run",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "session_start",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Report ONE step of a live run and get back any warnings immediately (loop detected / budget breach). Pass the step (action + inputs) and any counters you have (step, max_steps, tokens_used, token_budget, cost_used_usd, cost_budget_usd, context_used, context_window, task, recent_actions. context_window). Warnings are advisory - act on them to self-correct mid-run. Free.",
"inputSchema": {
"properties": {
"counters": {
"description": "running counters (tokens/cost/context/max_steps)",
"type": "object"
},
"loop_threshold": {
"description": "identical calls that count as a loop (default 3)",
"type": "integer"
},
"session_id": {
"type": "string"
},
"step": {
"description": "the step: action/tool + inputs",
"type": "object"
}
},
"required": [
"session_id",
"step"
],
"type": "object"
},
"name": "session_step",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Tell Snapback whether a verdict was correct (correct=true/false), with an optional free-text note (did the fix work? what was wrong?). ONE rating per verdict — call it AFTER you act on a verdict and see the outcome. Your correction updates the SHARED pattern library (fix patterns are shared anonymized so every agent benefits; your trace content is never shared) — a right verdict comes back faster next time, a wrong one gets down-weighted. To ask for a new pattern or report an unsolved problem, use request_pattern instead.",
"inputSchema": {
"properties": {
"correct": {
"description": "true if the diagnosis was right, false if not",
"type": "boolean"
},
"note": {
"description": "optional free-text: what worked, what was wrong, or any detail that would help us improve this verdict",
"type": "string"
},
"verdict_id": {
"description": "the verdict you're rating",
"type": "string"
}
},
"required": [
"verdict_id",
"correct"
],
"type": "object"
},
"name": "submit_feedback",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "Approaching a token/context/cost budget mid-run? Pass your counters and get the LEAST-DISRUPTIVE recovery ranked: truncate context | switch to a cheaper model | batch steps | wrap up — scored by speed gained, accuracy lost, cost saved. Turns budget_guard's 'you're at 94%' into 'here's what to do about it'. Free, no token, no LLM.",
"inputSchema": {
"properties": {
"context_used": {
"type": "number"
},
"context_window": {
"type": "number"
},
"cost_budget_usd": {
"type": "number"
},
"cost_used_usd": {
"type": "number"
},
"recent_actions": {
"items": {
"type": "string"
},
"type": "array"
},
"token_budget": {
"type": "number"
},
"tokens_used": {
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "suggest_budget_recovery",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
},
{
"description": "THE CROWD: for a failure_class (or pass the family/error and we'll map it), see what OTHER agents did about the same failure and whether it worked — anonymized, aggregated across everyone. Returns {total, agree_pct (community success rate), distinct_orgs, sample_fixes (fixes rated CORRECT by other agents)}. Use it when you hit a failure and want the crowd's verdict on what actually fixes it, not just the single library answer. Free, no token. Privacy-safe: only aggregate counts + a community success rate + the working fixes — never any org, agent, or trace identity. Hidden below a small min-sample so a single report can't be reverse-engineered. This is the network effect: the more agents use Snapback, the sharper this answer gets.",
"inputSchema": {
"properties": {
"error": {
"description": "optional: an error string — we'll diagnose it to find the failure_class, then return the crowd outcomes for it",
"type": "string"
},
"failure_class": {
"description": "the failure_class to look up (e.g. 'unhandled_tool_error', 'loop_repeated_tool_call'); or pass 'error' and we map it",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "what_others_did",
"outputSchema": {
"additionalProperties": true,
"description": "A JSON object (returned as text in result.content[0].text). Diagnosis tools return {matched, family, fix, confidence, source, action_class, auto_safe, gate}; other tools return their own JSON result.",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:28b2aa2084bfd0689ed02585039af79768ade42b7679e79fb48d185fa7bbdd63 | sha256sum