Communityv8.1.11

Danube

Governed tool access for AI agents — one Danube API key unlocks your organization's own tools plus a large, growing catalog of services, over MCP or curl, with confirmation before anything that writes, sends, spends, or deletes.

4.5kdownloads2starsDanube
View on ClawHubBack to Skills

Skill Details

Slug
danube
Latest Version
8.1.11
Author
Danube
Published
Feb 2, 2026
Updated
Sep 9, 2026
Total Versions
30

How to Install

  1. 1 on OpenClawdBots (takes under 60 seconds).
  2. 2Open your bot dashboard and go to the Skills tab.
  3. 3Switch to the ClawHub tab and search for Danube.
  4. 4Click Install and the skill is deployed to your bot automatically.

Changelog — v8.1.11

Catches the skill up with a week of search and execution changes an agent can see: search results now say whether a tool is deprecated, name it by slug, and pin an exact name first; a catalog row pointing at a vanished upstream tool now has an error type of its own; and a `401` from a tool that carries no credential no longer means what the skill said it meant. - **Search results carry deprecation, and the skill never mentioned it.** Since #709 (2026-09-08) every result stamps `deprecated`, `deprecation_message` and `sunset_date` — the MCP `Tool` model declares all three, and a live `search_tools` call this cycle returned them on every row. The distinction matters in both directions: a deprecated tool with an absent or future sunset date is still listed and still runs, and its message usually names the replacement, so it is advance warning rather than breakage; once the date has passed the tool is dropped from search and `execute_tool` refuses it before calling anything ("… was deprecated and passed its sunset date (DATE): … No call was made."). An agent that reads neither field either abandons a working tool or holds an id that can only fail. Documented in `SKILL.md`, and as its own row in both references — keyed on the message text, because the accompanying `error_type: "TOOL_SUNSET"` is a REST-only field: the MCP layer lifts `error_type` into `_meta` for `auth_required` and `upstream_tool_missing` only, so an MCP caller testing for it would find nothing. - **An exact name is now pinned first, and every result carries a `slug`.** Before #707 an exact tool name did not necessarily rank first — "Stripe - Retrieve Balance" came third behind two other services' balance tools — and `slug` came back `null` on every row although all 12,282 tools had one. Both are fixed: a name-or-slug match is pinned ahead of the readiness and reliability re-orderings, so searching an exact name puts that tool at `results[0]`, and the slug (`stripe-api-read`, confirmed live) is accepted anywhere a tool id is. The skill now says to use the slug when showing the user what is about to run — while keeping the existing rule to resolve tools by searching rather than replaying an identifier from memory. - **`limit` on `GET /v1/tools/search` was ignored until #707; the curl reference had never mentioned it, or `ready_only`, or `min_success_rate`.** All three are documented now, with the ordering that matters: `limit` (1–100) is applied last, after the filters, so `ready_only` and `min_success_rate` never eat into the page — with the caveat that the candidate pool is ~30 before filtering, so a larger `limit` can still come back short. `num_results` is noted as the older SDK alias that `limit` overrides. - **A tool whose MCP server dropped it has its own error type.** `error_type: "upstream_tool_missing"` with `retryable: false`, `upstream_tool` and `available_tools` means the catalog row points at a tool the upstream no longer offers — Danube's drift, not the caller's mistake and not a provider outage. Worth documenting precisely because most drift never surfaces: the engine first re-reads the server's tool list and, when the tool was merely renamed, re-runs the call under the new name and returns the real result. So the error is the genuinely-gone case, it files its own report, and neither a retry nor a `report_tool` helps. Documented as a body shape rather than an HTTP status: the engine's internal `status_code: 502` never reaches a caller — `POST /tools/call/{id}` raises a real status only for `upgrade_required` (402) and `tool_disabled` (503), so this one answers `200` with `status: "error"`. For the same reason the internal envelope's `catalog_repaired` marker is deliberately *not* documented — it is set in `execution/main.py` but never copied onto the response model, so no caller can see it. - **A `401` from a tool that carries no credential is not about your credentials.** #677 changed the message: where a tool's row declares no security scheme Danube calls the provider anonymously, so the old "your credentials may be invalid or expired, please reconnect" was false — there was no credential in play. The new text names the two real possibilities (the operation needs a key, or the tool's schema is missing its security scheme so the connected credential never gets attached), and the troubleshooting table now carries both, with the note that some providers serve part of an endpoint anonymously and refuse the rest. A dogfooding agent filed a `broken` report against the executor on the strength of the old wording. - **A projection path may now continue into a string that carries JSON.** MCP-backed tools routinely return their payload as text inside a string, and until #687 a path written through one matched nothing. It is now resolved against the JSON the string carries — plain JSON-as-text, or JSON inside Supabase MCP's `<untrusted-data-…>` fence — and the fragment comes back parsed. The `fields` / `path` guidance said to re-read the shape on a miss; it now also says to write the path straight through such a string rather than around it. A path *ending* at a string still returns the string, and prose with a fragment loose inside it is still a miss. - **Sample-data services rank last.** Migration 127 flags JSONPlaceholder and DummyJSON `is_demo` and moves them behind every real result unless the query names them: they need no credential, so on 2026-09-08 they outranked every real Reddit tool for a Reddit query. Added as a discovery tip, with the point that matters to an agent — one that surfaces anyway returns fabricated data and should not be offered as an integration. Verified this cycle and left unchanged: API keys as opaque ~43-character tokens with no fixed prefix; the device flow's paths and its 428 / 200 / 410 codes; and `mcp.danubeai.com/health`, `api.danubeai.com/health`, `danubeai.com/dashboard` and the OpenClaw guide all returning 200. ClawBot was not run — `CLAWBOT_DANUBE_API_KEY` is absent from this environment — so nothing here rests on a behavioural transcript; every claim above comes from a code read, a commit diff, or the live `search_tools` response.