Agent skill

Build Error Adapter

by ArcadeAI in ArcadeAI/arcade-mcp

Build new Arcade error adapters from scratch using public Arcade TDK patterns.

MITAuto-check passedAgent Workflows

Install Build Error Adapter

skills CLI
$ npx skills add ArcadeAI/arcade-mcp --skill build-error-adapter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ArcadeAI/arcade-mcp build-error-adapter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ArcadeAI/arcade-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/build-error-adapter .claude/skills/build-error-adapter && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
build-error-adapter
GitHub stars
1k
Token cost
~2k tokens
SKILL.md length
820 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Build new Arcade error adapters from scratch using public Arcade TDK patterns.

  • Works in 5 steps: Create adapter skeleton → Use typed exception matching → Normalize metadata → …
  • Adding provider integrations
  • SKILL.md covers Official Reference, Quick Context, Rules To Follow and Privacy Rule When Uncertain, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Build Error Adapter is an agent skill from ArcadeAI/arcade-mcp. Build new Arcade error adapters from scratch using public Arcade TDK patterns. Use when adding provider integrations, mapping SDK exceptions, or extending HTTP/GraphQL/auth adapter behavior.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers and GraphQL. It works with Model Context Protocol, GraphQL and Python. The repository describes itself as: MCP Server Framework and Tool Development library for building custom capabilities into agents. The licence is MIT.

When your agent uses it

  • Adding provider integrations
  • Mapping SDK exceptions
  • Extending HTTP/GraphQL/auth adapter behavior

Example prompts

  • “/build-error-adapter”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Create adapter skeleton
  2. Use typed exception matching
  3. Normalize metadata
  4. Map status-like semantics consistently
  5. Optional dependency handling

What it can do on your machine

Read from SKILL.md and the folder at commit c5bbe47. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.arcade.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Build Error Adapter loads about 2k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 820 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ArcadeAI/arcade-mcp at commit c5bbe47, republished under its MIT licence (© ArcadeAI). 820 words, ~1,988 tokens.

Download SKILL.mdSave it as .claude/skills/build-error-adapter/SKILL.md (or your agent's skills folder).
name
build-error-adapter
description
Build new Arcade error adapters from scratch using public Arcade TDK patterns. Use when adding provider integrations, mapping SDK exceptions, or extending HTTP/GraphQL/auth adapter behavior.

Build Error Adapter

Use this workflow to create new error adapters that fit Arcade TDK conventions.

Official Reference

Start here and align behavior with this doc:

Quick Context

  • Adapter protocol: arcade_tdk.error_adapters.base.ErrorAdapter
  • Common error classes:
    • arcade_tdk.errors.UpstreamError — upstream responded with an HTTP status code
    • arcade_tdk.errors.UpstreamRateLimitError — 429 / quota-exhausted with retry_after_ms
    • arcade_tdk.errors.NetworkTransportError — no complete response was received (timeouts, connection/DNS/TLS failures, decoding errors, redirect exhaustion). status_code is always None; use one of the NETWORK_TRANSPORT_RUNTIME_* kinds: _TIMEOUT, _UNREACHABLE, _UNMAPPED.
    • arcade_tdk.errors.FatalToolError — unrecoverable tool-authoring bug or environment misconfiguration (invalid URL, unsupported protocol, bad headers, TLS trust failures). Never retried.
    • arcade_tdk.errors.RetryableToolError — transient tool-body failure with a hint for the LLM to retry.
    • arcade_tdk.errors.ContextRequiredToolError — needs human input before retry.

Rules To Follow

  1. Keep imports at top-level only (no inline imports), except optional dependency imports that must be lazy by design.
  2. Adapter interface contract:
    • slug class attribute
    • from_exception(self, exc: Exception) -> ToolRuntimeError | None
  3. Return None when the exception is not recognized for that adapter.
  4. Return a ToolRuntimeError subclass for recognized exceptions (UpstreamError, UpstreamRateLimitError, etc.).
  5. Preserve privacy:
    • Agent-facing message must be safe.
    • Put raw vendor detail into developer_message when needed.
  6. Add tests for every new mapping path.
  7. Match your installed Arcade version's decorator API and parameter names.

Privacy Rule When Uncertain

If you are not fully sure what str(exc), vendor reason, or nested payload fields can contain, treat them as potentially sensitive.

  • Default to a safe agent-facing message template:
    • "Upstream <Service> request failed with status code <code>."
    • "Upstream <Service> error: unhandled <ExceptionType>."
  • Put raw details in developer_message instead of message.
  • Prefer structured non-secret context in message (status code, error class, stable provider error code).
  • Never put tokens, auth headers, full URLs with query params, raw response bodies, or stack traces in agent-facing message.

Use this decision rule:

  1. Known-safe field (documented stable code/reason without sensitive payload): may be included in message.
  2. Unknown or mixed-content field: keep out of message; include only in developer_message.
  3. High-risk content (headers/body/credential-like strings): never include in message; sanitize or omit even in developer_message if policy requires.

When in doubt, prefer slightly less detail in message and richer diagnostics in developer_message.

Decide: Adapter vs explicit tool error

Use an error adapter when:

  • You need repeatable translation from vendor exceptions to Arcade errors.
  • The same exception family appears across multiple tools.

Raise explicit tool errors in tool code when:

  • You need user guidance for immediate retry (RetryableToolError).
  • You need user/orchestrator input before retry (ContextRequiredToolError).
  • You need a special business rule for one endpoint/tool path only.

Implementation Pattern

1) Create adapter skeleton
python
from arcade_core.errors import ToolRuntimeError


class VendorErrorAdapter:
    slug = "_vendor"

    def from_exception(self, exc: Exception) -> ToolRuntimeError | None:
        # recognize typed vendor exceptions
        # return mapped ToolRuntimeError
        return None
2) Use typed exception matching
  • Match most specific subclasses first.
  • Keep a final typed fallback for broad vendor exceptions.
  • Avoid broad except Exception handling inside from_exception.

Example ordering:

  1. Rate limit subtype
  2. Auth subtype
  3. Timeout/transport subtype
  4. General vendor exception fallback
3) Normalize metadata

For adapted errors:

  • Include extra["service"] = self.slug
  • Include extra["error_type"] = type(exc).__name__ for non-status failures
  • Include sanitized endpoint/method when available
Show full SKILL.md (330 more words)Show less
4) Map status-like semantics consistently

Upstream responded with an HTTP status code → UpstreamError:

  • 429 → UpstreamRateLimitError with retry_after_ms
  • 5xx → retryable UpstreamError (status_code >= 500)
  • 4xx → non-retryable UpstreamError

UpstreamError derives retryability from status code, so predictable behavior is automatic.

No complete response from upstream → NetworkTransportError:

Use this class when the exception inherently means the request never reached the upstream, or no complete response came back. status_code is None by design.

Exception kindkind=can_retry=
Timeouts (connect, read, pool)NETWORK_TRANSPORT_RUNTIME_TIMEOUTTrue
Connection refused, DNS, TLS handshake, remote-protocol errorsNETWORK_TRANSPORT_RUNTIME_UNREACHABLETrue
Decoding failures, generic transport fallbackNETWORK_TRANSPORT_RUNTIME_UNMAPPEDTrue
Redirect-loop exhaustionNETWORK_TRANSPORT_RUNTIME_UNMAPPEDFalse

Tool-authoring bugs / local environment misconfiguration → FatalToolError:

Use this class for exceptions that will never succeed on retry — the tool's code or environment needs to change:

  • Invalid URL, unsupported scheme, missing scheme, bad headers, malformed local HTTP protocol state
  • TLS / certificate / trust configuration failures (ssl.SSLError and siblings)

Do not dress these up as UpstreamError — an UpstreamError implies the upstream service actually said "no". Miscategorizing pollutes telemetry and sends the wrong retry signal.

5) Optional dependency handling

For SDK-specific adapters, lazy-import the SDK module inside from_exception if that dependency may be optional.

  • If import fails, log and return None.
  • Do not raise import errors from adapter code paths.

Registration Pattern

For httpx and requests, automatic adaptation is typically available.

For SDK-specific adapters, register explicitly on tools.

python
from arcade_mcp_server import tool
from arcade_tdk.error_adapters import GoogleErrorAdapter

@tool(
    # Depending on Arcade version, this may be `adapters=` or `error_adapters=`.
    adapters=[GoogleErrorAdapter()],
)
def my_tool(...) -> ...:
    ...

If your project uses a different parameter name, follow your installed API docs/signature.

Required Test Matrix

Create or extend tests in your project test suite:

  • recognized typed exception -> expected ToolRuntimeError subclass
  • expected status_code, kind, can_retry
  • expected extra keys (service, error_type, endpoint/method when applicable)
  • unknown exception returns None
  • optional dependency missing path returns None
  • privacy split is verified:
    • message stays safe for uncertain/raw exceptions
    • developer_message carries deep diagnostics

Done Checklist

  • Adapter returns ToolRuntimeError | None
  • Safe agent-facing messages
  • Uncertain exception content defaults to safe templates
  • Typed exception coverage added
  • Tests added/updated and passing
  • Any required package versioning updated for your repo rules
  • No noisy stdout/stderr output in MCP tool runtime paths

© ArcadeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/build-error-adapter of ArcadeAI/arcade-mcp.

Open the folder on GitHubat commit c5bbe47

Compare with similar skills

Build Error Adapter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Build Error Adapter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Build Error Adapter this skillArcadeAI/arcade-mcp1k—~2kAutomated safety check: PassMIT
Unraiddinglebear-ai/unraid135—~5.4kAutomated safety check: NotesMIT
Unraiddinglebear-ai/unraid135—~2.8kAutomated safety check: PassMIT
QA Find Bugs MCPbex-co/beancount-io295—~3kAutomated safety check: PassMIT
Shopifyasgeirtj/system_prompts_leaks69k—~2kAutomated safety check: PassCC0-1.0
MondayLeoYeAI/openclaw-master-skills2.2k—~4.3kAutomated safety check: PassMIT

Similar skills

  • Unraid

    dinglebear-ai/unraid

    This skill should be used when the user mentions Unraid, asks to check server health, monitor array or disk status, list or restart Docker containers, start or stop VMs, read system logs, check…

    135 GitHub stars~5.4k tokensUpdated 4 days ago
    DevOps & CloudAuto-check: notes
  • Unraid

    dinglebear-ai/unraid

    Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network…

    135 GitHub stars~2.8k tokensUpdated 4 days ago
    DevOps & CloudAuto-check passed
  • QA Find Bugs MCP

    bex-co/beancount-io

    Hunt bugs in the Beancount.io remote MCP server by driving the real POST /api-gateway/mcp endpoint with JSON-RPC and real MCP clients, checking transport, discovery, credential boundaries, tool and…

    295 GitHub stars~3k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Shopify

    asgeirtj/system_prompts_leaks

    Set up and operate a Shopify store with Shopify's official MCP server (the installed shopify command, NOT the npm Shopify CLI).

    69k GitHub stars~2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Monday

    LeoYeAI/openclaw-master-skills

    Manage monday.com boards, items, columns, groups, updates, and workflows via MCP server (preferred) and GraphQL API (fallback).

    2.2k GitHub stars~4.3k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Shopify AI Toolkit Wrapper

    jeremylongshore/tons-of-skills-marketplace

    Integrate Shopify's AI Toolkit MCP server with Claude Code for GraphQL validation, Liquid linting, and documentation search.

    2.8k GitHub stars~1.5k tokensUpdated today
    Backend & APIsAuto-check passed

More from ArcadeAI/arcade-mcp

  • Open PR

    ArcadeAI/arcade-mcp

    Prepare arcade-mcp changes for review by verifying intended behavior, filling the repository PR template, and creating or updating the PR.

    1k GitHub stars~2.9k tokensUpdated today
    Auto-check passed

Questions about Build Error Adapter

What does Build Error Adapter do?

Build new Arcade error adapters from scratch using public Arcade TDK patterns. Build Error Adapter is an agent skill from ArcadeAI/arcade-mcp. Build new Arcade error adapters from scratch using public Arcade TDK patterns.

When should I use Build Error Adapter?

Build Error Adapter fits situations like: adding provider integrations; mapping SDK exceptions; extending HTTP/GraphQL/auth adapter behavior.

How do I install Build Error Adapter in Claude Code?

Run `npx skills add ArcadeAI/arcade-mcp --skill build-error-adapter -a claude-code`. Or copy the skill folder (.claude/skills/build-error-adapter in ArcadeAI/arcade-mcp) into .claude/skills/build-error-adapter in your project. Claude Code loads it when a task matches its description.

How do I install Build Error Adapter in Codex?

Run `npx skills add ArcadeAI/arcade-mcp --skill build-error-adapter -a codex`. Or copy the skill folder (.claude/skills/build-error-adapter in ArcadeAI/arcade-mcp) into .agents/skills/build-error-adapter in your project. Codex loads it when a task matches its description.

Can I use Build Error Adapter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ArcadeAI/arcade-mcp --skill build-error-adapter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/build-error-adapter, .gemini/skills/build-error-adapter, .github/skills/build-error-adapter and .opencode/skills/build-error-adapter in your project.

What does Build Error Adapter need to run?

SKILL.md names no scripts, command-line tools or credentials: Build Error Adapter is instructions for the agent only. Our summary lists: Python 3.

Does Build Error Adapter access the network?

SKILL.md names 1 domain. As links in the text: docs.arcade.dev. This is read from the text; nothing was executed.

Is Build Error Adapter safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Build Error Adapter use?

Build Error Adapter is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Build Error Adapter use?

About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Build Error Adapter?

Skills that share tags, products or a category with Build Error Adapter: Unraid (dinglebear-ai/unraid, 135 stars), Unraid (dinglebear-ai/unraid, 135 stars), QA Find Bugs MCP (bex-co/beancount-io, 295 stars) and Shopify (asgeirtj/system_prompts_leaks, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Build Error Adapter?

ArcadeAI (a GitHub organization) maintains it in ArcadeAI/arcade-mcp, which has 1,046 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.

Source: ArcadeAI/arcade-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.