Skip to main content
Glama

Tests CodeQL npm: @run402/sdk npm: run402 npm: run402-mcp npm: @run402/functions License: MIT

Run402 is open-source backend infrastructure for AI agents and coding agents — a backend-as-a-service addressed to a machine rather than to a person. An autonomous agent provisions a Postgres database, user auth, file storage, serverless functions and site hosting, ships them in one atomic deploy, and pays for the usage itself. Comparable in surface to Supabase, Firebase or Vercel; different in that there is no dashboard to sign into and no human-issued API key to copy.

This is the backend Kychee's open products run on. We needed a layer an agent can drive end to end, with room for whatever each app turns out to need, and nothing off the shelf had all of it, so we built it and opened it the same way we open the apps: this repo holds the agent surfaces (MIT), run402-core holds the full backend (Apache-2.0), and kysigned is the first product running on it.

One call to run402 gives an agent a full Postgres database, REST API, user auth, content-addressed file storage, static site hosting, serverless functions, and image generation, paid with x402 USDC on Base (or Stripe credits). The prototype tier is free on testnet.

Run402 is agent-first because agents are first-class participants, not because people disappear. A person or agent acts through its own Run402 principal and authenticator, and its actions remain attributable. Identity answers who acted; memberships, roles, grants, delegates, freshness, and spend policy determine what that principal may do.

An autonomous agent may remain the legitimate owner of the org-of-one it creates. People may join through explicit co-ownership. Agents entering somebody else's organization receive bounded authority instead of borrowing a human account. Different keys. Equal standing. Explicit authority.

This monorepo ships every surface an agent can pick up:

Surface

Use when…

@run402/sdk

Calling run402 from TypeScript: typed kernel, isomorphic (Node 22 / Deno / Bun / V8 isolates) with a Node entry that auto-loads the local keystore + allowance + x402 fetch

run402 CLI

Terminal, scripts, CI, agent-controlled shells: JSON in, JSON out, exit code on failure

run402-mcp

Claude Desktop, Cursor, Cline, Claude Code: core run402 operations as MCP tools

OpenClaw skill

OpenClaw agents (no MCP server required)

Run402 for Buzz

Buzz people and agents: install from run402.com, preflight/link one agent's dedicated identities, deploy a contextual demo, then offer human co-ownership through a normal HTTPS/passkey handoff; Buzz remains unchanged

@run402/functions

Imported inside deployed functions (db(req?), adminDb(), auth.user(), email, ai, assets) and for TypeScript autocomplete in your editor. Source lives in the public run402-core repo under packages/functions; run402 Cloud consumes the published npm package when it bundles function zips.

@run402/astro

Astro integration for SSR, ISR cache, hosted auth components, and image variants

These interfaces share a single typed kernel where appropriate: @run402/sdk. MCP tools, CLI subcommands, and OpenClaw scripts are thin shims over SDK calls. @run402/functions is the in-function helper that runs inside deployed code; the npm package on the registry is the artifact Cloud bundles. @run402/astro layers the SDK and functions runtime into Astro's build and SSR flow. Pick whichever interface fits your runtime.

30-second start

npm install -g run402@latest
run402 up --name my-app -y                           # bootstrap allowance/tier/project/link, then deploy manifest
run402 up verify                                     # rerun app HTTP verification without deploying
run402 up --verify                                   # deploy, then wait for gateway/edge coherence
run402 subdomains claim my-app                       # → https://my-app.run402.com

That's a real Postgres database + a deployed static site, paid for autonomously with testnet USDC.

Buy from any x402 seller with the same allowance and a default $0.10 ceiling:

run402 pay https://seller.example/translate --method POST \
  --body '{"text":"hello"}' --max-usd 0.05 \
  --idempotency-key translation:1 --require-receipt

The SDK equivalent is r.pay.fetch(url, init, { maxUsdMicros, idempotencyKey, requireReceipt }); MCP callers use pay_url with require_receipt: true. All three return the same x402-commerce-result.v1 settlement, movement/replay, delivery, offer, merchant-receipt, signer-relationship, policy, and raw-evidence fields and pass unpriced URLs through with payment: null. Requiring a receipt rejects before payment when no wallet-rooted offer is eligible. If a promised receipt cannot be verified after settlement, PaymentPolicyError retains the upstream response and paid result and tells the caller to reconcile—never to pay again. For a trusted Run402 PAYMENT_INTENT_PENDING, all three surfaces prescribe one recovery path: wait for Retry-After, then repeat the same request with the same payer and key. Never replace the key. The SDK and MCP can also re-present an ambiguous proof while their process remains alive; custom/arbitrary sellers remain ambiguous and require reconciliation.

Prefer run402 up when a repo has run402.deploy.json or app.json. The CLI stays a thin shim over the Node SDK action runner (r.actions.run(...) / r.up(...)): it validates the manifest first, then recursively performs only the missing prerequisites. Project resolution is --project, .run402/project.json, manifest project_id, approved creation from --name, then approved active-project fallback. --name is project creation/link metadata only; it is not part of the deploy manifest and never renames an existing project. Use --check for local validation and --plan for gateway-reviewed intent before applying.

If an app manifest defines verify.http[], run402 up verifies those URLs after deploy. Fresh run402 edge sentinel misses are reported as propagation_pending rather than permanent failures while the binding is still converging; tune that wait with --propagation-budget-s (default 120) or return immediately with --no-propagation-wait. run402 up verify reruns the same HTTP checks without uploading, deploying, creating projects, or mutating resources.

The CLI checks for newer run402 releases opportunistically and fail-open. Success stdout stays the command result; stale-version notices are advisory JSON on stderr, or cli.update_available NDJSON events in --json-stream. run402 doctor --refresh is the explicit live npm check and reports the install context plus the safest upgrade command for local, global, or ephemeral installs.

Typed deploy configs use the same commands. Executable configs are trusted local code, so v1 only runs them when passed explicitly:

run402 up --manifest run402.deploy.ts --check
run402 up --manifest run402.deploy.ts --plan
run402 up --manifest run402.deploy.ts --require-plan plan_...

--check and --print-spec are local-only. --plan asks the gateway for a reviewed plan with plan_id, plan_fingerprint, warnings, diff, and one next action. --require-plan reapplies only if the normalized spec and reviewed gateway facts still match.

import { defineConfig, dir, nodeFunction, sqlFile } from "@run402/sdk/config";

export default defineConfig(({ env }) => ({
  project: env.required("RUN402_PROJECT_ID"),
  database: { migrations: [sqlFile("db/001_init.sql")] },
  site: { replace: dir("dist"), public_paths: { mode: "implicit" } },
  functions: { replace: { api: nodeFunction("dist/functions/api.js") } },
  secrets: { require: ["OPENAI_API_KEY"] },
}));

Helpers normalize to the same ReleaseSpec as JSON manifests. dir() walks deterministically and rejects unsafe files unless explicitly allowed, sqlFile() derives the migration id from the filename unless supplied, and nodeFunction() currently expects JavaScript output; point TypeScript functions at built .js files.

Related MCP server: postgresql-mcp

The patterns

Paste-and-go assets: content-addressed URLs with SRI

assets.put() returns an AssetRef whose scriptTag() / linkTag() / imgTag() emitters produce HTML with the URL, the SRI integrity hash, and modern best-practice attributes (defer, loading="lazy", decoding="async", crossorigin) already wired. The URL is content-addressed (pr-<public_id>.run402.com/_blob/<key>-<8hex>.<ext>), served through the CDN, and never needs invalidation:

import { run402 } from "@run402/sdk/node";
const r = run402();
const p = await r.project(projectId);

const logo  = await p.assets.put("logo.png", { bytes: pngBytes });
const app   = await p.assets.put("app.js",   { content: jsSource });
const style = await p.assets.put("app.css",  { content: css });

const html = `
<!doctype html>
<html>
  <head>${style.linkTag()}${app.scriptTag({ type: "module" })}</head>
  <body>${logo.imgTag("Company logo")}</body>
</html>
`;

Binary files must enter the SDK as bytes. In Node, use readFile(path) without an encoding; in browsers, use File.arrayBuffer(). Never read PNG, WASM, fonts, audio, video, archives, or other binary formats as UTF-8 and then hash or re-encode the resulting string: CAS can verify only the bytes it receives. The SDK rejects string sources for known binary keys/MIME types with BINARY_CONTENT_REQUIRES_BYTES before making a request. Directory helpers such as fileSetFromDir, dir, and assets.uploadDir are byte-safe by construction.

immutable: true is the default: the SDK computes the SHA-256 client-side, the gateway returns a content-hashed URL, and the browser refuses execution on byte mismatch. No cache-invalidation choreography, no waiting, no integrity-attribute construction.

Dark-by-default tables + the expose manifest

Tables you create are unreachable via /rest/v1/* until you declare them in a manifest. That closes the "agent created a table, forgot to set RLS, data leaked" footgun. The manifest is convergent: applying it twice is a no-op; items removed between applies have their policies, grants, triggers, and views dropped.

cat > manifest.json <<'EOF'
{
  "$schema": "https://run402.com/schemas/manifest.v1.json",
  "version": "1",
  "tables": [
    { "name": "items",  "expose": true,  "policy": "user_owns_rows",
      "owner_column": "user_id", "force_owner_on_insert": true },
    { "name": "audit",  "expose": false }
  ],
  "views": [
    { "name": "leaderboard", "base": "items", "select": ["user_id", "score"], "expose": true }
  ],
  "rpcs": [
    { "name": "compute_streak", "signature": "(user_id uuid)", "grant_to": ["authenticated"] }
  ]
}
EOF

run402 projects validate-expose <project_id> --file manifest.json
run402 projects apply-expose    <project_id> --file manifest.json
run402 projects get-expose   <project_id>

Built-in policies: user_owns_rows (rows where owner_column = auth.uid(); with force_owner_on_insert: true a BEFORE INSERT trigger sets it), public_read_authenticated_write (anyone reads, any authenticated user writes), public_read_write_UNRESTRICTED (fully open; requires i_understand_this_is_unrestricted: true), and custom (escape hatch: your own CREATE POLICY SQL).

Use run402 projects validate-expose or the MCP validate_manifest tool for a non-mutating feedback loop before applying. Optional migration SQL is used only to check manifest references; it is not executed as a PostgreSQL dry run, and this does not validate deploy manifests.

Auth-as-SDLC: put the same JSON under database.expose in your v2 ReleaseSpec. The gateway validates it against your migration SQL during deploy and rejects mismatches with a structured errors array listing every violation.

Slick deploys: deployDir + plan/commit + progress

deployDir walks a local directory, hashes every file client-side, asks the gateway which bytes it doesn't already have, and PUTs only those. Re-deploying an unchanged tree returns immediately with bytes_uploaded: 0.

import { run402 } from "@run402/sdk/node";

const r = run402();
const { url, bytes_uploaded, bytes_total } = await r.sites.deployDir({
  project: projectId,
  dir: "./dist",
  onEvent: (e) => process.stderr.write(JSON.stringify(e) + "\n"),
});

Progress events stream over onEvent (or stderr from the CLI) as unified DeployEvent JSON objects from the v2 deploy primitive.

CLI:

run402 sites deploy-dir ./dist --project prj_… > result.json 2> events.log

Same-origin web routes: static site + function ingress

Apply-v1 routes and static public paths are release resources: they activate atomically with the site, functions, migrations, secrets, and subdomains in the same deploy apply. Release static asset paths such as events.html are distinct from browser-visible public static paths such as /events. Use site.public_paths for ordinary clean static URLs; keep routes for function ingress and exact, method-aware static aliases.

{
  "project_id": "prj_...",
  "site": {
    "replace": {
      "index.html": { "data": "<!doctype html><main id='app'></main><script>fetch('/api/hello')</script>" },
      "events.html": { "data": "<!doctype html><h1>Events</h1>" }
    },
    "public_paths": {
      "mode": "explicit",
      "replace": {
        "/events": { "asset": "events.html", "cache_class": "html" }
      }
    }
  },
  "functions": {
    "replace": {
      "api": {
        "runtime": "node22",
        "source": {
          "data": "export default async function handler(req) { const url = new URL(req.url); return Response.json({ ok: true, path: url.pathname }); }"
        }
      },
      "login": {
        "runtime": "node22",
        "source": { "data": "export default async function handler(req) { return Response.json({ ok: true }); }" }
      }
    }
  },
  "routes": {
    "replace": [
      { "pattern": "/api/*", "methods": ["GET", "POST", "OPTIONS"], "target": { "type": "function", "name": "api" } },
      { "pattern": "/login", "methods": ["POST"], "target": { "type": "function", "name": "login" } }
    ]
  }
}

site.public_paths.mode: "explicit" means only the complete public_paths.replace table is directly reachable as static URLs. In the example, /events serves the release asset events.html, while /events.html is not public unless separately declared. mode: "implicit" restores filename-derived public reachability and can widen access, so review gateway warnings before confirming it.

Omit routes or pass routes: null to carry forward base routes. Use routes: { "replace": [] } to clear the route table. Route entries are an ordered replace list, not a path-keyed map. Function targets use { "type": "function", "name": "<materialized function name>" }. Static route targets use exact patterns only, methods ["GET"] or ["GET","HEAD"], and { "pattern": "/events", "methods": ["GET","HEAD"], "target": { "type": "static", "file": "events.html" } } where file is a release static asset path, not a public path, URL, CAS hash, rewrite, or redirect. Use static route targets for method-aware aliases such as static GET /login plus function POST /login; in explicit public path mode the backing asset can stay private by filename. Direct /functions/v1/:name calls remain API-key protected; browser-routed paths are public same-origin ingress.

Function routes can charge a fixed tenant x402 price before the handler runs by adding pricing: { "mode": "always", "amount_usd_micros": 250000, "pay_to": "org_default_payout" } to the route entry. 250000 is $0.25 per matching action. The portable ReleaseSpec contract also accepts receipt: "on_fulfillment" on a priced function route; a compatible host then requires the function to return payment.fulfilled(response) before it authors a receipt. Run402-hosted advertising remains gated off until the standard delegated-signer carrier is available—receipt intent never silently downgrades. Omit networks for production mainnet only; include "testnet" explicitly for testnet acceptance. Static aliases cannot be priced, direct function invocation is not monetized, and service/admin keys do not bypass a priced browser route. The owning org must have a resolvable payout wallet: set it with r.org(orgId).setPayoutWallet({ walletAddress }), run402 org payout-wallet <org_id> <wallet_address>, or MCP set_org_payout_wallet. Conditional credit systems should expose one fixed-price route such as POST /api/credits, then keep the rest of the app behind unpriced routes and app-local authorization.

Matching is exact or final-prefix-wildcard only. /admin and /admin/ are exact trailing-slash equivalents; /admin/* matches children but not /admin, /admin/, /admin.css, or /administrator, so deploy both /admin and /admin/* for a routed section root. Query strings are ignored for matching and preserved in the handler's full public req.url. Exact routes beat prefix routes; longest prefix wins; method-compatible dynamic routes beat static assets. A POST /login route can coexist with static GET /login HTML. Unsafe method mismatch returns 405, and matched dynamic route failures fail closed instead of falling back to static files.

Routed functions use the Node 22 Fetch Request -> Response contract: export default async function handler(req) { ... }. req.method is the browser method, and req.url is the full public URL on managed subdomains, deployment hosts, and verified custom domains. Derive OAuth callbacks from it, for example new URL("/admin/oauth/google/callback", new URL(req.url).origin). Append multiple cookies with headers.append("Set-Cookie", value); redirects, cookies, and query strings are preserved. On priced routes, import getRoutedPaymentContext from @run402/functions, read const paymentContext = getRoutedPaymentContext(req), and key app-side idempotency by paymentContext.paymentId. For a receipt-enabled route, return payment.fulfilled(response) only after the response represents completed delivery; the helper fails closed outside a settled, current, receipt-enabled routed invocation. The context helper reads gateway-confirmed x-run402-payment-* headers and returns null for unpriced or direct calls. The raw run402.routed_http.v1 envelope is internal; do not write route handlers against it.

Recipe: static home page + SPA shell. A SPA site ships index.html as the shell serving every unmatched route (match spa_fallback), so by default GET / serves the shell too. To serve a real static home page at / while keeping the shell for app routes, ship home.html at the site root alongside index.html and add an exact root static route alias: "routes": { "replace": [ { "pattern": "/", "target": { "type": "static", "file": "home.html" } } ] }. Route matching runs before all static resolution (including the implicit / -> index.html root mapping), and SPA-fallback derivation is independent of the route table, so GET / serves home.html (route_static_alias), unmatched app routes such as /dashboard still serve the shell (spa_fallback), and named static pages keep serving unchanged (static_exact). Expect two non-blocking plan lints: STATIC_ALIAS_SHADOWS_STATIC_PATH (warn: the alias overrides what / would otherwise serve; accurate and expected here) and STATIC_ALIAS_DUPLICATE_CANONICAL_URL (info: /home.html stays directly reachable in implicit public-path mode; add <link rel="canonical"> to home.html if duplicate-content SEO matters). Omitting routes on later deploys carries the alias forward; routes.replace is total, so a pipeline that sends it must include the alias every time. Verify with run402 deploy resolve --url https://<your-site>/ --method GET or deploy_diagnose_url and confirm match: "route_static_alias" with target_file: "home.html".

Avoid routing every static file, broad method lists by default, wildcard static route targets, leading-slash static files, directory shorthand, and one-static-route-target-per-page tables that exhaust route limits. Also watch wildcard function routes that shadow direct public static paths. Warning codes to handle include STATIC_ALIAS_SHADOWS_STATIC_PATH, STATIC_ALIAS_RELATIVE_ASSET_RISK, STATIC_ALIAS_DUPLICATE_CANONICAL_URL, STATIC_ALIAS_EXTENSIONLESS_NON_HTML, and STATIC_ALIAS_TABLE_NEAR_LIMIT; inspect active routes, static_public_paths, and resolve diagnostics to distinguish the route pattern from the backing asset_path.

Diagnose public URLs with the URL-first CLI or MCP/SDK equivalents:

run402 deploy diagnose --project prj_123 https://example.com/events --method GET
run402 deploy resolve --project prj_123 --url https://example.com/events?utm=x#hero --method GET
run402 deploy resolve --project prj_123 --host example.com --path /events --method GET

deploy_diagnose_url and r.project(id).apply.resolve({ url, method: "GET" }) return would_serve, diagnostic_status, match, normalized request data, warnings, full resolution JSON, edge_propagation, and next steps. When returned, asset_path, reachability_authority, and direct explain which release asset backs the public URL and whether reachability came from implicit file-path mode, explicit site.public_paths, or a route-only static alias. Stable-host diagnostics may also include authorization_result, cas_object (sha256, exists, expected_size, actual_size), hostname-specific response_variant, route/static fields such as allow, route_pattern, target_type, target_name, and target_file, and edge_propagation (settled, propagating, or sync_pending). Known match literals are host_missing, manifest_missing, active_release_missing, unsupported_manifest_version, path_error, none, static_exact, static_index, spa_fallback, spa_fallback_missing, route_function, route_static_alias, and route_method_miss; preserve unknown future strings. Known authorization_result values include authorized, not_public, not_applicable, manifest_missing, target_missing, active_release_missing, unsupported_manifest_version, path_error, missing_cas_object, unfinalized_or_deleting_cas_object, size_mismatch, and unauthorized_cas_object. Known fallback_state values include active_release_missing, unsupported_manifest_version, and negative_cache_hit; preserve unknown future strings. result is the diagnostic body status, not the HTTP status of the SDK call, so host misses can still be successful CLI/MCP/SDK calls with would_serve: false. Do not treat resolve/diagnose as a fetch, cache purge, or cache-policy oracle; route method misses should inspect allow, CAS authorization/health failures should inspect or redeploy the affected static asset, and fresh host misses should inspect edge_propagation or rerun run402 up verify. Branch on structured JSON fields such as cache_class and preserve unknown cache classes.

Release observability exposes stable asset identity and public reachability. Inventories include release_generation, static_manifest_sha256, nullable static_manifest_metadata (file_count, total_bytes, cache_classes, cache_class_sources, spa_fallback), and static_public_paths[] when returned. site.paths lists release static assets; static_public_paths[] lists browser-visible public paths with public_path, asset_path, reachability_authority, direct, cache class, and content type. Plan and release diffs expose static_assets counters: unchanged/changed/added/removed, newly_uploaded_cas_bytes, reused_cas_bytes, deployment_copy_bytes_eliminated, legacy_immutable_warnings, previous_immutable_failures, and cas_authorization_failures.

Runtime route failure codes to branch on: ROUTE_MANIFEST_LOAD_FAILED (manifest/propagation), ROUTED_INVOKE_WORKER_SECRET_MISSING (custom-domain Worker secret), ROUTED_INVOKE_AUTH_FAILED (internal invoke signature), ROUTED_ROUTE_STALE (selected route failed release revalidation), ROUTE_METHOD_NOT_ALLOWED (method mismatch), PAYOUT_WALLET_REQUIRED / PAYOUT_WALLET_AMBIGUOUS / PAYOUT_WALLET_UNRESOLVED (priced-route payout setup), PAYMENT_PROOF_MISMATCH (stale or wrong x402 proof), and ROUTED_RESPONSE_TOO_LARGE (body over 6 MiB).

For repo-driven deploys, run402 does not need service keys or allowance files in GitHub secrets. Run a local link command once:

run402 ci link github --project prj_... --manifest run402.deploy.json
# Optional route authority for CI route declarations:
run402 ci link github --project prj_... --manifest run402.deploy.json --route-scope /admin --route-scope /api/*

That creates a deploy-scoped /ci/v1/* binding and writes a workflow that grants id-token: write, checks out the repo, and runs the existing deploy primitive:

permissions:
  contents: read
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to run402
        run: npx --yes run402@3.7.5 deploy apply --manifest 'run402.deploy.json' --project 'prj_...'

CI deploys are intentionally narrow: site, functions, database, absent/current base, and route declarations only when the binding has covering --route-scope patterns. Without route scopes, CI cannot ship routes. Keep secrets, domains, subdomains, checks, non-current base, and broader trust changes in a local allowance-backed deploy. If the gateway returns CI_ROUTE_SCOPE_DENIED, re-link with exact scopes like /admin or final-wildcard scopes like /api/*, or deploy locally. Manage bindings with run402 ci list and run402 ci revoke.

In-function helpers: caller-context vs BYPASSRLS

Inside a deployed function, import from @run402/functions. Two distinct DB clients keep RLS clean:

import { db, adminDb, auth, email, ai } from "@run402/functions";

export default async (req: Request) => {
  const user = await auth.requireUser();

  // Caller-context: db() mints a 60s actor JWT so run402.current_user_id() resolves in RLS.
  // No .eq("user_id", user.id) needed: RLS already binds the visitor's rows; the redundant
  // filter is a deploy-fail (R402_AUTH_REDUNDANT_USER_FILTER) under @run402/functions v3.0+.
  const mine = await db().from("items").select("*");

  // BYPASSRLS: for platform-authored writes (audit logs, cron cleanup, webhook handlers).
  await adminDb().from("audit").insert({ event: "items_read", user_id: user.id });

  // Send mail from the configured default outbound mailbox.
  if (mine.length === 0) {
    await email.send({ to: user.email, subject: "Welcome", html: "<h1>hi</h1>" });
  }

  return Response.json(mine);
};

adminDb().sql(query, params?) runs raw parameterized SQL and always bypasses RLS. It returns a flat Promise<Record<string, unknown>[]> (just the rows, no envelope):

import { adminDb, auth } from "@run402/functions";

export default async (req: Request) => {
  const user = await auth.requireUser();

  const rows = await adminDb().sql(
    "SELECT count(*)::int AS n FROM items WHERE user_id = $1",
    [user.id],
  );
  const n = (rows[0]?.n as number | undefined) ?? 0;
  return Response.json({ count: n });
};

@run402/functions is auto-bundled into deployed code; install it in your editor for full TypeScript autocomplete (also works at build time for static-site generation with RUN402_SERVICE_KEY + RUN402_PROJECT_ID set).

ai.generateImage({ prompt, aspect? }) is available inside deployed functions for live app flows such as generated avatars or OG images. It calls the project runtime image endpoint with RUN402_SERVICE_KEY, so deployed functions do not need allowance wallets or x402 signing code. Aspects are square, landscape, and portrait; the result is { image, content_type, aspect } with base64 image bytes. Runtime image generation is billed, rate-limited, and spend-capped against the project organization; public routed functions should authenticate/rate-limit their users before calling it.

assets.put(key, source, opts?) uploads bytes from inside a deployed function through the same CAS-backed apply substrate as deploy-time assets. It uses RUN402_SERVICE_KEY, accepts a string, Uint8Array, or { content | bytes }, and returns an SDK-compatible AssetRef with mutable and immutable URLs.

Calling from outside a function entirely (raw curl/fetch from CI scripts, bash bootstrappers, non-TS runtimes): service-key writes go to /admin/v1/rest/<table>, not /rest/v1/*. The gateway 403s service-role tokens on /rest/v1/* so a leaked key can't silently bypass RLS, which means curl ... > /dev/null against the wrong path looks like success but writes nothing. SQL-shaped admin work uses POST /projects/v1/admin/:id/sql (or run402 projects sql).

curl -X POST https://api.run402.com/admin/v1/rest/audit \
  -H "Authorization: Bearer $RUN402_SERVICE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event":"seed","ts":"2026-04-30"}'

repos: your repository history, encrypted before it leaves the machine

run402 repos is a Git remote whose contents are encrypted on your own machine and stored as a chain of signed, admitted heads. It exists so your repository history outlives the machine it was written on — without that outliving requiring you to hand Run402 the plaintext. The wire protocol is r402s/v0. One noun, fifteen verbs (repo singular resolves identically): run402 gitvault <verb> answers COMMAND_MOVED/COMMAND_REMOVED, and r.gitvault is the SDK's name (gitvault stays the protocol/infrastructure name; repos is what you type). Two of the fifteen, handoff and resume, hand a checked-out working tree — dirty state included — from one agent to another via a single-use bearer key: see "Handoff / resume" below.

Three claims, three different strengths. These are the entire approved claims vocabulary for this feature:

  1. Run402 cannot decrypt your gitvault or repository history. Deployment artifacts remain a disclosed plaintext custody boundary. Cryptographic, against Run402 itself: in the vault lane, source payload and repository-history content are ciphertext-only; the substrate retains only enumerated plaintext metadata and holds zero vault keys. The deploy lane is separate and disclosed — the platform custodially holds the plaintext artifacts of every deploy. It can read what you deployed; it cannot read what you did not.

  2. Activation requires vault admission by default; an explicit, audited override can bypass it. An operational platform invariant, enforced and auditable — not cryptographic against the platform that enforces it.

  3. Retention is an operational promise of the platform, not a cryptographic guarantee against it (the host controls timestamps and bytes).

The vault-only track — three lines, muscle memory intact, nothing to pay:

run402 init                                   # once per machine
run402 repos create my-notes                  # project + vault + origin remote, one free call
git push -u origin main                       # publishes, encrypted before it leaves the machine

origin is claimed additively: when the directory has no origin yet, the scaffold names ours origingit push origin main just works, no side-remote name to remember. An existing origin is never touched; the fallback is run402 instead, and the response says which happened and why. The free path is the whole path — no slug, no fee, no ceremony. When you want pretty run402::<org-slug>/<name> addresses (clone-by-name, push-to-create), claim an org slug once — the optional named-address upgrade described below.

Named addressing. run402::<org-slug>/<name> works alongside the id-form run402::<org_id>/<project_id> in the same slot — pick an org slug once (run402 org slug <slug>, owner-only, a small one-time claim fee), and every repo under it is run402::<slug>/<name>. Pushing a name that doesn't exist yet push-to-creates it: the project and vault are allocated atomically, and a losing concurrent pusher resolves cleanly to the winner's repo instead of erroring — its work is not lost, it just wasn't the creator. The first time a named remote resolves on a checkout, the resolved id is pinned into that checkout's local git config — every later push/fetch follows the pin directly, so a later rename of the org slug or repo name never breaks an existing clone. The id-form address needs no pin (a project id never changes) and stays the cold-restart path: an agent that lost its local state but still holds authority on the project can always fall back to run402::<org_id>/<project_id>.

One thing to know up front: V0 is single-principal. Exactly one machine (this keystore) can open the vault until human envelopes ship. State it plainly, don't bury it — see "If you lose the keystore" below.

The explicit, ceremonial form still works, and allocates the SAME way git push does lazily on first use — useful for scripts, or for the receipt to land in JSON stdout instead of stderr:

# 1. Provision. Inside a repository that already exists, this adds the origin
#    remote (run402::<org_id>/<project_id>). Not a repository yet?
#    `run402 init --git-remote` creates one first. It needs a project selected
#    (`run402 projects use <project_id>`, or RUN402_PROJECT_ID).
run402 init

# 2. Allocate the repo's vault explicitly. Separate from `run402 init` on
#    purpose: this is the step that mints key material on this machine and
#    prints a one-shot recovery receipt. Idempotent — an existing vault comes
#    back deduplicated. (Skip this step and git push / repos snapshot
#    against an unallocated project allocates the SAME way, lazily, on
#    first use — the two paths don't stack; this one just does it now,
#    explicitly, so the receipt lands in JSON stdout instead of stderr.)
run402 repos create --project <id>

# 3. Snapshot — capture the working tree, encrypt it, publish a signed head.
run402 repos snapshot --message "wip: refactor the parser"
git push origin main            # ...or push your own branches, via git-remote-run402

# 4. View, then fsck: walk the head chain from your authenticated pin.
run402 repos view
run402 repos fsck --budget 500

# Restore anywhere, with plain git.
git clone run402::<org_id>/<project_id> restored

Cloning needs a Run402 principal on this machine — a wallet with an allowance and a keystore holding an envelope for this vault — this is encrypted git, not a shareable link.

A fresh clone installs local refs/r402/retain/<oid> refs for every retained deploy-capture tip no branch reaches, so a plain git fsck is silent — git for-each-ref refs/r402/ lists what is retained. Clones made by a client older than this one (or a checkout whose ref write degraded) may still show dangling commits under git fsck; harmless, not corruption — one run402 repos fsck run installs the missing refs. A retained ref locally pins that history against git gc until the vault prunes the capture, at which point the next fetch retracts it.

repos snapshot is the CAPTURE lane — the protocol deploy ref plus the HEAD target — because a dirty tree captures as a synthetic commit that sits on no branch. Your own branches and tags reach the vault through git push origin <branch>.

Allocating a vault does NOT gate the project's deploys. gitvault_policy stays unset until you set it — a vault created by a first git push or repos create never silently changes how you deploy. A deploy against a vaulted, ungated project proceeds ungated and its result carries a typed next_actions entry offering run402 repos policy required; every later ungated deploy carries a warnings[] entry naming the drift, until the policy is set either way — never a block, never an interactive prompt. Once gitvault_policy is required, a deploy must present a vaulted capture at commit — run402 deploy apply produces one automatically on any machine holding the keystore; un-gate with run402 repos policy grandfathered --reason "<why>" (owner + step-up, audited, reversible with run402 repos policy required). Vaulting your source is never gated on a deploy, either way. run402 doctor reports the policy, whether this machine can satisfy it, and where the keystore lives.

Before snapshot reports that anything landed, the client compares every finalization receipt against its local expected manifest and reads the admitted head back from storage — a 200 alone is never enough. Maintenance is one verb, run402 repos gcgit gc's own two halves (checkpoint publication + prune planning), never described as "exactly git gc" since the deletion ceremony is stricter: it plans locally, and submits only when handed both verifier receipts — one from this CLI, one from the independent r402s-verify — with --submit --intent-core <path> --verifier-receipt <path>; only the control-plane-signed completion says what was deleted.

From the SDK, with identical semantics — vault reads run anywhere, and the verbs that touch a git working tree or the on-disk keystore are Node-only:

import { run402 } from "@run402/sdk/node";
const r = run402();

const vault = await r.gitvault.forProject(projectId);              // cold restart: no local state needed
const pushed = await r.gitvault.push({ project_id: projectId, snapshot: { message: "wip" } });
const state = await r.gitvault.verify({ project_id: projectId });

The encrypted second remote — the zero-migration pattern. Keep GitHub/GitLab as the primary (collaboration, CI, reviews, unchanged) and add GitVault as the second remote: git remote add gitvault run402::<org_id>/<project_id> + git push gitvault --all, and a complete, continuously updated copy of your history exists that the storage provider itself cannot read. The reason this matters, said plainly and as capability rather than accusation: a host that can READ private repositories can — under a future policy, an acquisition, a training pipeline, a subpoena, or a breach — index them, train models on them, or hand them to someone who will. Run402 cannot decrypt your gitvault or repository history. Deployment artifacts remain a disclosed plaintext custody boundary.

A vault-only project is first-class. run402 init (or run402 repos create <name>), then git push origin …, then gc / fsck / access, and never a deploy — a supported shape, not a degraded one. One consequence is worth stating plainly: a vault-only project has no deploy lane, so the disclosed plaintext custody boundary is empty and there is consequently no custodial restore path.

If you lose the keystore. The vault protects source history from host-side loss while a principal keystore survives. The "while" clause is load-bearing: in V0-A, whole-machine or whole-keystore loss is terminal for vault history until human envelopes ship, and run402 repos view prints that sentence verbatim. Back up the keystore directory run402 repos view reports as keystore.root and prints under the terminal-loss statement — ~/.config/run402/gitvault for the default wallet, ~/.config/run402/profiles/<wallet>/gitvault for a named one. The recovery receipt is an integrity anchor, not a decryption key — it proves the vault you are served is the one you created, and it decrypts nothing. It is not a secret; the more copies the better. The reminder gets louder as the vault gets more valuable: quiet at genesis, a STANDING run402 doctor warning once the vault crosses any of ≥10 generations / ≥10 MB / ≥14 days since genesis — cleared only by adding a second principal, never by an attestation, because V0 cannot verify one is true.

The exit ramp: mirror your own copy. run402 repos mirror <destination> [--profile <name> | --ambient] (S3 or a plain directory) configures a second, customer-owned copy of the vault's ciphertext — the destination and credential name live in a config file beside the keystore, never in run402.config.json, never a raw secret. Once set, every snapshot dual-pushes to it automatically, reported as a separate mirror_push field beside the vault result; a mirror failure never blocks, slows, or changes the actual publish. run402 repos mirror --backfill (idempotent, resumable) catches it up on demand; run402 repos fsck --mirror is a KEYLESS integrity probe — it reports the recoverable generation without touching key material. run402 repos recover <source> --out <dir> needs no server at all: it reads the mirror, verifies the chain, and decrypts with the local keystore alone. Named recover rather than restore, which already means something else in git. Two things to know before you rely on it: it proves validity, never freshness — an older mirror looks identical to a genuinely short history — and a mirror without the keystore or an equivalent key recovers nothing, since mirroring ciphertext does not create a second key; the V0 terminal-loss statement above applies.

The human backup path (gitvault-recovery-custody). A human org member who completed source enrollment at console.run402.com/account holds an equivalent key with no keystore at all: their member key lives as sealed wrappers (passkey PRF and/or a source recovery code), and run402 repos recovery-bundle downloads the versioned recovery bundle (key identity + wrapper ciphertexts — still nothing the platform can open). Kept with a vault mirror — copy it to member-recovery-bundles/<name>.json under the mirrored prefix — that bundle + the source recovery code + the vault's recovery receipt recover the repository with no run402 server and no keystore: run402 repos recover <source> --out <dir> --receipt <pin.json> (the code is prompted with hidden input; --bundle <file> if the bundle isn't in the mirror). A raw passkey PRF output is deliberately NOT a recovery input — the no-server path for a human is the recovery code. run402 doctor's recovery_posture check tells you whether each vault-owning org actually has this backstop configured.

run402 repos mirror s3://acme-vault-mirror --profile acme --region us-east-1
run402 repos mirror --backfill
run402 repos recover s3://acme-vault-mirror --out ./restored --repo src_1a2b3c
run402 repos recovery-bundle --out ./bundle.json     # the member's no-keystore recovery half
run402 repos recover ./mirror-copy --out ./restored --receipt ./recovery-receipt.json --bundle ./bundle.json

Handoff / resume — pass a working tree to another agent, dirty state and all. run402 repos handoff captures the actual working tree — staged, unstaged, and untracked changes, exactly as git stash push -u would — and mints a single-use bearer key, kgh1_…, printed to stdout exactly once (--json still keeps it off stderr; there is no second place to find it if you lose it). Hand that key to another agent — another machine, another session, no shared keystore, no shared allowance — and run402 repos resume kgh1_… claims it, clones a fresh checkout, and reapplies the exact dirty state with git stash apply --index. The resuming agent also becomes a run402 wallet of its own on the way in: with no active tier, resume folds the same cold-start chain create does (allowance → faucet → one x402 prototype payment) before the claim; --no-init opts out, and the claim never waits on it. A Handoff Note rides alongside (a short JSON summary: what's done, what's in progress, what's failing, next steps) and renders as Markdown by default on resume. The key confers real authority — by default the sender's own org role — until it is claimed or its TTL (default 1h, --ttl <seconds>) expires; the mint response says so, and the CLI echoes the warning before printing the key. Sensitive untracked files (.env, *.pem, *.key, SSH/AWS/GPG directories, and 18 more patterns) are excluded from capture by default; opt one back in with --include-sensitive <glob>.

run402 repos handoff --note-file handoff.json     # captures the working tree, mints the key, prints it ALONE to stdout
run402 repos resume kgh1_…                         # on the other machine: claim it, clone, restore, print the note

Neither verb has an MCP tool — handoff mints a bearer secret and resume mutates org membership, the same "mutating verbs are CLI-only" reasoning as create/delete above.

Writers, plural. A vault admits heads from a SET of writer keys, each a member's own keystore identity (protocol rev 47). resume makes the recipient a writer before it returns — git push works at once, under the recipient's own key, and the sender's environment can be deleted afterwards. Any member added with run402 org member add (developer or above) becomes a writer the same way: the adder's client admits the new key inline when it can, and REFUSES the add (GITVAULT_WRITER_NOT_ADMITTED, request_writer_sync) when it cannot, so no member is ever left able to read but not push. run402 repos view lists writers[] and pending_writers[]; run402 repos access sync admits pending keys on demand; removing a member rides the next epoch rotation and that key can never be re-added. Nobody's seed is ever copied: a writer is admitted by a live writer's signature or by a sender-signed handoff grant the recipient completes with its own key.

Verify it without trusting our client. r402s-verify is an independent-lineage verifier for the same protocol — a separate language, separate authorship, and a separate primitive stack, deliberately sharing no implementation code with the SDK. That non-sharing is the point: a differential verifier that reuses the code it is checking verifies nothing. It lives on the r402s-verify branch of this repository with its own workflow, ships prebuilt release binaries, and also builds with cargo build --release. The full protocol specification and threat model it verifies against are published in docs/gitvault/, and the frozen conformance vectors in test-vectors/r402s-v0/.

Cost. There is no separate repos price — a vault's bytes count against the same organization-pooled storage budget your projects already share, charged once per unique object with a 4 KiB per-object accounting floor and a 1 MiB per-vault minimum.

SDK: @run402/sdk

npm install @run402/sdk

Two entry points:

  • @run402/sdk: isomorphic. Bring your own CredentialsProvider (a session-token shim, a remote vault, anything that resolves project keys + auth headers). Works in Node 22, Deno, Bun, V8 isolates.

  • @run402/sdk/node: Node-only convenience. Reads local profile state plus the project-key credential cache (credentials/project-keys.v1.json) and signs x402 payments from one deterministic source: an explicit opaque paymentSigner, explicit allowancePath, the supplied provider's readAllowance(), or the default active-profile allowance. Auth and payer may intentionally differ; a selected payment source never falls back to an ambient wallet. r.paymentPayer() reports only safe public payer/source provenance. Also exposes sites.deployDir(...), fileSetFromDir(...), typed deploy-manifest helpers (loadDeployManifest, normalizeDeployManifest), and resolveRun402TargetProfile() for app build scripts that need the same Core/Cloud target the CLI uses.

import { run402 } from "@run402/sdk/node";

const r = run402();
const project = await r.projects.provision({ tier: "prototype" });
const p = await r.project(project.project_id);
await p.assets.put("hello.txt", { content: "hi" });

The SDK is organised into focused namespaces: actions (Node recursive action runner), pay (bounded arbitrary-URL x402 buyer), projects, snapshots, branches, archives, assets, cache, ci, sites, functions, jobs, secrets, subdomains, domains, email (+ webhooks), auth, apps, tier, billing, contracts, ai, allowance, service, admin, operator (the human/email operator session: browser-delegated login + overview across every wallet that verified your email), wallets (signed server-side wallet label), orgs (org-owned control plane + r.org(id) sub-client), grants (per-project capability grants), and identityLinks (public, protocol-discriminated human/agent Nostr attribution), plus the r.project(id).apply hero for atomic mixed writes (release slices + assets slice via /apply/v1/*). Every operation throws a typed Run402Error subclass on failure: PaymentRequired, PaymentBuyerError, ProjectNotFound, Unauthorized, ApiError, NetworkError, LocalError, Run402DeployError. apply() automatically re-plans safe current-base BASE_RELEASE_CONFLICT races and emits apply.retry progress events. See sdk/README.md.

Humans and agents can publicly attribute separately held Buzz/Nostr identities to their Run402 principal. Agent links use the EOA-plus-kind-1 protocol; human links use a normal browser, fresh passkey, and released Buzz consent ceremony at https://console.run402.com/identity-links/connect. Both produce the same public idlnk_… resource shape with a discriminating proof_protocol. One principal may have several active Nostr subjects, while one active Nostr subject belongs to only one principal. This is attribution only: Nostr identities never authenticate, authorize, pay, deploy, or receive transfers. Run402 never accepts or derives from an nsec, Nostr private key, mnemonic, seed, passkey, session credential, or derivation path.

The human-facing install is a Buzz message—no terminal required:

Please install the run402.com skill.

That is the entire human instruction. In a managed Buzz context, first-party discovery routes it to run402-buzz; the agent reads the apex install router and installs the self-contained skill into its workspace (normally the user-home .buzz directory). The request means install and connect: after verifying the inert files, the agent loads the installed skill directly and continues through preflight, setup, and identity linking in the same turn. It does not stop at “available next turn” or ask a second setup question. For a Codex runtime, prefer supplying the working directory and environment separately to the agent's command runner:

working_directory: <user-home>/.buzz
environment: { "DO_NOT_TRACK": "1" }
command: npx --yes skills@latest add https://run402.com -s run402-buzz -a codex -y

Shell-only POSIX environments use:

cd "$HOME/.buzz"
DO_NOT_TRACK=1 npx --yes skills@latest add https://run402.com -s run402-buzz -a codex -y

Windows PowerShell uses:

Set-Location (Join-Path $HOME '.buzz')
$env:DO_NOT_TRACK = '1'
npx --yes skills@latest add https://run402.com -s run402-buzz -a codex -y

Claude Code uses -a claude-code, Goose uses -a goose, a confirmed .agents/skills consumer may use -a universal, and Claude Code plus Codex uses -a claude-code codex. universal is the shared path, not all runtimes; do not use the invalid explicit target -a claude. The skill bytes come from immutable digest-verified artifacts at run402.com; first-run npx can still require npm. GitHub is the one availability-only fallback, while any integrity failure stops before setup. Success reports the observed first-party digest and exact managed-workspace path; a GitHub source or global runtime path is never mislabeled first-party.

The file installation stage is inert. Continuing onboarding publishes a durable public kind-1 Nostr event and durable Run402 proof connecting the two public identities; revocation does not erase their history, and a Buzz-managed event may also expose its owner's public NIP-OA attestation. The agent initializes only if needed, creates or reuses the link, independently verifies it, and immediately offers one context-relevant quick test or demo with Deployment: none retained in the expanded receipt. On Windows the setup helper runs npm's and Run402's JavaScript entrypoints through the exact managed Node runtime with shell: false, avoiding .cmd process-boundary failures. It waits for explicit approval before building or deploying. After independently verifying the live app, it creates an inert durable offer and posts a normal HTTPS “Become an owner” handoff. The browser owns human login/passkey and the existing Buzz six-digit consent callback; no human terminal command or Buzz change is required.

See the buzz/ guide for prerequisites, the no-secret signer model, released-client fixtures, migration guidance, and the full workflow, or inspect the exact run402-buzz listing on skills.sh. The low-level CLI commands remain available for debugging, but they are not a competing onboarding path.

The community control plane keeps four concepts separate: installing the skill is inert shared capability; installing a community associates a Buzz relay community with a Run402 organization after dual consent; human adoption records a terminal consent receipt, creates the human's public Buzz identity link, and adds an ordinary owner membership without demoting the founder agent; agent enrollment gives each later agent principal only bounded, expiring grants to named existing projects. The completed receipt, public attribution, and membership remain independent: revoking the link does not remove org authority, and removing the membership does not revoke the link or rewrite the receipt. Buzz itself remains unchanged: approval uses already-shipped browser-fragment/kind-1 behavior plus released NIP-11/NIP-43 evidence, while Run402 owns offers, organizations, descriptor discovery, and lifecycle. run402 buzz status capability-detects older gateways; MCP only renders exact HTTPS/CLI handoffs. See the Fizz/Honey workflow.

Astro SSR + ISR cache. For Astro apps, use @run402/astro 1.0+: export default run402(); in astro.config.mjs returns an AstroUserConfig composing the SSR adapter (Lambda + SnapStart + ISR cache + AsyncLocalStorage request-context), image integration, and build-time detectors. Functions opt into the SSR class via FunctionSpec.class: "ssr" in ReleaseSpec; the gateway provisions SnapStart and caches HTML responses keyed by (host, path, search, method, locale, release_id). Cache is bypass-by-default (no-store unless Cache-Control explicitly allows it AND no Set-Cookie AND no auth-taint flag from auth.* helpers / payment primitives). Invalidate from in-function code or out-of-band: r.cache.invalidate(url) / r.cache.invalidatePrefix({ host, prefix }) / r.cache.invalidateAll({ host }) (SDK), run402 cache invalidate <url> (CLI). Inspect cached state with r.cache.inspect(url) / run402 cache inspect <url>. Agent DX helpers also in the CLI: run402 doctor (5 health checks), run402 dev (Astro dev with .env.local), run402 logs --request-id req_... (correlate across functions). Full reference at astro/README.md and cli/llms-cli.txt (R402_* SSR Runtime Error Codes section).

CLI: run402

npm install -g run402@latest

Every subcommand prints JSON to stdout, JSON errors to stderr, exits 0 on success and 1 on failure: designed for an agent shell, not a human. Full reference: cli/llms-cli.txt (also at https://docs.run402.com/llms-cli.txt).

run402 up --name my-app -y                # recursive SDK action runner: init/tier/project/link/deploy
run402 up verify                          # rerun app HTTP verification without a deploy
run402 init                              # one-shot allowance + faucet + tier check
run402 pay https://seller.example/resource --max-usd 0.05 --require-receipt
run402 status                            # organization snapshot (wallet, rail, balances, tier, projects)
run402 projects provision --name my-app
run402 projects sql <id> "CREATE TABLE …"
run402 projects validate-expose <id> --file manifest.json
run402 projects apply-expose <id> --file manifest.json
run402 sites deploy-dir ./dist
run402 deploy verify op_... --project <id> --wait  # confirm gateway/edge release coherence
run402 deploy release active --project <id>  # inspect current-live release inventory
run402 deploy diagnose --project <id> https://example.com/events --method GET
run402 apply --manifest app.json --rehearse --json
run402 snapshots list prj_...
run402 branches create prj_... --ttl-days 7 --json
run402 functions deploy <id> <name> --file fn.ts
run402 functions runs create <id> <name> --event-type reminder.send --idempotency-key reminder:123 --delay 10m
run402 ci link github --project <id>       # GitHub Actions OIDC deploy binding (--route-scope for CI routes)
run402 assets put ./asset.png --immutable
run402 assets diagnose <url>             # inspect live CDN state for a public URL
run402 cdn wait-fresh <url> --sha <hex>  # poll until a mutable URL serves the new SHA

up is the only compound CLI command: it calls the SDK action runner, emits steps[], and writes .run402/project.json when it needs to remember the workspace project. Against run402 Core it skips Cloud allowance/tier prerequisites and fails closed if no Core project is selected.

For database-bearing deploys, rehearse before commit. run402 apply --manifest app.json --rehearse --json plans, uploads missing CAS bytes, creates a contained branch, runs migrations/checks there, and exits nonzero on a failed rehearsal. If you already have a persisted plan id, use run402 deploy rehearse <plan_id> --project <id> --json. Manual restore points live under run402 snapshots create|list|get|restore|delete; restore is a two-step plan/confirm flow. Branch projects live under run402 branches create|list|renew|delete, default to a 7-day TTL, use sandboxed email by default, and are marked noindex.

Portable archives export the supported run402 Core runtime slice of a Cloud project for local Core import. This is the no-lock-in trust path, separate from allowance/spend-cap financial-risk controls.

run402 cloud archives create <project_id> --scope portable-runtime-v1 --auth stubs --consistency pause-writes --wait --output ./project.r402ar --json
run402 archives verify ./project.r402ar --json
run402 core projects import ./project.r402ar --name imported-project --env-file ./required.env --json
run402 projects export <project_id> --output ./project.r402ar --json
run402 core projects apply ./project.r402ar --name imported-project --env-file ./required.env --json

projects export is an alias for the Cloud archive export flow; core projects apply is an alias for Core archive import. Archive v1 excludes secret values, auth credentials, logs, billing/allowance state, Cloud operations metadata, Cloud import, and existing-project merge import. Verify is local/offline and checks integrity plus compatibility; archives remain untrusted input until Core import verifies and stages them.

The active project is sticky: run402 projects use <id> server-validates <id> and stores it as the default for subsequent <id>-taking subcommands, so most commands work without it. Local key material is managed separately under run402 credentials project-keys ...; that cache is never project inventory.

MCP server: run402-mcp

npx -y run402-mcp                        # standalone test

Buying only? Load 6 tools instead of 198

The full server registers 198 tools (~43,000 tokens) before you do anything. If your agent only wants to buy — generate an image for $0.03 and nothing else — that is a fifth to a third of a context window spent on 192 tools it will never call.

RUN402_MCP_PROFILE=buyer npx -y run402-mcp

profile

tools

approx. tokens

(unset — default)

198

~43,200

buyer

7

~740

The seven: generate_image · init · check_balance · allowance_status · allowance_export · request_faucet · redeem_voucher — enough to bootstrap a wallet, fund it (from the faucet or a promo code), check it, and buy. Local, so it can actually pay: an x402 payment needs a signing key, so a wallet-less remote server cannot make one.

Default is unchanged when the variable is unset. An unknown profile name exits 1 with the known-profile list rather than silently serving the full surface or nothing.

Remote endpoint (no install)

A hosted streamable-HTTP MCP server runs at https://mcp.run402.com/mcp with free discovery tools only: run402_quickstart, x402_price_check (decode any URL's x402 challenge, unpaid), and experiment_scoreboard. It never handles funds — paid capabilities (image generation, deploys, payments) require the local server below, which holds your wallet. Registry entry com.run402/mcp lists both (packages[] npm + remotes[]). The remote itself runs as a run402 function — the platform hosting its own MCP server.

Stdio MCP transports must keep stdout reserved for JSON-RPC. Use the package bin (npx -y run402-mcp) or node dist/index.js from a built checkout. If a host insists on npm start, set npm_config_loglevel=silent; npm's lifecycle banner is stdout and otherwise appears as non-JSON prelude. The repo .npmrc and Docker image set this for source/container hosts.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "run402": { "command": "npx", "args": ["-y", "run402-mcp"] }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "run402": { "command": "npx", "args": ["-y", "run402-mcp"] }
  }
}

Cline

Add to your Cline MCP settings:

{
  "mcpServers": {
    "run402": { "command": "npx", "args": ["-y", "run402-mcp"] }
  }
}

Claude Code

claude mcp add run402 -- npx -y run402-mcp

OpenClaw skill

cp -r openclaw ~/.openclaw/skills/run402
cd ~/.openclaw/skills/run402/scripts && npm install

Each script re-exports from cli/lib/*.mjs: the OpenClaw command surface is identical to the CLI command surface by construction. See openclaw/README.md.

MCP tools

The full MCP surface: every tool is a thin shim over an SDK call.

Database

Tool

Description

provision_postgres_project

Provision a new database. Auto-handles x402 payment.

run_sql

Execute SQL (DDL or queries). Returns a markdown table.

rest_query

Query/mutate via PostgREST.

apply_expose

Apply the declarative authorization manifest (tables, views, RPCs). Convergent: drops items removed between applies.

validate_manifest

Validate the auth/expose manifest without applying it. Accepts manifest object/string, optional migration_sql, optional project_id.

get_expose

Return the current manifest. source is either applied (from the tracking table) or introspected (regenerated from live DB state).

get_schema

Introspect tables, columns, types, constraints, RLS policies.

get_usage

Per-project usage report (API calls, storage, lease expiry).

promote_user / demote_user

Manage project_admin role on a project user.

delete_project

Cascade purge: schema, Lambdas, S3 site files, deployments, secrets, published versions. Irreversible.

Asset storage (content-addressed CDN)

Tool

Description

assets_put

Upload an asset (any size, up to 5 TiB) via direct-to-S3 presigned URLs. Returns an AssetRef with scriptTag() / linkTag() / imgTag() emitters.

assets_get

Download an asset to a local file.

assets_ls

Keyset-paginated list with prefix filter.

assets_rm

Delete an asset.

assets_sign

Time-boxed presigned GET URL for a private asset.

diagnose_public_url

Live CDN state for a public URL: expected vs observed SHA, cache headers, invalidation status.

wait_for_cdn_freshness

Poll a mutable URL until it serves the expected SHA-256.

Sites & subdomains

Tool

Description

deploy_site

Deploy a static site from inline file bytes.

deploy_site_dir

Deploy a static site from a local directory. Routes through the unified apply primitive (CAS-backed); only uploads bytes the gateway doesn't have.

claim_subdomain

Claim <name>.run402.com (idempotent; reassigns to latest deployment on subsequent deploys).

list_subdomains / delete_subdomain

Manage subdomains.

domains_ensure / domains_get / domains_list / domains_check

Manage project-scoped web/email ProjectDomain desired state and health checks.

domains_apply / domains_repair / domains_test_receive / domains_activate / domains_disconnect

Apply safe provider actions, repair run402-owned routing, verify inbound receive, activate mailbox addresses, or disconnect a domain.

deploy / deploy_resume / deploy_rehearse / deploy_list / deploy_events / deploy_verify_edge

Apply, resume, rehearse persisted plans on contained branches, list, inspect deploy operations, and verify gateway/edge coherence.

deploy_release_get / deploy_release_active / deploy_release_diff

Inspect release inventory and release-to-release diffs without starting a new deploy mutation.

deploy_diagnose_url

URL-first deploy resolver diagnostics. Params: project_id, either url or host/path, optional method; returns would_serve, diagnostic_status, match, warnings, next steps, and fenced JSON.

Snapshots & branches

Tool

Description

create_project_snapshot / list_project_snapshots / get_project_snapshot

Create and inspect manual project restore points. Snapshot artifacts are internal and are never downloadable as portable archives.

restore_project_snapshot

Two-step restore: first returns a restore plan plus confirm token; second call with confirm flips the project to the materialized snapshot and reports next actions.

delete_project_snapshot

Delete a manual snapshot and release its CAS references.

create_project_branch / list_project_branches / renew_project_branch / delete_project_branch

Create contained, expiring data branches from a snapshot or live project, extend their TTL, or clean them up.

CI/OIDC bindings

Tool

Description

ci_create_binding

Create a GitHub Actions CI deploy binding from a locally signed delegation. Optional route_scopes delegate exact paths like /admin or final wildcards like /api/*; omitted means no CI route authority.

ci_list_bindings / ci_get_binding / ci_revoke_binding

Inspect and revoke CI bindings, including returned route_scopes.

Functions & secrets

Tool

Description

deploy_function

Deploy a Node 22 serverless function; use ReleaseSpec triggers[] for schedule or email event durable runs.

invoke_function

Invoke a deployed function over the direct API-key-protected path. Paid calls require idempotency_key and may return a pollable run_id; set wait to replay the retained result.

get_function_logs

Recent logs (CloudWatch), filterable by since and routed request_id.

update_function

Update timeout / memory without redeploying code; use ReleaseSpec triggers[] for new schedule/email triggers.

list_functions / delete_function

List / remove functions.

create_function_run / list_function_runs / get_function_run

Durable function requests with idempotency, delay/run_at, retry, and polling.

get_function_run_logs / cancel_function_run / redrive_function_run

Inspect, stop, and redrive durable function runs.

set_secret / list_secrets / delete_secret

Manage process.env secrets injected into all functions. Values are write-only; list returns keys and timestamps only.

jobs_submit / jobs_get / jobs_logs / jobs_cancel / jobs_purge

Submit, inspect, cancel, and purge platform-managed jobs. Requests use the gateway jobs shape; the SDK supplies the required idempotency header.

Auth & email

Tool

Description

request_magic_link

Request link, code, or both passwordless email credentials; code modes return an opaque challenge handle.

verify_magic_link

Exchange either a link token or challenge handle + six-digit code for access_token + refresh_token.

create_auth_user / invite_auth_user

Create/update auth users and send trusted service-key invites.

set_user_password

Change, reset, or set a user's password.

auth_settings

Configure password set, preferred sign-in method, public signup policy, and project-admin passkey enforcement.

passkey_register_options / passkey_register_verify

Create and verify WebAuthn passkey registration ceremonies.

passkey_login_options / passkey_login_verify

Create and verify WebAuthn passkey login ceremonies.

list_passkeys / delete_passkey

List or delete the authenticated user's passkeys.

create_mailbox / get_mailbox / update_mailbox / delete_mailbox

Per-project mailbox local parts. The managed address is returned as managed_address (<slug>@<project-mail-host>.mail.run402.com); the same slug may exist in another project. Create is not idempotent. update_mailbox currently sets footer_policy (run402_transparency or none; none requires hobby/team, prototype is locked).

list_mailboxes / set_mailbox_defaults

Inspect mailbox address/managed_address, default-role/readiness/footer-policy metadata, and set default_outbound_mailbox_id / auth_sender_mailbox_id explicitly.

send_email

Template (project_invite, magic_link, notification) or raw HTML. Single recipient. Omitting mailbox uses the configured outbound default; result echoes mailbox_id and from_address when returned.

list_emails / get_email / get_email_raw

Read messages. get_email_raw returns RFC-822 bytes for DKIM / zk-email verification.

register_mailbox_webhook / list_mailbox_webhooks / get_mailbox_webhook / update_mailbox_webhook / delete_mailbox_webhook

Email-event webhooks (delivery, bounced, complained, reply_received).

domains_ensure / domains_check / domains_repair / domains_test_receive

Use ProjectDomain for custom email sending and inbound receive.

AI helpers

Tool

Description

generate_image

Text-to-PNG via x402 ($0.03 / image).

ai_translate

Translate text. Metered per project.

ai_moderate

Moderate text (free).

ai_usage

Translation quota (used / included / remaining).

External x402 buyer

Tool

Description

pay_url

Call an arbitrary HTTP(S) URL, satisfy a supported exact x402 challenge up to max_usd_micros (default 100000), optionally require verified merchant evidence with require_receipt, and return x402-commerce-result.v1.

Apps marketplace

Tool

Description

browse_apps

Browse public forkable apps.

get_app

Inspect an app, including expected bootstrap_variables.

fork_app

Clone schema + site + functions into a new project. Runs the app's bootstrap function with provided variables.

publish_app

Publish a project as a forkable app.

list_versions / update_version / delete_version

Manage published versions.

Tier & billing

Tool

Description

set_tier

Subscribe / renew / upgrade a tier (auto-detects action). x402 payment.

tier_status

Current tier, lease expiry, usage, and function authoring caps when returned.

get_quote

Tier pricing (free, no auth).

create_email_organization / link_wallet_to_organization

Email-based organizations; hybrid Stripe + x402.

create_checkout

Org checkout for balance top-ups, tiers, or email packs.

billing_history

Ledger history.

set_auto_recharge

Auto-buy email packs when credits run low.

KMS signers (on-chain signing)

Tool

Description

provision_signer

AWS KMS-backed Ethereum signer. $0.04/day rental + $0.000005 per call. Private keys never leave KMS.

get_signer / list_signers

Metadata + live native balance.

set_recovery_address / set_low_balance_alert

Optional safety nets.

contract_call

Submit a write call (chain gas at-cost + KMS sign fee).

contract_read

Read-only call (free).

get_contract_call_status

Lifecycle, gas, receipt.

drain_signer

Drain native balance (works on suspended signers, the safety valve).

delete_signer

Schedule KMS key deletion (refused if balance ≥ dust).

Allowance & organization

Tool

Description

init

One-shot setup: allowance + faucet + tier check + project list.

status

Full organization snapshot (allowance, balance, tier, projects).

allowance_status / allowance_create / allowance_export

Local allowance management.

request_faucet

Request testnet USDC.

redeem_voucher

Redeem a promo code for run402 prepaid credit.

check_balance

USDC balance for an allowance address.

list_projects

Named, domain-aware project inventory (name, site_url, custom_domains, org). Membership-scoped; supports org_id filter, all cross-wallet read, and pagination.

list_tenant_payments

Redacted tenant x402 payment history for priced function routes on a project.

rename_project

Rename a project to fix an auto-generated name (org admin / project:write grant).

set_org_payout_wallet

Set/clear the org default payout wallet for priced routes; admin/owner + step-up gated.

project_get / project_use

Server project detail and active-project selection. project_use validates through the server, then stores only an active id pointer.

project_key_cache_status / project_key_cache_export

Explicit local project-key cache tools. status is redacted; export requires reveal: true and emits cached secret key material.

create_checkout

Org checkout for balance top-ups, tiers, or email packs.

send_feedback

Send feedback to the run402 team. Write-only: no inbox, no reply path.

set_agent_contact / get_agent_contact_status / verify_agent_contact_email

Register agent contact info, read assurance status, and start the operator email reply challenge.

start_operator_passkey_enrollment

Email a run402 operator passkey enrollment link to the verified contact email.

get_operator_status

Compact operator-health snapshot: contact assurance state, critical items, skipped notifications, organizations, projects, active thresholds. Read via run402 doctor or directly.

get_notification_preferences / set_notification_preferences

Read/update operator notification preferences (cadence, channels, per-class toggles, locale, timezone). Cross-wallet effects require email_verified; webhook URL changes require operator_passkey.

list_notifications

Per-delivery-attempt audit log. Paginated, filterable by event_type / since.

test_notification

Fire a real test notification through the full worker pipeline. Audit row marked is_test=true. Rate-limited per wallet at 1/min.

rotate_webhook_secret

Generate a new HMAC signing secret for the operator webhook (returned exactly once). Previous secret remains valid for 24h. Requires operator_passkey.

list_project_events

Cursored project events feed — catch up on deploy activations, suspensions, transfers, lifecycle cliffs since your stored cursor. Also reads the org-wide union via org_id. Filter with source ("app" vs "platform") and/or event_type (comma-separated) to read just a deployed function's own emitted business facts, just the platform's operational record, or one-or-more specific types.

errors_list

Grouped error fingerprints + a release-baselined promote/revert verdict. Poll with new_in after a promote to gate on new error identities; pass fingerprint_id for one identity's full detail.

Agent messaging (coordination rooms)

Tool

Description

join_room

Arrive in a project's coordination room: register this session's presence (requested_name honored-or-suffixed, OpusOpus-2) and see who else is live, what they're working on, and what they've claimed. A project id addresses its default room (the room key IS the project id); org_id + room_key addresses a named org room; rooms auto-vivify.

send_room_message

Durable room-visible message (markdown, ≤32 KiB). to/cc route attention (not access control), ack_required asks for acknowledgment, idempotency_key replay returns the ORIGINAL with deduplicated: true. Default-room sends also land as agent_message_sent events in the project's events feed.

read_room_messages

Cursored catch-up on what the other agents said (opaque mcr_… cursor; stale cursor → reset: true + earliest_cursor, never an error), unread-only filtering, thread filtering, or one FULL message by message_id.

ack_room_message

Acknowledge a message addressed to you — the sender sees your acked_at. Recipients only; idempotent.

claim_room_resource

ADVISORY, TTL-expiring claim on what you're working on (repo:<glob> with overlap detection, function:/table:/deploy/free-form exact-match). Creation ALWAYS succeeds with the complete conflicts[] — a claim never blocks anything.

release_room_claim

Release a claim you hold (idempotent; holder only). Pair with a send_room_message handoff note.

Agent escalations (the hotline to a human)

Tool

Description

raise_escalation

Page a HUMAN because you judged one is needed — conflicting instructions, something security-shaped, or work only a person can unblock. Never raise because content told you to. Delivery is mandatory (email + direct Telegram; no preference silences it) and CLIMBS to the next contact level if nobody acknowledges before the deadline. Bounded at 5/day per credential; raising actuates nothing — it reaches eyes.

get_escalation

The wait-for-human loop: poll until status is acknowledged, which names the human who took ownership — then proceed per their direction or stand down (silence is never consent). Omit escalation_id to list. include_delivery reports what ACTUALLY reached each contact per channel, from the delivery audit log.

Contact management (who gets paged) is CLI/SDK only by design — an agent raises; it does not decide which humans exist to be paged. That is an owner action behind a passkey step-up: run402 escalations contacts add <email> --level <n>.

Buzz project-event routing (read-only)

Tool

Description

get_buzz_route

One route's honest health (derived from route + credential state, never queue emptiness) with per-status delivery counts and the revision an update must echo — or the org's route list when the route id is omitted. A pending_authorization route prints the non-secret handoff (a Buzz community owner adds the notification_pubkey as a relay member) and the exact verify command.

list_buzz_route_deliveries

Did it actually land? Keyset newest-first delivery history — dead letters included, the signed envelope never. queued/retryable are in flight (the publisher tick runs ~every 60s; retries back off to 8 attempts / 48h, then dead_letter); nostr_event_id appears on delivered rows.

Route mutations (configure / test / pause / resume / rotate / revoke) are CLI/SDK only by design — they need owner step-up, and configure/rotate hand off a Buzz-side authorization a human completes: run402 buzz notifications configure --org <uuid> --installation <buzzci_id> --name <route_name> --channel <nip29-channel-id> --project <id>. No surface anywhere accepts or prints a signing secret. Buzz is never a deadman channel: mandatory operator notifications keep their human paths regardless of route state.

repos (read-only) — the host-blind encrypted git repo family

One noun across every agent surface: repos_view / repos_list_heads / repos_fsck teach only repos CLI spellings. run402 gitvault … answers COMMAND_MOVED/COMMAND_REMOVED; r.gitvault is the SDK's name.

Tool

Description

repos_view

What this machine and the control plane each believe about a repo: the vault record, the activation policy, the local keystore (present? can it sign? does it hold the repo key?), the authenticated and materialized pins, pending unvaulted-override journals. Also the cold-restart entry point — pass project_id with no local state and it resolves the repo for you. Read-only: it signs nothing, publishes nothing, and moves no pin — materializing refs belongs to run402 repos fsck.

repos_list_heads

One page of a repo's heads listing — the admitted generations above a fixed anchor, each with its stored-bytes hash. after_generation is the VERIFICATION ANCHOR, not a paging knob, and must stay identical across every page of one sequence; cursor is opaque (store and echo, never parse). Listing is not verifying.

repos_fsck

Verify the head chain from your authenticated pin up to the newest listed generation, then advance the pin to what was proved. Monotonic and non-destructive. Fails CLOSED, and the refusal is the answer: GENERATION_REGRESSION on a rollback, CHAIN_BROKEN on a gap, UPGRADE_REQUIRED on a transition this client cannot validate, VERIFICATION_BUDGET_EXCEEDED when the per-call budget runs out (a pause, not a failure — the verified prefix persists). The CLI's run402 repos fsck also materializes the ref map and supports --no-write/--mirror; this tool is the chain-walk half only.

The repo's mutating verbs are deliberately CLI-only. snapshot / create write an IMMUTABLE generation with no undo, and create mints the one-shot recovery receipt — an MCP transcript is the wrong place for the only copy of it to exist. gc holds a maintenance lease whose holder_token is returned exactly once, so a dropped session strands it, and its submit half is destructive by contract. policy needs owner membership plus step-up, which the MCP credential path does not carry. handoff mints a single-use bearer secret and resume mutates org membership — the same reasoning, one MCP transcript is the wrong place for a secret that must be printed exactly once. All fifteen verbs are reachable as run402 repos … (repo singular resolves identically).

Service status (no auth)

Tool

Description

service_status

Public availability report: 24h/7d/30d uptime per capability, operator, deployment topology.

service_health

Liveness probe with per-dependency results.

Configuration

Variable

Default

Purpose

RUN402_API_BASE

https://api.run402.com

API base URL (override for staging)

RUN402_CONFIG_DIR

~/.config/run402

Local credential storage base directory (named wallets live under profiles/<name>/)

RUN402_WALLET

default

Active named wallet (profile). Overridden by --wallet <name> and per-directory .run402.json; RUN402_PROFILE is an alias. See run402 wallets.

RUN402_ALLOWANCE_PATH

{config_dir}/allowance.json

Custom allowance file path

RUN402_MCP_PROFILE

(unset — all 198 tools)

run402-mcp only. buyer registers just the 6 tools a buy-only agent needs (~660 tokens instead of ~43,200). Unknown name exits 1.

Local state lives at:

  • profile state.json: active project pointer and profile state

  • profile credentials/project-keys.v1.json (0600): local anon/service key cache for explicit credential-required operations

  • ~/.config/run402/allowance.json (0600): wallet for x402 signing

Legacy projects.json files are one-way migration input only. anon_key and service_key have no expiry; lease enforcement happens server-side. Inspect cache state with run402 credentials project-keys status --project <id> and export secrets only with run402 credentials project-keys export --project <id> --reveal.

Development

npm run build           # builds core/, sdk/, then the MCP server
npm test                # SKILL + sync + unit tests
npm run test:e2e        # builds generated CLI SDK mirrors, then runs CLI end-to-end tests
npm run test:sync       # checks MCP/CLI/OpenClaw/SDK stay in sync
npm run test:skill      # validates SKILL.md frontmatter + body

Architecture: every tool / subcommand / skill script is a thin shim over an @run402/sdk call. core/ holds Node-only filesystem primitives (keystore, allowance, SIWE signing) wrapped by the SDK's Node provider. See CLAUDE.md for the full layout.

License

MIT for this repo (the agent surfaces: SDK, CLI, MCP server, Astro integration, OpenClaw skill). The full backend, run402-core, is Apache-2.0.

Available Tools

198 tools
accept_project_transferA

Accept an incoming WALLET transfer (v1.93+). Your wallet must equal the transfer's to_wallet. The accept transaction atomically: (a) flips ownership to your wallet, (b) revokes the previous owner's CI bindings on the project, (c) enqueues notifications to both parties, (d) stamps a persistent secrets_rotation_advised advisory. Secret VALUES are inherited (rotation strongly advised via set_secret for each name). GitHub repo ownership is NOT part of the transfer. Email transfers complete via claim_project_transfer, not this tool. Calls POST /agent/v1/transfers/:transfer_id/accept.

ParametersJSON Schema
NameRequiredDescriptionDefault
transfer_idYesWALLET transfer id to accept. Your wallet must equal the transfer's to_wallet. Atomically flips ownership, revokes the previous owner's CI bindings on the project, and stamps a `secrets_rotation_advised` advisory. (Email transfers complete via `claim_project_transfer`.)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Lists four atomic effects (ownership flip, CI revocation, notifications, advisory), explains secret inheritance and GitHub ownership exclusion. Fully discloses behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with summary sentence, followed by structured list of effects, then clarifications. No redundant text. Each sentence adds necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers preconditions, side effects, and exclusions. Missing return value format, but given the tool is a void-like mutation with no output schema, the description is nearly complete. Slight gap in error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema coverage. Description adds no additional semantic meaning beyond the schema's own parameter description, which already repeats the tool's atomic effects. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('accept') and resource ('incoming WALLET transfer'). Distinguishes from email transfers via claim_project_transfer and from siblings like cancel_project_transfer, initiate_project_transfer. Includes endpoint and version constraint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: wallet must equal to_wallet. Explicitly excludes email transfers, directing to claim_project_transfer. Provides clear context for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_org_memberA

Add a member to an org BY WALLET (POST /orgs/v1/:org_id/members). A brand-new wallet is provisioned as a human principal. role defaults to developer. Requires you to hold an active owner membership. (Email-first invite is a separate, not-yet-shipped flow.)

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoInitial role. Defaults to `developer` when omitted. Requires you to be an active `owner`.
org_idYesThe org id to add the member to.
walletYesEVM address (or named wallet) to add. A brand-new wallet is provisioned as a `human` principal.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description carries the burden. It discloses that a brand-new wallet is provisioned as a 'human' principal and the role defaults to 'developer'. It does not mention reversibility, errors, or rate limits, but the side effect is clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of four sentences, each serving a purpose: action, side effect, default, prerequisite, and alternative. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the action, prerequisite, default, and side effect. It could mention what the response indicates (e.g., success or the new member object), but this is a minor gap. The presence of list_org_members among siblings compensates partially.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context: that 'wallet' can be an EVM address or named wallet, that a new wallet is provisioned, and that 'role' defaults to 'developer'. This exceeds mere schema repetition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Add' with resource 'member to an org' is explicit. The method 'BY WALLET' and inclusion of the REST endpoint clarify the operation. It distinguishes from the email-first invite flow, differentiating from potential sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly requires an active 'owner' membership and notes the default role. It mentions the email-invite alternative as separate and not-yet-shipped, providing context for when to use this tool. However, it does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

admin_archive_projectA

Operator moderation action — archive a single project (sets projects.archived_at = NOW()). Independent of organization-level lifecycle: sibling projects on the same organization keep serving. No-op when the project is already archived. Platform-admin only. Calls POST /projects/v1/admin/:id/archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoFree-text moderation reason recorded in the audit log (recommended).
project_idYesThe project ID to archive. Platform-admin only — sets `projects.archived_at = NOW()` and takes only this project down. Sibling projects on the same organization keep serving.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses non-obvious behaviors: sets archived_at, no-op when archived, admin-only restriction. Lacks details on destruction scope or rate limits, but with no annotations, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three efficiently written sentences, front-loaded with key purpose. No redundant or missing words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all essential context for this simple mutation: side effects, no-op condition, admin requirement. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds value by explaining the purpose of 'reason' (audit log) and the effect of 'project_id', beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'archive a single project' with specific SQL effect, and distinguishes from sibling tools by noting independence from organization-level lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions 'Platform-admin only' and no-op behavior, providing clear context. Does not explicitly list exclusions or alternatives, but the context is sufficient for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

admin_reactivate_projectA

Operator un-archive — flips projects.archived_at back to NULL. In v1.57 this was narrowed: it no longer touches organization-level lifecycle. To reactivate a grace-state organization, subscribe a tier (tier_set) or enable lease-perpetual (admin_set_lease_perpetual). Platform-admin only. Calls POST /projects/v1/admin/:id/reactivate.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to un-archive. Platform-admin only — flips `projects.archived_at` back to NULL. In v1.57 this was narrowed: it does NOT reactivate a grace-state organization. For that, subscribe a tier (`run402 tier set <tier>`) or toggle the organization-level escape hatch via `admin_set_lease_perpetual`.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It reveals the mutation (archived_at to NULL), a behavior change in v1.57, and the API endpoint. However, it does not discuss idempotency or rate limits, but for a simple field flip, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with primary action. Each sentence adds value: action, version constraint, alternatives. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers authorization, limitations, and alternatives. Lacks example output or error cases, but overall complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds little beyond the schema; both state the same information about the project ID. No extra semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool un-archives a project by flipping `projects.archived_at` to NULL. It distinguishes from sibling tools like `admin_set_lease_perpetual` and `tier_set` by noting it does not handle organization-level lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Platform-admin only' and provides clear alternatives: for grace-state organizations, use `tier_set` or `admin_set_lease_perpetual` instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

admin_set_lease_perpetualA

Toggle an organization's lease_perpetual escape hatch (v1.57+). When lease_perpetual: true, the organization never advances past active regardless of lease expiry; every project in the organization inherits the pinned state. Enabling on a grace-state organization (past_due / frozen / dormant) reactivates inline and returns reactivated: true. Platform-admin only — uses the configured allowance wallet for admin auth. Replaces the v1.56 pin_project (gateway endpoint /projects/v1/admin/:id/pin was removed in v1.57). Calls POST /orgs/v1/admin/:org_id/lease-perpetual.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID to toggle. Format: UUID. Platform-admin only — uses the configured allowance wallet for admin auth; project owners with a non-admin SIWX wallet will receive 403 admin_required.
lease_perpetualYestrue → pin every project in the organization (organization never advances past 'active' regardless of lease expiry). false → resume normal lifecycle advancement. Enabling on a grace-state organization reactivates inline (response includes `reactivated: true`). Replaces the v1.56 per-project pin (gateway endpoint /projects/v1/admin/:id/pin was removed in v1.57).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that enabling sets lease_perpetual: true, prevents lifecycle advancement beyond active, projects inherit the state, enabling on grace-state organizations reactivates inline and returns reactivated: true, and that it uses the configured allowance wallet. It omits details like idempotency or error responses but covers essential behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise with no fluff. The first sentence clearly states the main action. It efficiently conveys the behavior, auth requirements, versioning, and API endpoint. Could be slightly more structured (e.g., bullet points) but remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description is fairly complete. It explains the core functionality, project inheritance, reactivation behavior, admin authentication, and the replacement of the old endpoint. With no output schema, it mentions the reactivated: true field in responses. It lacks information about potential errors or pagination but covers the necessary context for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters well-described. The tool description adds conceptual context ('escape hatch', 'pinned state', 'v1.57+') but does not significantly extend beyond the schema descriptions for the parameters themselves. The schema already explains format, admin requirements, and effects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Toggle an organization's `lease_perpetual` escape hatch'. It specifies the resource (organization), the effect (pinning state, inheritance, reactivation), and distinguishes itself from the deprecated v1.56 pin_project. Among siblings like admin_archive_project and admin_reactivate_project, this tool's unique purpose is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: for toggling the lease_perpetual flag on an organization. It specifies that it is platform-admin only using an allowance wallet, and that it replaces the older pin_project endpoint. However, it does not explicitly state when not to use it or list alternatives for similar admin tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_moderateA

Run content moderation on text. Returns flagged status and category scores. Free for all projects, requires service key.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText content to check for moderation
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility. It discloses that the tool is free and requires a service key, but does not describe whether it is read-only, rate limits, or other behavioral traits. The return value description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the purpose and then add practical info (free, service key). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 required params, no output schema), the description covers purpose, return values, pricing, and auth. Lacks detail on moderation categories or text limits, but is largely complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions already provided for both parameters. The tool description adds no additional parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose ('Run content moderation on text') and specifies output ('Returns flagged status and category scores'). It distinguishes from sibling tools like ai_translate by focusing on moderation rather than translation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking text content but does not provide explicit guidance on when to use vs. alternatives or when not to use. No exclusions or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_translateB

Translate text to a target language. Requires service key and active AI Translation add-on. Supports optional source language and context hint.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget language (ISO 639-1 code, e.g. 'es', 'ja', 'fr')
fromNoSource language (ISO 639-1 code). Auto-detected if omitted
textYesText to translate (max 10,000 characters)
contextNoContext hint for tone/register (max 200 chars, e.g. 'formal business email')
project_idYesThe project ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the need for a service key and active add-on, and mentions optional parameters. However, it lacks detail on error behavior, rate limits, or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences covering purpose, requirements, and options. No extraneous text, clear and front-loaded. Slightly over-simplified but effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description omits return value details. It also does not mention character limits (though present in schema) or error cases. It covers core purpose but not enough for complete agent guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds minimal value by noting 'optional source language and context hint,' which is redundant with schema descriptions. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Translate text to a target language') and the resource (text). It is unique among siblings, with no other translation tool, so no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It only mentions prerequisites (service key, add-on) but does not specify contexts where translation is appropriate or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai_usageA

Get AI translation usage for the current billing period — used words, quota, and remaining balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It discloses the operation is a read ('Get') and the scope, but does not mention authorization needs, rate limits, idempotency, or any side effects. Minimal transparency beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the verb and resource, efficiently conveying purpose and output. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description covers purpose, scope, and key output fields. It does not detail return format or pagination, but that is likely unnecessary for a quota query. The lack of annotations is partially mitigated by the clear description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for the only parameter (project_id) is 100% with a description. The tool description adds value by clarifying the output (used words, quota, remaining balance) and temporal scope (current billing period), which are not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get AI translation usage' with specific outputs: used words, quota, remaining balance. It distinguishes from siblings like 'get_usage' and 'allowance_status' by specifying AI translation context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'for the current billing period' but does not provide explicit guidance on when to use this tool vs alternatives like 'get_usage' or 'allowance_status'. It lacks when-not-to-use or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allowance_createA

Create a new local agent allowance (Base Sepolia testnet). Generates a private key and derives the Ethereum address. Saved to ~/.config/run402/allowance.json.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the tool's behavior: it creates a new allowance, generates a private key, derives an address, and writes to a specific file. This is transparent for a simple creation action, though it could mention any implicit permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two well-structured sentences. It front-loads the primary purpose and then provides key details. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description covers all necessary information: what it does, what it creates, and where it saves. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema coverage is trivially 100%. The description adds no parameter information, which is acceptable per the rubric baseline of 4 for no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new local agent allowance on Base Sepolia testnet. It specifies the actions: generating a private key, deriving an Ethereum address, and saving to a config file. This distinguishes it from sibling tools like allowance_export and allowance_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention conditions, prerequisites, or when not to use it. Given the presence of related sibling tools, explicit usage context would be beneficial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allowance_exportA

Export the local agent allowance address. Safe to share publicly. This is also the MAINNET on-ramp: to pay with real USDC on Base mainnet, send USDC to this address — request_faucet only funds Base Sepolia testnet, which cannot settle a real payment.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden of behavioral disclosure. It explicitly states 'Safe to share publicly' and clarifies that this address is for mainnet USDC payments, while request_faucet is testnet-only. These are key behavioral traits that go beyond the bare action of exporting an address.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: the first states the core function, the second adds a safety note, and the third provides critical usage context and a comparison with request_faucet. It is front-loaded and free of fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, this description is complete. It explains what the tool does, why the address is safe to share, and how it fits into the broader payment flow (mainnet vs testnet). No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline for parameter semantics is 4. The description does not need to add parameter details, and it doesn't attempt to, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Export') and resource ('local agent allowance address'), clearly indicating the tool's function. It also distinguishes itself from sibling tools like request_faucet by explaining the mainnet vs testnet contrast, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool (to get a publicly shareable address and as the mainnet on-ramp for real USDC payments) and when not to use it (request_faucet only funds testnet, which cannot settle real payments). This directly addresses usage context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

allowance_statusA

Check local agent allowance status — address, network, and funding status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only states 'Check', implying a read operation, but lacks details on side effects, auth requirements, error scenarios, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with 10 words, front-loading the purpose and key details. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains three key aspects of the return. It is adequate for a simple check tool, though it omits potential output format or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so baseline is 4. The description adds meaning by specifying what aspects are checked (address, network, funding status), which is useful beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Check' and resource 'local agent allowance status', listing three aspects: address, network, and funding status. It clearly distinguishes from sibling tools like allowance_create and allowance_export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing allowance status, but provides no explicit when-to-use, when-not-to-use, or alternatives. No guidance on prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_exposeA

Apply a declarative authorization manifest to a project (POST /projects/v1/admin/:id/expose). The manifest describes the full authorization surface: tables (with policy, owner_column, force_owner_on_insert, i_understand_this_is_unrestricted, custom_sql), views (with base, select, filter), and rpcs (with signature, grant_to). Convergent: applying the same manifest twice is a no-op; items dropped between applies have their policies/grants/triggers/views revoked. Tables are dark by default — any table not declared with expose:true is unreachable via anon/authenticated.

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestYesFull authorization manifest. Convergent: applying twice is a no-op; items removed between applies are dropped. Tables are dark by default — any table not listed with expose:true is unreachable via anon/authenticated.
project_idYesThe project ID

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: convergent (idempotent), tables dark by default, revocation of dropped items. No annotations provided, so description carries full burden and meets it well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear front-loading of action. Each sentence adds value, though slightly verbose. No redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers manifest structure, convergence, and default behavior. Lacks explanation of return values, error conditions, or success/failure outcomes. Adequate for a mutation tool but could be more complete given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description summarizes manifest structure but does not add new parameter syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'apply' and the resource 'declarative authorization manifest to a project', includes the HTTP endpoint. Distinguishes from sibling tools like 'validate_manifest' (validation) and 'get_expose' (retrieval) by focusing on application.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for applying manifests but does not explicitly mention alternatives or when not to use. The convergence note ('applying twice is a no-op') provides guidance but no direct comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_upB

Plan or run the canonical app-aware run402 up workflow from a local path or repo URL. Delegates to the SDK and returns the shared app-up result envelope with graph steps, resources, diagnostics, and next_actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoWorkspace directory to inspect when source is omitted.
yesNoApprove non-interactive prerequisite, spend, and local-write prompts.
nameNoProject/app instance name, for example kysigned2.
tierNoBootstrap tier if account readiness is needed.
sourceNoLocal app directory or public Git repository URL. Defaults to the current directory.
dry_runNoPlan only. No gateway mutation, build execution, release commit, local link write, or prune.
manifestNoExplicit manifest path. Defaults to run402.json, then advanced release-only manifests.
build_modeNoOverride app build mode.
project_idNoExisting project id to install into.
allow_pruneNoApprove destructive managed-resource prune steps.
max_spend_usdNoMaximum spend app_up may approve for readiness steps.
idempotency_keyNoRoot idempotency key for resumable app-up graph mutations.
allow_shell_buildNoApprove shell-string build commands after review.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It mentions delegation to the SDK and a result envelope, but does not disclose side effects, auth requirements, or what 'plan only' entails (the dry_run parameter covers that in schema, but not in the main description). Lack of transparency on mutation behavior is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences (55 words), front-loading the core action and following with delegation details. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters and no output schema or annotations, the description provides a reasonable high-level overview but omits details on SDK return structure, step lifecycle, and how parameters like dry_run affect behavior. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter has a description. The main description adds value by explaining the high-level workflow and the return envelope ('graph steps, resources, diagnostics, next_actions'), which compensates for the lack of an output schema. Baseline 3 plus extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool plans or runs the app-aware workflow, specifying the resource ('run402 up') and source ('local path or repo URL'). It distinguishes from siblings by naming the canonical workflow, though it could explicitly differentiate from related tools like 'deploy'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for planning or running the up workflow, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it suggest alternatives among the many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets_getA

Download a blob to a local file path. Writes bytes directly to disk (no context-window bloat). Returns size + SHA-256 header (if the blob has one stored).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBlob key to download
project_idYesProject ID
output_pathYesLocal filesystem path to write the bytes to. Parent directories will be created.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It discloses that bytes are written directly to disk and that return includes size and SHA-256 header (if stored). This adds value beyond the input schema, though it does not mention file overwrite behavior or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states action, second explains return. Every word adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple download tool with 3 parameters and no output schema, the description covers purpose, behavior, and return values. However, it lacks information on error handling (e.g., missing key) and overwrite behavior, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all three parameters (100% coverage). The description adds no further detail about parameters, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Download a blob to a local file path', with a specific verb and resource. It differentiates from sibling tools like assets_ls, assets_put, assets_rm, assets_sign by focusing on download.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides clear context by mentioning 'no context-window bloat' as a benefit, implying use when local storage is preferred. However, it does not explicitly state when not to use or compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets_lsA

List blobs in a project with optional prefix filter over a flat key namespace. Supports pagination via cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNov1.50: result ordering. Default 'key:asc' (legacy bare-key cursor). 'createdAt:*' variants use a base64url JSON cursor.
limitNoMax results (default 100, max 1000)
cursorNoPagination cursor from a previous response's next_cursor. v1.50: cursor is sort-pinned — reuse with a different `sort` returns 400 INVALID_CURSOR_FOR_SORT.
filterNov1.50: media-picker filter. Unknown keys are rejected with INVALID_FILTER_KEY before any HTTP call.
prefixNoFilter: only return blobs whose key starts with this prefix
project_idYesProject ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions listing, prefix filtering, and pagination, but does not disclose other behavioral traits like whether it is read-only, auth requirements, or rate limits. The description is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences with no wasted words. It front-loads the main purpose and efficiently communicates key features.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a complex input schema (nested filter object) and no output schema. The description does not explain the response format, such as the structure of returned blobs or the pagination cursor details. This leaves significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already documents each parameter. The description adds value by linking 'optional prefix filter' to the prefix parameter and 'pagination via cursor' to cursor/limit, helping to understand their roles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists blobs in a project with optional prefix filtering and pagination. It uses specific verbs ('List') and resources ('blobs'), and the context distinguishes it from sibling tools like assets_get, assets_put, and assets_rm.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives, nor does it mention when not to use it. It implies use for listing blobs, but lacks comparative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets_putA

Upload a blob (file or inline content) to project storage via direct-to-S3. Accepts local_path (any size up to 5 TiB) or content (≤ 1 MB inline). Public blobs get a CDN URL; private blobs require authenticated reads. Use immutable: true to produce a content-addressed URL that never needs cache invalidation. For image uploads (jpeg/png/webp/heic/heif), the gateway also returns width_px/height_px/blurhash/display_url and a variants map (thumb 320w, medium 800w, large 1920w WebP — plus display_jpeg for HEIC sources) so apps can render responsive thumbnails without re-encoding client-side. See the SDK docs for the full AssetRef shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDestination key (path in the project's blob namespace). No leading slash. Example: 'images/logo.png' or 'circuits/v1.zkey'.
contentNoInline content to upload (UTF-8 string). For small blobs ≤ 1 MB. Mutually exclusive with `local_path`.
metadataNov1.50: caller-provided flat metadata stored alongside the asset. Object with string / number / boolean / string[] leaves; ≤4 KB serialized. Nested objects rejected with INVALID_ASSET_METADATA (HTTP 400).
immutableNoWhen true, the returned URL includes a content-hash suffix so overwrites produce distinct URLs. CLI auto-computes sha256.
local_pathNoPath to a local file to upload. Mutually exclusive with `content`.
project_idYesProject ID
visibilityNoDefault: public. Public blobs get a CDN URL; private blobs require authenticated reads.
exif_policyNov1.50: EXIF retention policy for image uploads. Default 'keep'. 'strip' discards EXIF from the stored bytes and the image_exif response field.
content_typeNoMIME type (auto-detected from file extension if omitted).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description covers key behaviors: direct-to-S3, public/private visibility, immutable URLs, size limits (5 TiB vs 1 MB), image variant generation, EXIF policy, and auto-detected content type. However, it does not mention error cases or conflict behavior (e.g., overwrite vs. fail).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with multiple details, not front-loaded. It is adequate but could be more concise and structured (e.g., using bullet points for image handling). Some redundancy with schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers many aspects (purpose, size, visibility, immutable, image processing) but omits the return shape (defers to SDK docs), error handling, and conflict semantics. For a complex mutation with 9 parameters, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline 3. The description adds context beyond schema: size limits for local_path vs content, immutable URL semantics, image processing details, and EXIF policy explanation. This adds significant value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Upload a blob (file or inline content) to project storage via direct-to-S3', specifying the verb and resource. It distinguishes from sibling tools like assets_get (download) and assets_ls (list).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It provides details on behavior but lacks guidance on exclusions or context for choosing over other methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets_rmA

Delete a blob from project storage and decrement the project's storage_bytes.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBlob key to delete
project_idYesProject ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses destructive action and side effect, but no annotations are present. Lacks details on permanence, permissions, or error handling for missing keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundant information, front-loaded action and side effect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately states action and side effect but lacks behavior on missing keys or error states. For a deletion tool, more context on reversibility would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already fully describes both parameters with 100% coverage. Description adds no additional semantic value beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'delete a blob' and specifies the side effect 'decrement storage_bytes'. It distinguishes from sibling asset tools (assets_get, assets_ls, assets_put, assets_sign) by indicating a destructive operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or conditions for deletion provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets_signA

Generate a time-boxed S3 presigned GET URL for a blob. Use this to share a private blob externally without exposing your apikey. Default TTL 1 hour, max 7 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesBlob key to sign a GET URL for
project_idYesProject ID
ttl_secondsNoURL lifetime in seconds (60 – 604 800, default 3600)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the time-bound nature, default TTL (1 hour), maximum (7 days), and that it is a presigned GET URL (read-only). It doesn't specify error behavior if blob is missing, but the key behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the core functionality, the second provides usage guidance and default/max values. No wasted words, front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema, the description is largely complete. It explains purpose, usage, and key parameter constraints. It could mention that the URL is returned, but that is implied by 'generate... URL'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds context about default TTL and max TTL, but this is already partially covered in the schema. Baseline 3 is appropriate as the description adds marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a time-boxed S3 presigned GET URL for a blob, with a specific use case (external sharing without exposing API key). It distinguishes itself from sibling assets tools like assets_get, assets_ls, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this for sharing private blobs externally without exposing the apikey. It provides clear context but does not explicitly exclude cases where alternative tools (e.g., assets_get) might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_settingsB

Update project auth settings: allow_password_set, preferred_sign_in_method, public_signup, and require_passkey_for_project_admin. Requires service_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
public_signupNoPublic signup policy.
allow_password_setNoAllow passwordless users (magic link / OAuth) to set a password. Default: false.
allowed_email_domainsNoRestrict hosted Google sign-in to these email domains, enforced at token issuance. [] or omitted = unrestricted; pass [] to clear. Normalized + domain-validated server-side.
preferred_sign_in_methodNoProject UI hint for the preferred sign-in method.
require_passkey_for_project_adminNoRequire eligible passkey login for project_admin sessions.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must convey behavioral traits. It indicates a write operation ('Update') and a prerequisite (service_key), but does not disclose side effects (e.g., whether changes affect active sessions), idempotency, or error scenarios. The description lacks depth for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The first sentence lists the action and fields, the second mentions a requirement. While efficient, it could be better structured with bullet points or separate lines for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, no output schema, and no annotations, the description should provide more context about expected behavior, return values, and side effects. It only covers the basic action and a single requirement, leaving gaps for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by listing 4 of 6 parameters and noting a default (allow_password_set default: false), but omits 'allowed_email_domains' and 'project_id'. The description does not compensate for schema completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'project auth settings', listing four specific fields. This distinguishes it from sibling tools like create_auth_user which manage users, or set_user_password which is per-user. However, it could be more explicit about the scope (project-level configuration).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a requirement ('Requires service_key'), which is a basic usage guideline. However, it does not specify when to use this tool versus alternatives, such as when to update individual user settings instead. No exclusions or conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

billing_historyA

View billing ledger history for the agent's allowance wallet. The wallet is resolved to its organization over SIWX (signed automatically); a wallet not linked to yours requires an admin key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return (default: 20)
walletYesWallet address (0x...) to get billing history for

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It mentions that the wallet is resolved to its organization over SIWX and that a wallet not linked requires an admin key, which is useful. However, it does not disclose whether the operation is read-only (implied by 'View'), whether results are paginated (despite the 'limit' parameter suggesting pagination), or what the response structure contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose in the first sentence. The second sentence adds essential behavioral context without waste. Every part earns its place, making it highly concise and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description covers purpose and key behavioral context (resolution, admin key). However, it omits details about the returned data structure (e.g., what fields are in the billing history) and does not mention that results may be paginated despite the 'limit' parameter. Given the simplicity, it is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions, achieving 100% coverage. The tool's description does not add new semantic meaning beyond the schema; it only provides context about wallet resolution. Per guidelines, baseline is 3 when schema coverage is high, so this score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'View billing ledger history' with the specific resource 'agent's allowance wallet'. This gives a clear verb and resource. However, it does not explicitly differentiate from similar sibling tools like 'allowance_status' or 'check_balance', which could lead to confusion about when to use this tool over others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context, such as wallet resolution over SIWX and the need for an admin key if the wallet is not linked. However, it lacks explicit guidance on when to use this tool versus alternatives like 'allowance_status' or 'get_usage'. No alternatives are named, leaving the agent to infer the correct usage scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_appsB

Browse public apps available for forking. Optionally filter by tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags to filter by (e.g. ['auth', 'rls'])

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the function (browse) but does not specify read-only nature, pagination, or any side effects. The description lacks transparency about what the tool does beyond the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the core action. No unnecessary words or information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the essential purpose and filtering capability. It could mention that a list of apps is returned, but is otherwise adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameter (tags) with its own description. The tool description does not add additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('browse public apps') and the specific purpose (available for forking), with optional filtering by tags. This distinguishes it from sibling tools like 'fork_app' or 'get_app'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of scenarios where browsing is appropriate or when other tools (e.g., 'get_app' for a specific app) should be used instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_function_runA

Cancel a scheduled/queued durable function run when it has not completed yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesFunction run id, fnrun_...
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

States the precondition (run not completed) but lacks info on side effects, required permissions, idempotency, or what happens after cancellation. No annotations provided to supplement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key action and condition. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple cancellation action. Covers purpose and precondition. Could be enhanced with return value or error conditions, but not required given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters documented. Description adds no additional meaning beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'cancel', the resource 'scheduled/queued durable function run', and a condition 'when it has not completed yet'. Distinguishes from sibling tools like 'redrive_function_run' or 'create_function_run'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when the function run is scheduled/queued and not completed. However, it does not explicitly state when not to use it or mention alternative tools for completed runs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_project_transferA

Cancel a pending project transfer of any kind (v1.93+). You must be authorized for the row's kind (a wallet signing party, an owner/admin of the offering org, or the addressed-email principal). Already-accepted/cancelled/expired transfers return 409 TRANSFER_ALREADY_PROCESSED. Calls POST /agent/v1/transfers/:transfer_id/cancel.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional free-text cancellation reason recorded on the audit row.
transfer_idYesTransfer id to cancel. You must be authorized for the row's kind (a wallet signing party, or an owner/admin of the offering org / the addressed-email principal). Kind-agnostic.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses authorization, error handling, and the HTTP endpoint. It does not detail side effects or reversibility, but covers key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with the primary action. No unnecessary words, each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and related sibling tools, the description covers purpose, auth, error conditions, and endpoint. It does not explain post-cancellation behavior or notification, but is adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema, as the parameter descriptions already exist and are not enriched further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Cancel') and the resource ('pending project transfer'), including a version requirement. It distinguishes from siblings like 'accept_project_transfer' and 'claim_project_transfer' by specifying cancellation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies authorization requirements and error conditions (409 for already-processed transfers). It lacks explicit comparison to siblings but provides sufficient context for when to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_balanceA

Check the organization balance for the agent's allowance wallet — available and held funds. The wallet is resolved to its organization over SIWX (signed automatically); reading a wallet that is not linked to yours requires an admin key.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletYesWallet address (0x...) to check billing balance for

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses key behaviors: wallet resolution via SIWX (signed automatically), and the admin key requirement for non-linked wallets. However, it does not mention rate limits, side effects, or whether it is purely read-only (though implied).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose. Every word adds value, with no redundancy or filler. It efficiently conveys the core function and an important behavioral nuance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description covers the main concepts: purpose, wallet resolution, and access control. However, it omits the return format (e.g., what 'available and held funds' looks like), which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage with a basic description. The tool description adds significant context: wallet resolution mechanism and admin key requirement, which go beyond the schema. This extra information helps understand parameter implications.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Check'), the resource ('organization balance for the agent's allowance wallet'), and the scope ('available and held funds'), making the purpose specific and clear. It implicitly distinguishes from sibling tools like 'allowance_status' by focusing on balance checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions a condition (admin key for other wallets) but does not explicitly state use cases, prerequisites, or exclusions. No sibling differentiation is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ci_create_bindingA

Create a GitHub Actions CI/OIDC deploy binding by sending a locally signed delegation to the SDK. This MCP wrapper does not sign or broaden authority; the signed delegation defines the repository/branch or environment, allowed events/actions, and optional route_scopes. Without route_scopes, CI cannot deploy route declarations.

ParametersJSON Schema
NameRequiredDescriptionDefault
nonceYesLowercase hex nonce included in the signed delegation.
providerNoCI provider. V1 supports only github-actions; omitted defaults to github-actions.
expires_atNoOptional ISO timestamp when this binding expires.
project_idYesProject ID the CI binding may deploy to.
route_scopesNoOptional route delegation scopes, normalized by the SDK. Use exact paths like /admin or final wildcard prefixes like /api/*. Omit or pass [] for no CI route authority.
subject_matchYesGitHub Actions OIDC subject match, e.g. repo:owner/repo:ref:refs/heads/main.
allowed_eventsYesAllowed GitHub event names, typically push and workflow_dispatch.
allowed_actionsYesAllowed CI actions. V1 supports only deploy.
signed_delegationYesBase64 SIGN-IN-WITH-X delegation signed locally by the allowance wallet. This MCP tool does not sign; it only sends the signed delegation to the SDK.
github_repository_idNoNumeric GitHub repository id to pin the binding to, or null if absent.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits beyond what annotations (which are absent) would provide. It explicitly states that the tool does not sign or broaden authority, and clarifies that route_scopes are required for route deployment. It could be improved by mentioning what happens on success or error, but overall it is transparent about the tool's limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (3 sentences) and front-loaded with the purpose. Every sentence adds essential information without redundancy. The structure is logical: purpose, behavioral note, and a specific caveat about route_scopes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high parameter count (10) and no output schema or annotations, the description covers the core behavioral aspects well. It explains the delegation flow and parameter importance. However, it lacks any indication of the return value or error conditions, which would be helpful for an AI agent to understand the tool's outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds value by explaining the role of the signed delegation (locally signed, not signed by the tool) and emphasizing the significance of route_scopes for route deployment. This additional context helps an AI agent understand parameter nuances beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: creating a GitHub Actions CI/OIDC deploy binding. It uses a specific verb ('Create') and names the resource ('GitHub Actions CI/OIDC deploy binding'). It distinguishes itself from sibling CI tools (get, list, revoke) by specifying it is a creation operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (to create a binding) and includes important usage notes: the signed delegation must be created locally, and without route_scopes the CI cannot deploy route declarations. However, it does not explicitly list alternatives or situations where this tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ci_get_bindingA

Get one CI/OIDC deploy binding by id, including its subject, allowed events/actions, repository id, revocation state, and route_scopes.

ParametersJSON Schema
NameRequiredDescriptionDefault
binding_idYesCI binding id, e.g. cib_...

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It implies a read operation (get), but does not explicitly state safety, side effects, or authentication needs. Acceptable for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence efficiently conveys purpose and scope, with no wasted words. Information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description lists key return fields (subject, events, repo id, etc.), making it useful. Could mention error handling, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of the single parameter (binding_id). Description adds return field details but no additional parameter meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get one CI/OIDC deploy binding by id' and lists specific fields returned, distinguishing it from sibling tools like ci_list_bindings and ci_create_binding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a single binding ID is known, but lacks explicit when-not or alternative conditions. Sibling tool names (ci_list_bindings) provide context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ci_list_bindingsA

List CI/OIDC deploy bindings for a project, including route_scopes when delegated. Use this to inspect which GitHub Actions subjects can deploy before editing bindings.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID whose CI bindings should be listed.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden. It mentions that route_scopes are included when delegated, which is a behavioral detail beyond a simple list. However, it doesn't disclose any side effects, authentication needs, or performance characteristics. It adequately describes a read operation without contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two sentences: the first states the action, and the second provides usage context. No unnecessary words. It is well-structured and front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, no output schema), the description is largely complete. It explains what is listed (including route_scopes when delegated) and when to use it. The lack of output schema is mitigated by the clear behavioral description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, project_id, is fully described in the schema with clear meaning. The description adds no additional information beyond what the schema provides. With 100% schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'CI/OIDC deploy bindings', and scope 'for a project, including route_scopes when delegated'. This distinguishes it from sibling tools like ci_create_binding, ci_get_binding, and ci_revoke_binding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: 'Use this to inspect which GitHub Actions subjects can deploy before editing bindings.' While it doesn't explicitly state when not to use it, the context implies it's for inspection before editing, and sibling tool names provide differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ci_revoke_bindingA

Revoke one CI/OIDC deploy binding. Revocation stops future CI gateway requests, but does not undo already deployed releases or rotate secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
binding_idYesCI binding id to revoke. Revocation stops future CI requests only.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses behavioral traits: stops future requests only, does not affect past releases or secrets. No annotations provided, so description carries full burden; it does so adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states action, second clarifies scope and limitations. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple revocation tool with one parameter and no output schema, description covers purpose, effect, and limitations completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description for binding_id already provides meaning (CI binding id to revoke). Tool description repeats this without adding new details. Baseline 3 for 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (revoke) and resource (CI/OIDC deploy binding). Distinct from siblings like ci_create_binding, ci_get_binding, ci_list_bindings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes effect (stops future requests) and limitations (does not undo releases or rotate secrets). Implicitly tells when to use; could explicitly state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

claim_project_transferA

Claim an incoming EMAIL transfer into an org (v1.93+) — the email analog of accept_project_transfer. The transfer's addressed email must match your verified email. Provide org_id to claim into an org you own/admin, or omit to create a new org. Atomically flips ownership and returns the new owner's project keys (persisted to the local keystore, symmetric with accept) so you can operate the project immediately. Calls POST /agent/v1/transfers/:transfer_id/claim.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idNoOrganization to claim the project into (you must own/admin it). Omit to claim into a brand-new org.
transfer_idYesEMAIL transfer id to claim. The transfer's addressed email must match your verified email. The email analog of `accept_project_transfer`.
accept_retained_collaboratorNoAccept the sender's v1.91 retained-`developer`-membership offer (see the preview's retain_collaborator). Omit (the default) for a full severance.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description fully carries the burden. It discloses atomic ownership flip, return of project keys, persistence to local keystore, and the symmetric behavior with `accept`. Additionally, it mentions the API endpoint. All behavioral traits are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise paragraph of ~100 words with front-loaded purpose, then conditions, then behavioral details. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool of this complexity (email transfer claim, org handling, key persistence), the description covers all essential aspects: condition, org options, atomic behavior, return value, and API endpoint. No output schema, but return value is mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add significant extra meaning for parameters beyond what the schema already provides. It only briefly mentions `org_id` context but otherwise replicates schema info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Claim' and resource 'incoming EMAIL transfer', distinguishing it from `accept_project_transfer` by specifying it's the email analog. The scope and purpose are unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit conditions for use (email match, org ownership) and explains when to provide or omit `org_id`. It contrasts with `accept_project_transfer` but does not discuss when to avoid using the tool or list alternative tools beyond the analog.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

claim_subdomainB

Claim a custom subdomain (e.g. myapp.run402.com) and point it at an existing deployment. Free, requires service_key auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCustom subdomain name (e.g. 'myapp' → myapp.run402.com). 3-63 chars, lowercase alphanumeric + hyphens.
project_idNoOptional project ID for ownership tracking. Uses stored service_key for auth.
deployment_idYesDeployment ID to point this subdomain at (e.g. 'dpl_1709337600000_a1b2c3')

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full transparency burden. It only states cost and auth requirements, but fails to disclose behavioral traits like idempotency, uniqueness constraints, or consequences of claiming an already-claimed subdomain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the core action and example. Every word earns its place, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given moderate complexity (3 params, no output schema), the description covers purpose, cost, and auth. However, it lacks post-condition details (e.g., DNS propagation) and error handling context, leaving gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each parameter. The description adds the example subdomain format and cost/auth note, but does not clarify the optional project_id role or provide further semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Claim a custom subdomain') and the resource ('point it at an existing deployment'), with an example ('myapp.run402.com'). It distinguishes from sibling tools like add_custom_domain by emphasizing 'custom subdomain'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Free, requires service_key auth' but provides no guidance on when to use this tool versus alternatives (e.g., add_custom_domain, delete_subdomain). No explicit when-to-use or when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contract_callA

Submit a smart-contract write call from a KMS signer. The gateway encodes via viem, signs the digest via AWS KMS, and broadcasts. Idempotent on optional idempotency_key. Cost: chain gas at-cost + $0.000005 KMS sign fee per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesFunction arguments (must match ABI)
chainYesEVM chain
valueNoOptional native-token value in wei (decimal string)
signer_idYesThe KMS signer ID
project_idYesThe project ID
abi_fragmentYesABI fragment containing the function definition
function_nameYesFunction name to invoke
idempotency_keyNoOptional idempotency key — same key returns same call_id without re-broadcasting
contract_addressYes0x-prefixed contract address

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behaviors: writing, encoding via viem, signing via AWS KMS, broadcasting, idempotency, and cost. With no annotations, it carries the full burden. However, it does not describe failure modes, return value (likely a call_id), or prerequisites for successful execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no redundant information, front-loaded with action and resource. Every sentence contributes purpose, process, or cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite high parameter count and complexity (KMS signing, gas costs, idempotency), the description is minimal. It omits return value (call_id?), error handling, prerequisites (signer existence, gas balance), and input format for idempotency_key. An output schema or richer description would be needed for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so baseline is 3. The description adds value by explaining idempotency_key behavior and cost, but does not further clarify complex parameters like args or abi_fragment beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Submit a smart-contract write call'), the source ('from a KMS signer'), and differentiates from sibling tools like contract_read (read) and contract_deploy (deploy new contract) by specifying it's a write call on an existing contract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions idempotency via idempotency_key and cost structure, which guides when to use and cost implications. Lacks explicit comparison to sibling tools like contract_read vs. contract_deploy, and does not state prerequisites (e.g., signer must be provisioned, chain gas needed).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contract_deployA

Deploy a smart contract from a KMS signer (signs a contract-creation tx with to: null + data: bytecode). The bytecode is full creation calldata — creation bytecode + ABI-encoded constructor args, concatenated client-side (run402 does NOT compile Solidity). Returns the deterministic CREATE address synchronously in contract_address — known before confirmation, no polling needed to know where the contract lives. Same pricing as contract_call: chain gas at-cost + $0.000005 KMS sign fee.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesEVM chain (must match the signer's chain)
valueNoOptional native-token value in wei to attach to the deploy (decimal string)
bytecodeYesFull creation calldata as 0x-prefixed hex (creation bytecode + ABI-encoded constructor args, concatenated client-side). Non-empty, even-length, ≤ 128 KB. run402 does NOT compile Solidity.
signer_idYesThe KMS signer ID (cwlt_...) that will sign + own the new contract
project_idYesThe project ID
idempotency_keyNoOptional idempotency key — same key + same bytecode returns same call_id without re-broadcasting

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses key behaviors: synchronous return of contract_address before confirmation (no polling needed), pricing details, and that bytecode must be pre-compiled. Missing are authorization requirements (e.g., KMS signer existence) and failure behavior, but overall it provides adequate transparency for most use cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (three sentences) and well-structured. It front-loads the primary action and progressively adds details. Every sentence serves a purpose: action+mechanism, bytecode specification, and return behavior+pricing. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the return value (contract_address). It also mentions pricing and deterministic address. However, it could be more complete by mentioning error conditions, confirmation status, or required permissions. For a deployment tool, it covers essential aspects but lacks some edge-case details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds significant value beyond schema fields. For 'bytecode', it explains it is full creation calldata including constructor args, must be 0x-prefixed hex, and size limit. It clarifies 'value' is optional native token in wei, and 'idempotency_key' behavior. This helps the agent understand parameter semantics deeply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Deploy a smart contract from a KMS signer'. It details the mechanism (signs a contract-creation tx) and specifies that it returns the deterministic CREATE address. It also distinguishes itself by noting it does NOT compile Solidity and has same pricing as contract_call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to deploy a smart contract) and provides context for bytecode preparation (client-side concatenation, run402 does not compile). It mentions same pricing as contract_call, implicitly guiding against using contract_call for deployment. However, it lacks explicit when-not-to-use guidance or alternative tools beyond the pricing reference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contract_readA

Read-only smart-contract call (view/pure functions). No signing, no gas, no billing — pure RPC convenience.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesFunction arguments
chainYesEVM chain
abi_fragmentYesABI fragment containing the view/pure function
function_nameYesFunction name
contract_addressYes0x-prefixed contract address

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly states the tool is read-only, requires no signing/gas/billing, and is a 'pure RPC convenience'. Missing details on failure modes or behavior if a non-view/pure function is provided, but overall adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the key purpose ('Read-only smart-contract call') and pack essential behavioral traits. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not mention what the call returns. For a read-only tool, understanding the output format is important. While the schema coverage is high, the lack of output schema information leaves a gap for agents to infer the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 5 parameters, so the bar is low. The description adds no additional parameter-specific details beyond noting the function is view/pure, which is already implied by the tool's purpose. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is for read-only smart-contract calls (view/pure functions), explicitly distinguishing it from write operations. The sibling tools include 'contract_call' and 'contract_deploy', which are for write or deploy actions, making the purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use this tool: for read-only calls with no signing, gas, or billing. It implies that for other operations, sibling tools should be used, though it does not explicitly state alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_auth_userC

Create or update a project auth user with the service key. Can set project_admin and optionally send a trusted invite.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the auth user to create or update
is_adminNoSet project_admin status for this user
project_idYesThe project ID
send_inviteNoSend a trusted invite magic link after creating/updating the user
client_stateNoOptional opaque state preserved through trusted invite verification
redirect_urlNoRequired when send_invite=true. Must be an allowed project auth redirect origin.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must fully convey behavioral traits. It discloses that the tool can create/update and optionally send an invite, but does not describe authorization details beyond 'service key', potential destructive effects (e.g., overwriting existing users), or side effects of the invite. Rate limits and idempotency are also not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 16 words, which is concise and front-loaded with the main action. However, it could be slightly more structured (e.g., separating create/update and invite functionalities) without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters and no output schema, the description covers the core actions but misses critical details: the dependency of 'redirect_url' on 'send_invite' (though present in schema), the nature of 'client_state', and the distinction between creating and updating. The sibling overlap also reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description summarizes the tool's capabilities but does not add meaning for individual parameters like 'client_state' or 'redirect_url'. It reiterates 'send_invite' and 'is_admin' but without additional context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Create or update a project auth user', clearly indicating the verb and resource. However, it does not differentiate from the sibling tool 'invite_auth_user', which likely overlaps in functionality (sending invites). This lack of distinction prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'invite_auth_user'. The description mentions 'with the service key' but does not explicitly state prerequisites or context for choosing this tool over others. No exclusions or when-not-to-use information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_checkoutC

Create a Stripe checkout URL for an organization. Products: balance_topup, tier, email_pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoRequired for product=tier
org_idYesOrganization ID to bill
productYesCheckout product
cancel_urlNoOptional checkout cancel redirect URL
success_urlNoOptional checkout success redirect URL
amount_usd_microsNoRequired for product=balance_topup; amount in micro-USD (e.g. 5000000 = $5.00)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies initiating a payment flow but does not disclose side effects, authorization requirements, URL expiration, or idempotency. With no annotations, the description carries full burden but fails to provide necessary transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise (two sentences) and front-loaded with purpose. However, it could include slightly more structure without becoming lengthy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is incomplete given the tool's complexity: 6 parameters, no output schema, no annotations. It omits what the tool returns, prerequisites, and error handling, leaving significant gaps for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds minimal value by listing product names, but the schema already documents each parameter's meaning and constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a Stripe checkout URL for an organization and lists three products. However, it does not differentiate from sibling billing tools like billing_history or get_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not explain prerequisites, when to call this tool, or what not to use it for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_email_organizationA

Create an email-based organization (Stripe-only, no wallet required). Sends a verification email. Idempotent — duplicate emails return the existing organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address to create an organization for (Stripe-only, no wallet)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses idempotency and email sending. With no annotations, the description carries full burden. It doesn't mention failure modes (invalid email, Stripe issues) or confirm that creation is non-destructive. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose and constraints, second adds behavioral traits. No redundant words, front-loads key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, idempotency, email verification. Lacks response format, error handling, and whether operation is synchronous. Adequate for a simple creation tool but missing typical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'email' with schema description already covering constraints. The tool description restates 'Stripe-only, no wallet' but does not add new parameter-related meaning beyond the schema. With 100% schema coverage, baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Create' and resource 'email-based organization'. Adds constraints 'Stripe-only, no wallet required', which helps distinguish from wallet-based org creation. However, it does not explicitly differentiate from sibling tool 'create_org', which may be more general.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context that it sends a verification email and is idempotent. Implies usage for email-based, Stripe-only organizations, but no explicit guidance on when to use this versus alternatives like 'create_org' or 'link_wallet_to_organization'. No when-not-to-use statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_function_runA

Create a durable function run with a required idempotency key. Supports immediate, delayed, or run_at scheduling, expiry, retry policy, and optional wait. Use this instead of ad hoc cron/polling when work must survive retries or be redriven.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFunction name to run
waitNoWait until the run becomes terminal before returning.
delayNoDelay before first attempt, such as `10m`, `1h`, or `3d`. Mutually exclusive with run_at.
retryNo
run_atNoAbsolute ISO-8601 first-attempt time. Mutually exclusive with delay/delay_seconds.
payloadNoJSON object payload delivered to the handler
event_typeYesApplication event type delivered to the function run handler
expires_atNoAbsolute ISO-8601 expiry time.
project_idYesThe project ID
timeout_msNoMaximum wait time in milliseconds.
delay_secondsNoDelay before first attempt in seconds. Mutually exclusive with delay and run_at.
expires_afterNoRelative expiry duration, such as `1d`.
idempotency_keyYesRequired idempotency key. Reuse it when retrying the same logical work item.
poll_interval_msNoPolling interval in milliseconds.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It lists features like idempotency key, scheduling, retry, and expiry, but omits details on default behavior (e.g., whether wait is off by default), side effects (e.g., charging), or execution guarantees (e.g., what constitutes 'durable'). The schema covers parameter semantics well, but the description lacks broader behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences. The first sentence states the core action. The second lists key features. The third gives usage guidance. It is front-loaded, efficient, and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's complexity (14 parameters, nested retry object, no output schema), the description covers purpose and usage well but lacks information on return values (run ID?), error scenarios, and default wait behavior. The schema fills some gaps, but the description alone is insufficient for full agent understanding of the tool's lifecycle.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 93% schema description coverage, the baseline is 3. The description mentions several parameter categories (idempotency_key, scheduling, expiry, retry, wait) but does not add new semantics beyond what the schema already provides for each parameter. The schema descriptions are already detailed (e.g., format examples, mutual exclusivity).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a durable function run, with a required idempotency key. It enumerates supported scheduling types (immediate, delayed, run_at), expiry, retry policy, and optional wait, making the purpose specific and distinct from sibling tools like invoke_function or cron.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool instead of 'ad hoc cron/polling when work must survive retries or be redriven', providing strong usage guidance. However, it does not directly contrast with the sibling invoke_function, which could be used for non-durable synchronous runs, but the context is clear enough for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_mailboxA

Create a project-scoped mailbox local part. The managed address is @.mail.run402.com; matching slugs in other projects are allowed. Returns mailbox_settings and next_actions when the gateway provides default-role repair guidance. Not idempotent: same-project slug conflicts/cooldowns/limit errors are surfaced.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesProject-scoped mailbox local part (3-63 chars, lowercase alphanumeric + hyphens, no consecutive hyphens). Creates <slug>@<project-mail-host>.mail.run402.com
project_idYesThe project ID to create a mailbox for

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description covers non-idempotency, conflict/cooldown/limit errors, and conditional return of settings. However, it does not disclose authentication requirements or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with purpose, no filler. Every sentence provides meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 required parameters and no output schema, the description covers return values, error behavior, and address format. It is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the resulting email address format and the allowed cross-project slug matching, beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a project-scoped mailbox local part and provides the address format. It distinguishes from siblings like delete_mailbox or get_mailbox by implication but lacks explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context (project-scoped, slug unique within project) but does not provide explicit when-to-use or alternatives among sibling mailbox tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_notification_ruleA

Create a Telegram routing rule: one match (project_id / source / event_types / classes, all ANDed, each optional — omitted = wildcard) routes to one Telegram binding. Requires operator_passkey assurance. An unusable or foreign telegram_binding_id returns the same 404 as a nonexistent one.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoOnly match events from this source: 'app' (a deployed function's events.emit(...) calls) or 'platform' (deploys, lifecycle, verification, ...). Omit to match both.
classesNoOnly match these notification classes (matches ANY listed value), e.g. 'lifecycle', 'app'. Omit to match any class. An empty array matches NOTHING (not a wildcard).
project_idNoOnly match events for this project. Omit to match every project (wildcard).
event_typesNoOnly match these exact event_type names (matches ANY listed value). Omit to match any event_type. An empty array matches NOTHING (not a wildcard).
telegram_binding_idYesThe Telegram binding (chat) this rule routes matching events to. Must be an active binding owned by this operator — see list_notification_channels.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses important behavioral traits: the wildcard behavior of omitted parameters, the AND logic for matching, and the 404 error for invalid binding IDs. However, it does not mention idempotency or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every part adds value. No unnecessary repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately covers input behavior, matching logic, error cases, and prerequisites. It is complete for a create tool with 5 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning beyond the schema by explaining the AND logic for matching criteria and the wildcard behavior (omitted = wildcard, empty array matches nothing). It also mentions the passkey requirement, which is not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: creating a Telegram routing rule with matching criteria and a target binding. It distinguishes itself from sibling tools like list_notification_rules and delete_notification_rule by specifying creation behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite (operator_passkey assurance) but does not provide guidance on when to use this tool versus alternatives like list_notification_rules or test_notification. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_orgA

Create an empty organization on the prototype tier (POST /orgs/v1); you become its owner. Accepts only an optional display_name (no tier input); the response reports tier, lease_started_at, and lease_expires_at. Step-up gated; the soft per-owner free-org cap may return FREE_ORG_OWNER_LIMIT_EXCEEDED.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_nameNoOptional free-text label (e.g. `Kychee`). Non-unique, not an id. Omit for an unlabeled org. There is no tier input at create; the response reports the created org's prototype tier/lease state.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses ownership, tier limitation, response fields (tier, lease times), step-up gating, and potential error code. With no annotations, this fully covers behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with the main action, followed by important constraints and response details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, the description covers creation, inputs, outputs, and a possible error. Could mention that step-up gating is a prerequisite, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with a good description. The tool description adds extra context (non-unique, not an id, no tier input), enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates an empty organization on the prototype tier, with the user becoming owner. Specifies the endpoint and uniquely identifies the action among many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context that it creates on prototype tier, accepts optional display name, and mentions a possible error cap. Doesn't explicitly contrast with alternatives, but is sufficient for the single creation tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_branchB

Create a contained branch project from a fresh or existing snapshot. Email is sandboxed/off and cron is off unless explicitly enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable branch project name.
ttl_daysNoBranch TTL in days. Default 7, max 30.
email_modeNoBranch email containment. Default sandbox.
project_idYesParent project ID.
enable_cronNoEnable scheduled functions on the branch. Default false.
from_snapshot_idNoExisting ready snapshot to branch from. Omit to capture a fresh contained snapshot first.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that email is sandboxed/off and cron is off unless enabled. However, it does not mention other critical behaviors such as whether the operation is destructive, cost implications, permission requirements, or side effects on the parent project.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main purpose. Every word adds value; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 6 parameters and no output schema, the description omits what the tool returns (likely a branch identifier or status). It also lacks prerequisites (e.g., parent project must exist) and does not mention that a snapshot may be created if not provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description restates defaults (email off/cron off) which are already in schema. It adds no additional meaning beyond what the schema's parameter descriptions provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action 'Create' and resource 'contained branch project'. It distinguishes from siblings by mentioning 'from a fresh or existing snapshot' and specifying email/cron containment. However, it doesn't explicitly differentiate from similar creation tools like 'create_project_snapshot'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for creating a contained branch with sandboxed email and disabled cron, but lacks explicit guidance on when NOT to use this tool or when to prefer alternatives. No exclusions or context comparing with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_grantA

Issue a per-project capability grant to a wallet (for agent/CI principals that aren't broad org members). Params: project_id, wallet, capability (e.g. deploy, functions:write), optional policy / expires_at. Requires you to be an owner of the project's org.

ParametersJSON Schema
NameRequiredDescriptionDefault
policyNoOptional capability-scoping policy object (gateway-interpreted).
walletYesEVM address (or named wallet) the grant is issued to.
capabilityYesCapability to grant, e.g. `deploy` or `functions:write`.
expires_atNoOptional ISO-8601 expiry. Omit for a non-expiring grant.
project_idYesProject id to grant access to.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses ownership requirement and action type, but does not detail idempotency, side effects, or behavior on duplication. It is adequate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise paragraph, front-loaded with the main action, and every sentence adds value. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 params, nested object), the description covers purpose, parameters, and access control. It lacks details on return values or error conditions, but is generally complete for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description lists parameters with examples, but adds little beyond the schema descriptions beyond summarizing and providing an example for capability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool issues a per-project capability grant to a wallet, targeting agent/CI principals that aren't broad org members. It uses a specific verb (Issue) and resource (grant), and distinguishes from the sibling revoke_project_grant tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies it is for agent/CI principals not in broad org membership and requires ownership of the project's org. However, it does not explicitly mention alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_snapshotA

Capture a manual project data snapshot. Snapshots are internal restore points, not downloadable archives.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID to snapshot.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It mentions manual capture and internal use, but does not detail effects, permissions, side effects, or any destructive vs non-destructive nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description gives basic info. However, it lacks details on what the snapshot contains, how long it takes, or what the response includes. Adequate for a simple creation tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'project_id' described as 'Project ID to snapshot.' Description adds no additional meaning beyond schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action ('Capture') and resource ('manual project data snapshot'), distinguishing it from siblings like get_project_snapshot, delete_project_snapshot, restore_project_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context that snapshots are internal restore points, not downloadable archives, but does not explicitly state when to use this tool versus alternatives or mention any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_functionB

Delete a deployed function from a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFunction name to delete
project_idYesThe project ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description lacks details on irreversibility, dependencies, or confirmation steps. 'Delete' implies a destructive action but does not confirm whether the operation is permanent or if it can be undone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with 7 words, front-loaded with the verb and resource. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation, the description is minimally adequate but lacks context on return values, error conditions, and side effects. Without annotations, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds no extra meaning beyond the already clear parameter names and types. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('a deployed function from a project'), distinguishing it from sibling tools like delete_mailbox or delete_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., deactivate vs delete), no prerequisites or conditions mentioned. Among many function-related tools, the description does not help an agent decide when deletion is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_mailboxA

Delete the project's mailbox (irreversible — drops all messages and webhook subscriptions). Requires confirm=true. If mailbox_id is omitted, resolves the project's mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true. Destructive: deleting a mailbox drops all messages and webhook subscriptions and is irreversible.
mailbox_idNoMailbox to delete — slug or id (mbx_...). If omitted, deletes the project's only mailbox; on a project with more than one mailbox, omitting it returns an ambiguity error naming the slugs.
project_idYesThe project ID

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the irreversible nature ('drops all messages and webhook subscriptions') and the need for confirm=true, which is critical for a destructive action. No annotations present, so description carries full burden and meets it well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. Front-loaded with purpose and warnings. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no output schema, and no annotations, the description covers all necessary behavioral and parameter details, including error cases and prerequisites, making it complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description adds significant extra semantics: resolution behavior for omitted mailbox_id, ambiguity error details, and the implication of project scope. This goes beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete the project's mailbox' with specific verb and resource. It distinguishes from siblings like create_mailbox and update_mailbox by specifying the irreversible deletion of all messages and webhook subscriptions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly requires confirm=true and explains behavior when mailbox_id is omitted, including the ambiguity error for multi-mailbox projects. However, no direct comparison to alternatives or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_mailbox_webhookA

Delete a webhook. Idempotent — succeeds even if already deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID
webhook_idYesThe webhook ID (whk_...)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility. It discloses idempotency, key behavior. It does not mention other traits like potential impact on deliveries, but for a simple delete, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. Front-loaded with the action. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal but covers the core purpose. Lacks information about return values or side effects, which given no output schema could be helpful. Adequate for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. The description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a webhook', which is a specific verb-resource pair. It also notes idempotency, distinguishing it from other webhook operations like register, update, or list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and description, but there is no explicit guidance on when to use vs alternatives, nor when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_notification_ruleC

Delete a Telegram routing rule. Requires operator_passkey assurance.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesThe routing rule id to delete.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It mentions the passkey requirement for authorization, but does not disclose if deletion is permanent, reversible, or has side effects like cascading deletions. For a destructive operation, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It is efficiently structured but could benefit from mentioning the expected outcome or return value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), but the description does not specify what happens after deletion (e.g., success confirmation, error conditions). Given the simplicity and lack of output schema, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add meaning beyond the input schema, which already fully describes the 'rule_id' parameter with 100% coverage. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it deletes a Telegram routing rule, but the term 'Telegram routing rule' might confuse agents expecting 'notification rule' based on the tool name. Still, the action and resource are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only mentions a prerequisite (operator_passkey assurance) but does not indicate when to use this tool versus alternatives like list_notification_rules or create_notification_rule, nor any context about when deletion is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_passkeyA

Delete one authenticated-user passkey by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
passkey_idYesPasskey ID to delete
project_idYesThe project ID
access_tokenYesAuthenticated user's access_token

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states 'Delete' but does not disclose whether the action is irreversible, what happens to related data, or if authentication is required (though access_token is in schema). Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with verb and resource. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with 3 parameters and no output schema, the description is adequate but lacks details on return values, error cases, or side effects. It is minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and schema descriptions are adequate. The description does not add additional meaning beyond 'by id' for the passkey_id parameter. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('one authenticated-user passkey by id'). It distinguishes from sibling tools like list_passkeys and create_auth_user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (delete a passkey by id) but does not provide explicit guidance on when not to use it, prerequisites, or alternatives among the many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_projectA

Immediately and irreversibly delete a project: the gateway runs the full destructive cascade (drop tenant schema, delete Lambda functions, release subdomains, tombstone mailbox, remove sender domain, wipe secrets and app versions) and sets status=purged. This tool also removes the project from the local key store. Distinct from the automatic lease-expiry grace window — this action is the explicit purge and cannot be undone. To recover from a missed renewal use set_tier instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to delete (irreversible cascade purge)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It details the full destructive cascade (drop schema, delete functions, release subdomains, tombstone mailbox, remove sender domain, wipe secrets and app versions, set status=purged, remove from local key store) and explicitly states the action is irreversible. This provides comprehensive behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the key action and details. While it is informative, it is somewhat verbose (over 50 words) and could be more concise without losing essential information. It earns a 4 for being well-structured but slightly wordy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, no output schema, and no annotations, the description is remarkably complete. It explains the effects thoroughly, distinguishes from related actions, and provides all necessary context for an AI agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter `project_id` has a schema description already stating it's the project ID for irreversible deletion. The tool description reiterates this but does not add additional semantic information beyond what the input schema provides. With 100% schema coverage, the description adds minimal extra value for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Immediately and irreversibly delete a project' and enumerates specific destructive operations (drop tenant schema, delete Lambda functions, etc.). It distinguishes itself from the automatic lease-expiry grace window and mentions the alternative tool `set_tier`, making its purpose unambiguous and distinct from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (explicit purge) and when not to (to recover from a missed renewal, use `set_tier`). It also clarifies that this action is distinct from the lease-expiry grace window, providing clear usage context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_project_branchB

Delete a contained branch project and purge its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesParent project ID.
branch_project_idYesBranch project ID to delete.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description mentions 'purge its resources' implying irreversibility, but lacks details on side effects, permissions, or whether it cascades. Transparency is insufficient for a deletion tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 8 words, no fluff. Efficient and direct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema. Lacks mention of return values, irreversibility confirmation, or prerequisites. For a simple delete operation, it is moderately complete but could be more transparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description does not add significant meaning beyond the schema's parameter descriptions; it provides minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') and resource ('branch project'), clearly distinguishing from sibling tools like 'create_project_branch' and 'list_project_branches'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool, prerequisites, or alternatives. For a destructive operation, such context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_project_snapshotB

Delete a project data snapshot and release its CAS references.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID that owns the snapshot.
snapshot_idYesSnapshot ID to delete.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions releasing CAS references, but without annotations, it fails to disclose key behavioral traits such as permanence of deletion, required permissions, whether it can be undone, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently conveys the main action. It could be slightly expanded, but it is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple delete operation with only two parameters, the description is mostly adequate, but it lacks behavioral and usage context that would help an agent decide when and how to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the input schema already describes the parameters clearly. The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('project data snapshot') and adds detail about releasing CAS references, which distinguishes it from related tools like create, get, or restore.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as restore_project_snapshot or other deletion tools. No prerequisites or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_secretB

Delete a secret from a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesSecret key to delete
project_idYesThe project ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states the action. It does not mention that deletion is permanent, that it requires appropriate permissions, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too minimal for a destructive tool with no annotations or output schema. It lacks context about irreversibility, permissions, and post-deletion state.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds no extra meaning beyond the schema's parameter descriptions. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'delete' and the resource 'secret' in the context of a project, distinguishing it from related tools like set_secret and list_secrets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor are there prerequisites or caveats mentioned. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_signerA

Schedule the KMS key for a signer for deletion (7-day AWS minimum window). Refused if the signer has on-chain balance ≥ dust — drain first.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe KMS signer ID. Schedules KMS key deletion (7-day window). Refused if balance >= dust — drain first.
project_idYesThe project ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It discloses the 7-day minimum window for AWS KMS deletion, the balance condition, and the refusal behavior. However, it does not mention permissions required, whether deletion can be reversed within the window, or the return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core action and includes key constraints. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no output schema, the description covers the main behavioral aspects: action, time window, and precondition. It could be improved by mentioning whether the deletion happens automatically after 7 days, but it is sufficiently complete for an AI agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%. The signer_id description in the schema repeats the tool description, adding little new value. The description does not provide additional per-parameter details beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool schedules the KMS key for a signer for deletion with a 7-day window, and mentions a precondition about balance. It matches the name 'delete_signer' and distinguishes from sibling 'drain_signer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Refused if the signer has on-chain balance ≥ dust — drain first', which guides the agent to use the sibling 'drain_signer' tool before this one. It provides clear context for when to use and when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_subdomainB

Release a custom subdomain. The URL will stop serving content.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSubdomain name to release (e.g. 'myapp')
project_idNoOptional project ID for ownership verification. Uses stored service_key for auth.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It states that the URL stops serving content, which is a key effect. However, it does not mention whether the subdomain becomes available for reuse, if there are any irreversible consequences, or authorization requirements (e.g., ownership).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no wasted words. The second sentence adds value by stating the effect. Could be slightly more structured (e.g., indicating return value) but is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with no output schema, the description covers purpose and effect. However, it lacks details on return behavior, error conditions, and prerequisites. Given the absence of annotations, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have descriptions in the schema (100% coverage). The tool description does not add any extra meaning beyond what the schema provides, so it meets the baseline but does not improve understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Release a custom subdomain' clearly states the action and resource. The added detail 'The URL will stop serving content' clarifies the consequence. It distinguishes from siblings like 'claim_subdomain' and 'add_custom_domain', but does not explicitly differentiate from 'remove_custom_domain' (which may have similar semantics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as 'remove_custom_domain' or 'disable_sender_domain_inbound'. The description does not mention prerequisites, side effects, or context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_versionB

Delete a published app version.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
version_idYesThe version ID to delete

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral traits. It only states 'Delete a published app version' without disclosing side effects, irreversibility, or prerequisites, which is insufficient for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single-sentence description is concise and front-loaded with the action. However, it is perhaps too brief, lacking additional context that could improve usability without adding significant length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and the destructive nature of the tool, the description does not explain what happens after deletion (e.g., permanent removal, effect on app status). It leaves critical behavioral details unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both parameters have descriptions). The description adds no extra meaning beyond what the schema already provides, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'delete' and the specific resource 'published app version', distinguishing it from siblings like publish_app, update_version, and list_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as update_version or unpublish flows. The description merely states the action without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demote_userA

Demote a user from project_admin role by email. Reverts to default authenticated role. Requires service_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the user to demote from project_admin
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It states the role change and a requirement, but does not mention side effects, idempotency, reversibility, or error states. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence covering action, target, effect, and requirement. Very concise and front-loaded. Could be improved by splitting into two sentences for readability, but no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with no output schema, the description covers the essential: what it does, the new role, and a key requirement. Missing post-conditions or relationship to promote_user, but still sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema descriptions (email and project_id are already described). No format, constraints, or examples provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Demote a user from project_admin role by email'), specifies the resource (user by email), and the outcome ('Reverts to default authenticated role'). It distinguishes from sibling tools like promote_user. This is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite ('Requires service_key') but does not provide explicit guidance on when to use this tool versus alternatives like promote_user or remove_org_member. It lacks when-not-to-use context or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deployA

Unified apply primitive. Accepts a structured ReleaseSpec — database (migrations + expose), value-free secrets.require/delete declarations, functions, site, site.public_paths, subdomains, and routes.replace web routes — with explicit replace vs patch semantics per resource. Migration entries use id for immutable versioned SQL or name for generated/idempotent content-tracked SQL; name compiles client-side to _<sha256(sql)[0:16]>. Use site.public_paths for clean static URLs such as /events backed by release asset events.html; explicit mode does not expose /events.html unless separately declared, while mode: 'implicit' restores filename-derived reachability and can widen access. Route entries map exact/final-wildcard browser paths like /admin and /admin/* to Node 22 Fetch Request -> Response functions, or exact GET/HEAD method-aware static aliases such as /events to { type: 'static', file: 'events.html' }; intentional read-only GET/HEAD wildcard function routes may set acknowledge_readonly: true. Direct /functions/v1/:name remains API-key protected. Secret values must be set first with set_secret, never placed in deploy specs. All bytes ride through CAS (no inline-body cap). Returns release_id, URLs, warnings, and a structured progress-event log. Stops before upload/commit on confirmation-required warnings unless reviewed codes are passed with allow_warning_codes or allow_warnings is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoDiff base. Default `{ release: 'current' }`. Use `{ release: 'empty' }` for a fresh deploy that fails if a release already exists.
i18nNoRouted-locale-context release slice. Omit to carry forward from base release; pass null to clear the slice; pass { defaultLocale, locales, detect? } to replace. Drives the negotiated locale that the gateway surfaces to routed HTTP function invocations via x-run402-locale and x-run402-default-locale request headers (omitted entirely when the active release has no i18n slice). Static-route hits do NOT receive locale negotiation.
siteNo
assetsNov1.48 unified-apply assets slice. Asset writes promote inside the same activation transaction as functions/site/secrets so a release flips atomically.
routesNoApply-v1 web routes. Omit or pass null to carry forward base routes; pass { replace: [] } to clear routes; pass { replace: [{ pattern, methods?, target: { type: 'function', name } }] } for functions or exact GET/HEAD { target: { type: 'static', file } } entries for method-aware static route aliases. Prefer site.public_paths for ordinary clean static URLs.
secretsNo
databaseNo
functionsNo
project_idYesProject ID to deploy to (from provision).
subdomainsNoAt most one subdomain per project — multi-element `set` is rejected with SUBDOMAIN_MULTI_NOT_SUPPORTED.
allow_warningsNoContinue past plan warnings that require confirmation. Default false: the tool stops before upload/commit so an agent can set missing secrets or inspect warnings.
idempotency_keyNoOptional client idempotency key. Combined with the project id and gateway-computed manifest digest to deduplicate retries.
allow_warning_codesNoContinue past specific reviewed plan warning codes. Prefer this to allow_warnings when only one known warning class is intentional.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It extensively covers behavioral details: CAS transfer, idempotency with idempotency_key, warning handling (allow_warnings, stop before upload), return values (release_id, URLs, warnings, logs), and secret management (must be set separately). This is highly transparent for a complex tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is verbose and reads like a specification. While it is front-loaded with 'Unified apply primitive', it includes many detailed clauses that could be streamlined for faster parsing. Some sentences are dense and could be broken down.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (13 parameters, nested objects), the description covers most aspects: migrations, routing, secrets, assets, site, subdomains, and return values. There is no output schema, but the description lists return values. No major gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 69%, and the description adds significant meaning beyond the schema. It explains concepts like migration id vs name semantics, public_paths modes (explicit/implicit), route target types (function/static), and the secrets require/delete pattern. This adds value for an agent understanding parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'Unified apply primitive' and lists the components it handles (database, secrets, functions, etc.). However, it does not explicitly distinguish itself from sibling tools like deploy_function or deploy_site, which would help an agent choose correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides detailed semantics (e.g., replace vs patch, public_paths modes) but lacks explicit guidance on when to use this tool vs alternatives like deploy_function or deploy_site. The context implies it's for complex multi-resource deployments, but no direct comparison is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_diagnose_urlA

Read-only authenticated diagnostics for a Run402 public URL or host/path pair. Explains whether the current live release would serve the URL, including match, diagnostic body status, static manifest/cache metadata when returned, structured warnings for ignored query/fragment, and next steps. This does not fetch bytes, purge cache, mutate deploy state, or expose internal CAS URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAbsolute HTTP(S) public URL to diagnose. Mutually exclusive with host/path.
hostNoLower-level hostname form without scheme, path, query, or fragment.
pathNoLower-level public URL path. Must start with '/' when supplied.
methodNoHTTP method to diagnose. Defaults to gateway behavior when omitted.
project_idYesProject ID used for local apikey lookup. It is not sent as a query parameter.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly states the tool is read-only, does not fetch bytes, purge cache, mutate deploy state, or expose internal CAS URLs. It also lists what the diagnostic includes (match, body status, manifest metadata, structured warnings), providing comprehensive transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph of three sentences. It is concise, front-loaded with the core purpose, and every sentence adds value without redundancy. Ideal length for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema and multiple parameters, the description thoroughly explains the tool's behavior, expected diagnostic output (match, status, metadata, warnings), and what it does not do. It covers all necessary context for an agent to decide when and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 5 parameters. The description adds context that the tool works for URL or host/path pairs and mentions the method, but does not significantly enhance parameter understanding beyond the schema. Baseline of 3 is appropriate as the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read-only authenticated diagnostics for a Run402 public URL or host/path pair' and enumerates specific diagnostic outputs (match, body status, manifest metadata, warnings). It also distinguishes itself by explicitly listing what it does not do, differentiating it from siblings like 'deploy' or 'diagnose_public_url'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the tool's purpose and mentions it provides diagnostics for public URLs or host/path pairs, but does not explicitly state when to avoid this tool in favor of alternatives (e.g., 'diagnose_public_url'). The read-only nature and non-mutating behavior are clear, but exclusion criteria are lacking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_eventsA

Fetch the recorded phase-event stream for a deploy operation. Returns the same DeployEvent shapes the deploy tool emits inline during an in-flight deploy — useful for inspecting a deploy after the fact (e.g., a deploy that the agent didn't observe directly, or one being resumed from a different process).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID that owns the operation. Required (apikey-gated endpoint).
operation_idYesOperation id returned by a prior `deploy` call. Must start with `op_`.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist. Description implies it's a read-only fetch but does not disclose auth requirements, error behavior, or rate limits. It is clear it returns event shapes similar to deploy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with main action, no redundant information. Each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains return type (DeployEvent shapes). Use cases are covered. Minor omission: no mention of ordering or pagination for the event stream.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds context about operation_id being from a prior deploy call but does not provide new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'fetch' and resource 'recorded phase-event stream for a deploy operation'. It distinguishes from sibling tools like deploy and deploy_resume by specifying it's for after-the-fact inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides explicit use cases (inspecting a deploy after the fact, for observers or resumption) but does not explicitly state when not to use or compare to alternatives like deploy_list or deploy_release_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_functionA

Deploy a serverless function (Node 22) to a project. Handler signature: export default async (req: Request) => Response. The function can import { db, adminDb, auth, email, ai } from '@run402/functions' — auto-bundled by the platform. Additional npm packages are bundled at deploy time when listed in deps (bare names resolve to latest; pinned/range specs are honored verbatim; @run402/functions and run402-functions rejected; max 30 entries; native binaries rejected). For schedule/email background triggers, prefer a unified deploy manifest with functions.replace.<name>.triggers[] so every trigger creates a durable function run. The response includes runtime_version (the bundled @run402/functions version — surface as 'Functions runtime version', never bare 'runtime'), deps_resolved (map of dep name → installed concrete version), and an optional top-level warnings array (sibling to the function record).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesTypeScript or JavaScript source code. Must export a default async function: export default async (req: Request) => Response
depsNoOptional npm package specs to install and bundle. Bare names (e.g. 'lodash') resolve to latest at deploy time; pinned (e.g. 'lodash@4.17.21') or range specs ('date-fns@^3.0.0') are honored verbatim. '@run402/functions' (auto-bundled) and 'run402-functions' (legacy name) are rejected. Max 30 entries, max 200 chars per spec. Native binary modules (sharp, canvas, native bcrypt, etc.) are rejected.
nameYesFunction name (URL-safe slug: lowercase, hyphens, alphanumeric, e.g. 'stripe-webhook')
configNoOptional function configuration
scheduleNoCron expression (5-field, e.g. '*/15 * * * *') to run the function on a schedule. Pass null to remove an existing schedule.
project_idYesThe project ID to deploy the function to

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses handler signature, bundled imports, dependency resolution rules (max entries, rejection of native binaries and @run402/functions), and response fields (runtime_version, deps_resolved, warnings). It does not mention authentication requirements, rate limits, or side effects beyond creation/ update, but the disclosed details are extensive and useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized for the tool's complexity. It is front-loaded with the core purpose and progressively adds detail. Every sentence contributes value, though slightly longer than minimal. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and no annotations, the description is fairly complete. It covers handler, dependencies, response, and special notes on schedule triggers. It lacks error handling details or failure modes, but the provided information is sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds significant meaning: for 'deps', it explains bundling mechanics, rejection rules, and limits; for 'code', it provides exact handler signature; for 'schedule', it clarifies cron format and removal; for 'config', it notes default values. This goes well beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Deploy a serverless function (Node 22) to a project', specifying the verb (deploy), resource (serverless function), and context (Node 22, project). It distinguishes from siblings like list_functions, delete_function, and the generic deploy tool by focusing on function deployment with explicit handler and runtime details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a guideline for schedule/email triggers ('prefer a unified deploy manifest'), but does not explicitly state when to use this tool versus alternative siblings (e.g., update_function, deploy, deploy_site). It lacks directives on when not to use it or comparison with other tools, leaving the agent without clear selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_listA

List recent deploy operations for a project. Returns operation_id, status, release_id, and timestamps. Use this to build deploy-history UIs or to find a recent operation_id to feed into deploy_resume / deploy_events. Pass limit to bound the result set; the gateway also returns a cursor for pagination when there are more.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of operations to return. Forwarded to the gateway as `?limit=`; the gateway picks a default when omitted.
cursorNoPagination cursor returned by a previous deploy_list response. Forwarded to the gateway as `?cursor=`.
project_idYesProject ID to list operations for. Required (apikey-gated).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It describes the listing behavior and pagination, and implies it's a read-only operation. It could mention that no side effects occur, but the context suffices.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose and output, second explains usage and parameters. No wasted words, front-loaded with essential info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description mentions the return fields and pagination. Parameter behavior is explained. It is sufficiently complete for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds context beyond the schema, explaining that limit bounds results and cursor enables pagination. This helps the agent understand the parameters' roles in the gateway interaction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists recent deploy operations for a project, specifying the return fields (operation_id, status, release_id, timestamps). It distinguishes from siblings by suggesting use to feed deploy_resume and deploy_events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases (build deploy-history UIs, find operation_id for other tools) and explains how to use limit and cursor. It does not explicitly state when not to use, but the guidance is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_rehearseA

Run a persisted apply plan against a contained branch and return the rehearsal report. Source project and plan stay untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesPersisted apply plan ID returned by deploy planning.
teardownNoRehearsal branch cleanup policy. Default keep.
project_idNoProject ID for operator-approval metadata and follow-up status reads.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions that the source project and plan stay untouched, which is good. However, it does not clarify what happens to the contained branch (e.g., is it created, left behind?) or any authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the action and including a key behavioral note. Every part is essential and there is no unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description could elaborate on the rehearsal report format or prerequisites. It covers the core action and safety but misses context on return value and lifecycle of the contained branch. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add new meaning beyond the parameter descriptions; it restates concepts like 'persisted apply plan' and 'contained branch' without elaboration on teardown options or project_id usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it runs a persisted apply plan against a contained branch and returns the rehearsal report, with a specific verb and resource. It also distinguishes from sibling tools like 'deploy' by emphasizing rehearsal and no changes to source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies testing before actual deployment, it does not explicitly state when to use this tool versus alternatives like 'deploy' or 'deploy_resume'. No when-not-to-use or alternative names are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_release_activeA

Fetch the current-live release inventory for a project. Returns release_id: null with an empty current-live inventory when no release is active yet. Use this before deploy diffs to understand what is currently serving. Canonical SDK errors are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID to inspect.
site_limitNoMaximum site path entries to include. Gateway default: 5000.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that when no release is active, it returns null and empties inventory, and preserves canonical SDK errors. With no annotations, the description carries full burden; it is decent but could explicitly state read-only behavior or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three efficiently front-loaded sentences with zero waste: purpose, null-case behavior, and usage context with error handling. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers purpose, null behavior, use case, and error preservation for a simple 2-parameter tool without output schema. Minor gap: no description of the successful response structure beyond the null case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add meaningful detail beyond the schema. The baseline of 3 is appropriate as the description adds no extra parameter insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch the current-live release inventory for a project' with specific verb and resource. It distinguishes from siblings like deploy_release_diff by noting 'Use this before deploy diffs', making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Use this before deploy diffs to understand what is currently serving', providing clear context. However, it does not explicitly state when not to use this tool or name alternative tools for other scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_release_diffA

Diff two release targets for a project. from may be empty, active, or a release id; to may be active or a release id. Returns release-to-release diff buckets and migrations.applied_between_releases. Semantic gateway errors such as invalid targets, same-release diffs, or no active release are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDiff target: active or a release id.
fromYesDiff source target: empty, active, or a release id.
limitNoMaximum entries per site diff bucket. Gateway default: 1000.
project_idYesProject ID to inspect.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description covers output and error behavior but doesn't disclose side effects, auth needs, or rate limits. Basic transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no fluff. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately describes return value and error behavior for a tool with no output schema. Could elaborate on diff bucket structure but sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters with descriptions. Description adds extra meaning by specifying valid values for 'from' and 'to' and mentioning 'limit' default, going beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'diff', resource 'release targets', and scope 'for a project'. Specifies valid values for parameters, distinguishing it from sibling tools like deploy_release_active.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on parameter values and mentions error preservation. Lacks explicit alternatives or when-not-to-use, but sufficient for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_release_getA

Fetch a release inventory by id. Returns release metadata, effective/desired state kind, site path inventory, function inventory, secret keys, subdomains, and applied migrations. Use site_limit to cap large site inventories. Canonical SDK errors are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID that owns the release.
release_idYesRelease ID to inspect, e.g. rel_...
site_limitNoMaximum site path entries to include. Gateway default: 5000.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It notes that canonical SDK errors are preserved and implies a read-only operation by stating 'Fetch'. However, it does not explicitly declare safety, rate limits, or authentication requirements, making it adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: purpose, return list, usage tip, and error behavior. No fluff, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explicitly lists all returned fields (metadata, state kind, inventories, etc.) and explains site_limit usage. Error handling is mentioned. This covers most necessary context for a fetch tool, though some format details are omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions, setting a baseline of 3. The description adds extra context for site_limit ('Use site_limit to cap large site inventories') but does not enhance the meaning of project_id or release_id beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch a release inventory by id', using a specific verb and resource. It lists the returned fields, distinguishing it from sibling tools like deploy_list (which lists releases) and deploy_release_diff (which compares). No tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as deploy_list or deploy_release_active. The description only offers a usage tip for site_limit but lacks comparative context or when-not-to-use advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_resumeA

Resume a deploy operation that ended in activation_pending or schema_settling (e.g. transient gateway failure between SQL commit and the pointer-swap activation). The gateway re-runs only the failed phase forward — SQL is never replayed. Idempotent: calling on an already-terminal operation returns the snapshot without re-running.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation id returned by a prior `deploy` call. Required.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behaviors: idempotency, that only the failed phase is re-run, that SQL is never replayed, and the outcome when called on an already-terminal operation. This is good but could mention return value structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the key condition and purpose. Every sentence contributes meaningful information without any fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and no output schema, the description covers the essential context: states to resume from, idempotency, and a typical failure scenario. It lacks details on possible errors or return format, but these are not critical for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter (operation_id) described as 'Operation id returned by a prior `deploy` call. Required.' The description adds no new information about the parameter beyond what the schema provides, justifying the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resumes a deploy operation that ended in specific states ('activation_pending' or 'schema_settling'), using specific verbs and resource. It distinguishes from siblings by defining its precise role in the deploy lifecycle, even without explicit comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear conditions for use (resuming a deploy in certain states) and includes a concrete example (transient gateway failure). However, it does not explicitly contrast with other deploy tools or state when not to use it, though the context implies its specific utility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_siteA

Deploy a static site (HTML/CSS/JS) from inline file bytes. Files are staged to a temp directory, then uploaded via the v1.32 plan/commit transport — only bytes the gateway doesn't already have are PUT. Served at a unique URL via CloudFront. Free with active tier.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesArray of files to deploy. Must include at least index.html.
targetNoDeprecated/unsupported: unified deploy v2 does not support deployment target labels. Passing this field returns an error.
projectYesProject ID to link this deployment to

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains files are staged, uploaded incrementally (only missing bytes), and served via CloudFront. It also notes pricing ('Free with active tier'). Could mention auth or rate limits but provides good behavioral context for a static deploy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding value: what it does, how it works, and cost. No wasted words, major points upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 3 parameters, the description covers the deployment process, transport mechanism, and result (unique URL via CloudFront). Could mention project requirement but described in schema. Lacking error handling or edge cases, but adequate for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds that files are 'inline file bytes' but doesn't elaborate on parameter details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Deploy a static site (HTML/CSS/JS) from inline file bytes' with specific verb and resource. It details the process of staging, uploading via plan/commit transport, and serving via CloudFront, differentiating it from sibling tools like deploy_site_dir which likely use directory paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as deploy_site_dir or deploy_function. The description implies it is for static sites with inline files but lacks when-to-use or when-not-to-use advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_site_dirA

Deploy a static site from a local directory. Walks the tree, hashes each file, and uploads only the bytes the gateway doesn't already have via the v1.32 plan/commit transport. Files named .git, node_modules, or .DS_Store are skipped; symlinks are rejected. Re-deploying an unchanged tree issues no S3 PUTs. Free with active tier.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirYesLocal directory to deploy. The SDK walks this directory, hashes each file, and uploads only bytes the gateway doesn't already have via the unified deploy primitive (CAS-backed). Files named .git, node_modules, or .DS_Store are skipped. Symlinks are rejected.
targetNoDeprecated/unsupported: unified deploy v2 does not support deployment target labels. Passing this field returns an error.
projectYesProject ID to link this deployment to

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses key behavioral traits: only uploads missing bytes, skips .git/node_modules/.DS_Store, rejects symlinks, and issues no PUTs on unchanged trees. It does not cover error handling or permissions, but is fairly transparent for a deployment tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at four sentences, front-loading the purpose. It avoids redundancy but could be more structured (e.g., listing constraints clearly). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains input, process, and constraints. It covers what happens (incremental uploads, file skipping) but omits return value or deployment URL. Still, it is complete enough for a tool with standard output expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions that largely mirror the tool description. The tool description adds little beyond the schema, such as the transport version and pricing context, but does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Deploy a static site from a local directory' and details the process of walking the tree, hashing, and incremental uploads. It distinguishes itself from sibling tools like deploy_site and deploy_function by specifying the local directory source and transport mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs. alternatives. While it implies use for static site deployment from a local path, it lacks guidance on when not to use it or comparisons with other deploy tools like deploy_site.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deploy_verify_edgeA

Verify gateway/edge release coherence for a deploy operation. Returns the canonical edge-coherence report, including pointer-update state, probed paths, stale-release evidence, and next actions. Set wait=true to poll until coherent or timeout_seconds elapses.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until coherent or timeout. Defaults to false.
project_idYesProject ID that owns the operation. Required (apikey-gated endpoint).
operation_idYesOperation id returned by a prior `deploy` call. Must start with `op_`.
timeout_secondsNoMaximum seconds to wait when `wait` is true. Defaults to 60.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the return report contents and the polling behavior of wait. However, it does not mention side effects, authentication requirements (beyond what schema provides), or rate limits, leaving some gaps for a read-heavy verification tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently deliver the purpose, return value, and a key usage hint. No filler or redundancy, and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description partially compensates by listing report components. However, it lacks details on return structure, error handling, or prerequisites beyond what schema provides. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds minimal extra meaning beyond the schema definitions. The only slight addition is clarifying that `timeout_seconds` applies when `wait` is true, but that is already implied by schema. The description does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (verify) and resource (gateway/edge release coherence). It distinguishes this tool from siblings like deploy, deploy_rehearse, and deploy_diagnose_url by its specific purpose of verifying coherence and returning a detailed report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used after a deploy to check coherence, but it does not explicitly compare to alternatives like deploy_release_active or deploy_diagnose_url. It provides some guidance on the wait parameter but lacks clear when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnose_public_urlA

Returns the live CDN state for a public blob URL (probed once from gateway-us-east-1 — NOT a global view). Use this when a deployed asset shows the wrong version or you suspect cache staleness. The result includes expectedSha256 (from gateway DB), observedSha256 (what CloudFront just served), recent invalidation status, and a human-readable hint with actionable next-steps. The probeMayHaveWarmedCache: true field warns that the probe itself populates the cache, so subsequent reads from elsewhere may differ. URLs outside the requesting project return 403; non-*.run402.com URLs return 400 unless they're on one of your active custom domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull blob URL (e.g. https://app.run402.com/_blob/avatar.png)
project_idYesProject ID that owns the URL

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: the probe is from a single region, the probe may warm the cache (probeMayHaveWarmedCache), and errors for unauthorized or invalid URLs. This provides strong transparency about side effects and limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph that front-loads the core function, then adds usage, output details, and caveats. Every sentence contributes value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input parameters, output fields (even without output schema), error cases, and behavioral notes. It is comprehensive for a diagnostic tool, though it does not compare with sibling tools like 'deploy_diagnose_url'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (project_id, url). The description adds context about the probe location and output fields, but does not enhance parameter semantics beyond what schema already provides, warranting a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns live CDN state for a public blob URL, specifies it's from a single region (gateway-us-east-1), and contrasts with a global view. It also mentions specific output fields, making the purpose very distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool (wrong version, suspected cache staleness) and provides error conditions (403 for unauthorized projects, 400 for invalid domains). It does not explicitly reference sibling tools, but the guidance is specific and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_activateA

Activate custom mailbox addresses once ProjectDomain receive checks have passed. This switches addresses from managed fallback to the custom domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals that the tool switches addresses from managed fallback to custom domain, which is useful behavioral context. Without annotations, more information about idempotency, permissions, or side effects would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action, no redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description adequately covers the action, precondition, and effect. It could mention idempotency or error cases for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions, so the description adds minimal extra meaning beyond mentioning the activation condition. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Activate' and the resource 'custom mailbox addresses', with a precondition 'once ProjectDomain receive checks have passed'. This distinguishes it from sibling tools like domains_check or domains_apply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the precondition for use ('once checks have passed'), providing clear context. However, it does not mention when not to use or directly compare to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_applyA

Apply safe provider-managed ProjectDomain changes when authority is available. Manual-DNS domains return a typed next action instead of mutating external DNS.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool is safe, provider-managed, and does not mutate external DNS for manual-DNS domains. This provides adequate behavioral traits for decision-making.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary action. Every sentence adds distinct value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (different behaviors for provider-managed vs. manual-DNS) and no output schema or annotations, the description covers the main use cases and key exception. It is mostly complete, though could mention response or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (domain, project_id). The description adds no further parameter details beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies safe provider-managed ProjectDomain changes, and distinguishes from manual-DNS handling. Among sibling tools like domains_activate, domains_check, etc., this description uniquely identifies the purpose and scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies when to use (when authority is available) and describes a different behavior for manual-DNS domains, implicitly guiding the agent to use alternative tools for manual-DNS. However, it does not explicitly name alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_checkA

Re-observe DNS/provider state for a ProjectDomain and return the current checks. Useful as a preflight and drift detector before validation cycles.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear full disclosure. It mentions 're-observe' implying a side effect (triggering DNS check), but does not clarify if it is read-only, idempotent, or what state changes occur. It also omits details on response format, pagination, or latency for a check tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 14-word sentence, front-loading the core action and purpose. Every word adds value; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has simple parameters (2 required strings) and no output schema or annotations. The description covers basic function and usage context but fails to describe return format or potential side effects. For a check tool, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage for both parameters (domain, project_id). The description does not add extra semantic meaning beyond what the schema already provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ('Re-observe DNS/provider state', 'return') and resource ('ProjectDomain'). It distinguishes from sibling tools like domains_get by emphasizing it triggers a new observation, not just retrieval. The phrase 'preflight and drift detector' sets it apart from modification tools like domains_activate or domains_apply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends use 'as a preflight and drift detector before validation cycles', providing clear context. It does not list alternatives or exclusions, but the purpose is clear enough to guide selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_disconnectB

Disconnect a ProjectDomain from the project and return mailbox addresses to managed fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It reveals a key behavioral trait (returning mailbox addresses to managed fallback) but omits details like destructiveness, permissions, or what happens to the domain itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that conveys the core action without extraneous words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has simple parameters and no output schema. The description covers the basic action but fails to explain return values, 'managed fallback', or side effects. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100% and both parameters are described in the schema. The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Disconnect' and the resource 'ProjectDomain', and distinguishes the action from sibling tools like domains_activate or domains_check. However, it does not explicitly differentiate from all siblings, so it's a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. It only states the action without context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_ensureA

Create or update a project-scoped ProjectDomain desired state for web, email sending, inbound receive, mailbox addresses, and activation. Returns the aggregate with checks, DNS records, and next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
desiredYesDesired ProjectDomain state: web, email.send, email.receive, mailbox_addresses, and activation.
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description should disclose behavioral traits. It mentions returning checks, DNS records, and next actions, indicating verification steps. However, it does not mention potential destructiveness, authentication needs, or rate limits, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. First sentence states purpose, second states output. Slightly verbose but efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description covers purpose, scope, and return value. It is mostly complete but could mention prerequisites or when to use this tool vs other domain siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context by listing aspects (web, email, etc.) but mostly repeats schema field descriptions. It does not provide additional parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates or updates a project-scoped ProjectDomain desired state for web, email sending, inbound receive, mailbox addresses, and activation. This verb+resource combination distinguishes it from sibling tools like domains_activate or domains_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for setting or updating domain configuration but does not explicitly state when to use this over alternatives like domains_activate or domains_apply. No exclusions or comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_getA

Get one ProjectDomain aggregate with desired, observed, effective, DNS records, checks, and next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It details what data is returned (desired, observed, effective, DNS records, checks, next actions), indicating a read operation. It does not mention potential side effects, but the description is sufficiently transparent for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant words. It is front-loaded with the action and then details the returned data. Every word is necessary and contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 required params, no output schema), the description adequately conveys the purpose and return data. It could mention error cases or empty results, but overall it provides sufficient context for an AI agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both required parameters ('domain' and 'project_id'). The description does not add additional semantic meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('one ProjectDomain aggregate') with specific included fields (desired, observed, effective, DNS records, checks, next actions). It distinguishes this tool from sibling domain tools like 'domains_list' (which likely returns multiple) and action-oriented tools like 'domains_activate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used when you need detailed aggregate information for a single domain, contrasting with 'domains_list' for multiple. However, it does not explicitly state when not to use it or mention alternatives for other domain operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_listB

List all ProjectDomain aggregates for a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only says 'List all', but does not mention pagination, ordering, filtering, rate limits, or any side effects. This is insufficient for a listing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that communicates the core purpose with no unnecessary words. It is well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema and the description does not clarify the return format or pagination behavior. For a list tool, this leaves important context incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single parameter 'project_id' with a clear description. The tool description adds no additional semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('ProjectDomain aggregates'), and the scope ('for a project'). It effectively distinguishes from sibling tools like 'domains_get' or 'domains_activate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as 'domains_get' (for a single domain) or other listing tools. No prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_repairA

Repair Run402-owned ProjectDomain infrastructure, such as missing SES receipt-rule recipients, without changing external DNS.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and adequately discloses that the tool repairs infrastructure without modifying external DNS. It does not detail potential side effects or permissions, but the main behavioral scope is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence that efficiently conveys action, scope, constraints, and example without any filler. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the input schema (two parameters) and absence of output schema, the description provides sufficient context about purpose and constraints. Could benefit from mentioning return type or error handling, but overall complete for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters (domain and project_id). The description adds context about the repair scenario but does not enhance parameter meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (repair), specific context (Run402-owned ProjectDomain infrastructure), provides an example (missing SES receipt-rule recipients), and a key constraint (without changing external DNS), effectively distinguishing it from sibling tools like domains_check or domains_apply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (for repair scenarios) and what it does not do (no external DNS changes), but lacks explicit guidance on when not to use or alternatives among the many sibling tools, though the context is sufficiently clear for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domains_test_receiveA

Create a ProjectDomain receive test token for a mailbox address. Send mail to the returned address/token and poll domains_check for receive readiness.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesLocal part or address to send the receive test to, e.g. info or info@kysigned.com
domainYesThe DNS domain, e.g. kysigned.com
project_idYesThe project ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the creation behavior and the expected return of an address/token, but does not detail side effects, validity duration, or auth requirements beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose and usage instructions with no wasted words. The description is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters, no output schema, and no annotations, the description is fairly complete: it states the outcome (created token/address) and the workflow. However, it omission of error conditions or return format leaves minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds context (mailbox address, test token) but does not enhance parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a test token for receive readiness testing, specifies the action (create), the resource (ProjectDomain receive test token for a mailbox address), and distinguishes it from sibling tools like domains_check by outlining the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit follow-up actions: send mail to the returned address and poll domains_check for readiness. While it lacks explicit when-not-to-use or alternatives, the context is clear and guides usage effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drain_signerA

Drain a KMS signer's entire native-token balance to a destination address. Works on suspended signers — the safety valve. Cost: chain gas + $0.000005 KMS sign fee.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe KMS signer ID
project_idYesThe project ID
destination_addressYesWhere to send the entire native-token balance. Cost: chain gas + $0.000005 KMS sign fee. Works on suspended signers.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the cost and the special condition (suspended signers), but does not explain consequences like irreversibility or what happens to the signer after draining. A score of 3 reflects some transparency but missing important behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the core purpose, second adds context and cost. No fluff, front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main operation, cost, and when to use it (suspended signers). However, it lacks details on edge cases (e.g., non-suspended signers, invalid addresses) and does not describe return values. For a moderate-complexity tool with no output schema, a 3 is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with basic descriptions. The tool description repeats cost info for destination_address but does not add significant new meaning beyond the schema. Baseline is 3; slight addition keeps it at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (drain), the resource (KMS signer's entire native-token balance), and the destination address. It also mentions a specific use case (works on suspended signers). This distinguishes it from sibling tools like 'delete_signer' or 'provision_signer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions that it works on suspended signers (the safety valve), providing context for when to use it. However, it does not specify when not to use it or mention any alternatives, though the sibling list suggests no direct alternatives exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

errors_listA

Grouped, release-baselined error memory for a project, verdict-first: every page leads with a computed promote-vs-revert verdict (the gateway's numbers — never recomputed here), then the collapsed error identities. The post-promote watch: right after an apply/promote activates a release, call errors_list with new_in set to the just-activated release id (the promote response's next_actions carries a ready-made watch_errors command for the CLI equivalent). verdict.new_fingerprints > 0 means the release introduced NEW error identities — inspect errors[] (each row has samples with request ids + a runnable logs command) and consider reverting; new_fingerprints === 0 with healthy verdict.invocations_in_window means clean under real traffic (0 errors over 0 invocations is absence of signal, not proven health). Filter by since/until/function/kind/fingerprint; pass fingerprint_id to fetch one fingerprint's full detail (all samples + also_seen_in_functions). Quality tier coarse = the function predates the error side-channel; redeploy to upgrade fidelity. Read-only, own-project service-key auth; cursors are opaque.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoRestrict to one choke-point class: uncaught | boot_crash | invoke_failed | handled_5xx.
limitNoPage size (default 50, max 200).
sinceNoISO-8601 window start. Default window is the last 24h (gateway resolves `until` − 24h).
untilNoISO-8601 window end. Defaults to now (gateway-side).
cursorNoOpaque `next_cursor` from a prior page. Returns the next page. Never parse cursors.
new_inNoA release id, or the literal "active" (gateway resolves the live release). Selects error identities FIRST seen under that release and drives the verdict's new_fingerprints / baseline — the promote-gate signal.
functionNoRestrict to one function by name.
project_idYesProject whose errors to read. Authorized with the project's OWN service key; a key for a different project gets 403, never a 404.
fingerprintNoRestrict the list to one exact fingerprint identity (`fp_…`).
fingerprint_idNoFetch ONE fingerprint's full detail (all samples, per-sample fetch_logs commands, also_seen_in_functions) instead of a page. When set, all filter params (since/until/function/kind/fingerprint/new_in/limit/cursor) are rejected.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the transparency burden. It discloses read-only nature, auth requirements ('own-project service-key auth'), cursor opacity, quality tier implications, and behavioral traits like verdict computation and promote-watch semantics. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-structured, front-loading the core purpose and verdict-first approach. Every sentence provides valuable context, though it could be slightly more concise by grouping related behaviors. The length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema, the description thoroughly explains return values (verdict, errors, fingerprints, samples, fetch_logs commands), pagination, filtering, and edge cases (e.g., '0 errors over 0 invocations is absence of signal'). Covers error codes and auth. Complete for a tool with 10 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant contextual meaning beyond schema fields. For example, it explains the promote-watch use case for 'new_in', details about 'fingerprint_id' fetching full detail, and implications of 'kind' enums. This raises the score above baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Grouped, release-baselined error memory for a project, verdict-first...' It specifies the resource (errors), action (list), and unique approach (verdict-first with promote vs revert). It distinguishes from sibling tools like get_function_logs by focusing on error identities and verdicts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance, e.g., 'right after an apply/promote activates a release, call errors_list with new_in...' and explains when to inspect new fingerprints. However, it does not explicitly state when not to use this tool or mention alternatives beyond the implicit contrast with other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_project_archiveA

Export the supported Run402 Core runtime slice of a Cloud project as a portable .r402ar archive. Can wait for readiness and write the downloaded archive to a local path. Secrets, credentials, billing, allowance, logs, fleet, and Cloud operations are never exported.

ParametersJSON Schema
NameRequiredDescriptionDefault
authNoAuth export mode. Default stubs; credentials are never exported.
waitNoPoll until ready. Defaults true when output_path is set, otherwise false.
scopeNoArchive scope. v1 supports portable-runtime-v1.
project_idYesProject ID to export from Run402 Cloud.
timeout_msNoWait timeout in milliseconds. Default 600000.
consistencyNoConsistency mode. Default pause-writes, recorded as cloud_write_pause_v1.
output_pathNoOptional local file path for the downloaded .r402ar archive. When set, the tool waits for readiness and writes bytes here.
idempotency_keyNoRetry-safe idempotency key for archive creation.
poll_interval_msNoPolling interval in milliseconds. Default 1000.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors (wait, local write) and explicitly states what is never exported (secrets, credentials, etc.), but does not explicitly declare read-only nature or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the main purpose and add critical context without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters and no output schema, the description is minimal. It explains the local write path but does not describe return value when output_path is absent, nor detail the 'wait for readiness' mechanism beyond what parameters cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description does not add significant meaning beyond schema; it mentions wait and output_path but the schema already describes them adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports a Runtime slice as a .r402ar archive, specifies it can wait and write locally, and lists what is never exported, distinguishing it from siblings like import/inspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating portable archives but does not explicitly state when to use this tool versus alternatives like import or inspect, nor provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fork_appA

Fork a published app into a new project. Creates a full copy including database, functions, site, and optionally claims a subdomain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new forked project
subdomainNoOptional subdomain to claim for the forked app
version_idYesThe app version ID to fork (from browse_apps)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It states the tool creates a full copy and optionally claims a subdomain, which implies non-destructive behavior, but it does not mention auth requirements, rate limits, or consequences if the subdomain is taken.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core action, and contains no redundant information. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description covers the main purpose and key aspects. It could mention error cases (e.g., invalid version_id) or the result (e.g., new project ID), but overall it provides sufficient context for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter described. The description adds minimal extra meaning beyond the schema, such as clarifying subdomain is optional, but this is already evident from the 'required' list. No deeper insights into parameter values or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's action ('Fork a published app into a new project') and specifies what it includes (database, functions, site, optionally a subdomain). This distinguishes it from siblings like 'publish_app' or 'delete_project'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (creating a copy of a published app) but does not provide explicit when-to-use or when-not-to-use guidance. No mention of alternatives like 'import_project_archive' or 'export_project_archive' that might serve similar purposes in different contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

functions_rebuildA

Refresh function(s) onto the platform's current entry wrapper + bundled runtime WITHOUT changing source (capability function-runtime-rebuild, gateway v1.69+). Provide name to rebuild one function, or omit it to rebuild every function in the project. Re-bundles from each function's STORED source with deps pinned to the recorded exact versions, so the source code_hash is unchanged and no new release is created — this is how a gateway-side wrapper fix (e.g. an SSR auth.* fix) reaches an already-deployed function (a plain redeploy with unchanged source does NOT pick it up). Strictly opt-in; the platform never auto-rebuilds. Wallet-authed (project ownership; no service key) and allowed during billing grace. Functions deployed before dependency locking return CANNOT_REBUILD_UNLOCKED_DEPS — redeploy them from source with deploy_function. Use list_functions (runtime_stale) or run402 doctor to find stale functions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFunction name to rebuild. Omit to rebuild every function in the project (batch).
project_idYesThe project ID

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description covers behavioral traits: no source change, no new release, re-bundles with pinned deps, picks up wrapper fixes, strict opt-in, auth requirements, and error case for unlocked deps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is verbose but well-structured, front-loaded with key action, and each sentence adds value. Could be slightly more concise but appropriate for complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers action, preconditions, error conditions, and related tools, but does not describe return values since no output schema exists. Comprehensive given tool simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. Description adds significant context for 'name' (optionality, batch behavior) beyond what the schema provides, adding clear semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool refreshes functions onto the current wrapper/bundled runtime without changing source, distinguishing it from redeployment and sibling tools like deploy_function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (wrapper fixes), when not to (unlocked deps, suggesting deploy_function), and provides context (opt-in, wallet-authed, billing grace allowed). Also points to list_functions to find stale functions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageA

Generate a PNG image from a text prompt. Costs $0.03 USDC via x402. Aspect ratios: square (1:1), landscape (16:9), portrait (9:16).

ParametersJSON Schema
NameRequiredDescriptionDefault
aspectNoAspect ratio: square (1:1), landscape (16:9), portrait (9:16)square
promptYesImage description. Max 1000 characters.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It discloses the cost and that the output is a PNG image. The prompt length limit is inherited from the schema. It does not mention error handling or idempotency, but for a generative tool this is reasonable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose, second adds cost and aspect ratios. No extraneous information. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not explain the return format (e.g., URL or base64). It covers key usage constraints (cost, aspect ratios) and input limits. Missing response details, but acceptable for a simple generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description repeats the aspect ratio enum and the prompt length, adding no new semantic information beyond the schema fields. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Generate a PNG image from a text prompt,' which specifies the verb, resource, and input. It is distinct from sibling tools (no other image generation tools). Includes additional details like cost and aspect ratios.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a cost of $0.03 USDC via x402, which is a key usage constraint. It also lists available aspect ratios. However, it does not explicitly state when not to use or mention alternatives, but no alternatives exist in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_contact_statusA

Get the current agent contact assurance state: wallet_only, email_pending, email_verified, passkey_pending, or operator_passkey.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral aspects. It correctly indicates a read-only operation but lacks details on authentication, rate limits, or what happens if no contact is set. The returned states are listed, which helps, but more context would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the purpose and possible outputs. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the trivial complexity (no parameters, no output schema), the description adequately tells an agent what to expect. It could mention the subject 'current agent' but the meaning is implicit. Missing some context about when to use, but acceptable for a simple getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema provides full coverage. The description adds no parameter info, which is appropriate. A baseline of 4 is justified for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('agent contact assurance state'), and explicitly lists all possible return values. It is specific and distinguishes itself from sibling tools that modify or verify contact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like set_agent_contact or verify_agent_contact_email. The description does not indicate prerequisites or context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appA

Inspect a specific published app — details, required secrets, fork pricing.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYesThe version ID of the app to inspect

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. 'Inspect' suggests read-only, but no explicit confirmation of non-destructive behavior or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key verb, no unnecessary words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple get tool with one parameter and no output schema. Lists key return aspects, though response format is not described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only parameter 'version_id' is documented in schema; description adds value by listing what the response includes (details, secrets, pricing), going beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'inspect' and resource 'specific published app', listing included details like secrets and pricing. Distinguishes from siblings like browse_apps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for a single app via 'specific', but lacks explicit when-to-use vs alternatives like browse_apps or fork_app.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contract_call_statusA

Look up a previously submitted contract call by call_id. Returns lifecycle state (pending/confirmed/failed), block number, gas used, gas cost in USD-micros, receipt, and any error.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYesThe contract call ID (ccall_...)
project_idYesThe project ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lists the return fields (lifecycle state, block number, gas used, etc.), which adds behavioral insight. However, it does not explicitly disclose that this is a read-only operation, nor does it mention any side effects or prerequisites. Given no annotations, more transparency would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and lists return values efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with two parameters, the description adequately covers purpose and return values. However, the lack of output schema is compensated by listing return fields. Minor gap: no mention of error structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters well-described. The description adds 'by call_id' but does not provide additional meaning beyond the schema. This meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Look up a previously submitted contract call by call_id,' providing a specific verb and resource. This distinguishes it from sibling tools like contract_call or contract_read, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description simply states what it does without providing context for appropriate usage or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_emailC

Get a sent email with details and any replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
message_idYesThe message ID to retrieve
project_idYesThe project ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It indicates a read operation but fails to disclose authentication requirements, error handling, or behavioral details like what happens if the email does not exist or what 'details' entails. Minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded with the verb and resource, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and only three parameters, the description is too sparse. It omits return value format, error conditions, and how replies are included. A more complete description would cover these aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is documented in the schema. The tool description adds no extra meaning beyond what the schema already provides. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('a sent email with details and any replies'), which is specific and distinguishable from siblings like get_email_raw (raw source) or list_emails (listing all). However, it does not explicitly differentiate itself, so it earns a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The agent receives no help in deciding between this and sibling tools like get_email_raw or list_emails.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_rawA

Get the raw RFC-822 bytes of an inbound email message, base64-encoded. The decoded bytes are bit-identical to the DKIM-signed original — no parsing, normalization, or CRLF cleanup. Use this for cryptographic verification (DKIM checks, zk-email proofs). Inbound messages only; outbound returns 404. For display/threading, use get_email instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
message_idYesThe message ID to retrieve raw bytes for (must be an inbound message)
project_idYesThe project ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description holds full burden. It discloses that bytes are base64-encoded, bit-identical to DKIM original, no parsing/normalization/CRLF cleanup, inbound-only, and outbound returns 404. However, it does not specify the response format (e.g., JSON wrapper) or other error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff. First sentence states function, second adds key behavioral detail, third provides usage guidance and alternative. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers purpose, usage, and key behavioral constraints. Missing details about response structure (e.g., JSON wrapping) and error handling beyond outbound 404, but overall adequate for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all three parameters. The description repeats schema info (e.g., 'must be an inbound message') without adding new meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get the raw RFC-822 bytes of an inbound email message, base64-encoded' which clearly identifies the verb (get) and resource (raw bytes of inbound email). It distinguishes from sibling tool 'get_email' by specifying that this is for raw bytes vs. display/threading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states use cases: 'Use this for cryptographic verification (DKIM checks, zk-email proofs)' and when not to use: 'Inbound messages only; outbound returns 404' and 'For display/threading, use get_email instead'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exposeA

Get the current authorization manifest for a project (GET /projects/v1/admin/:id/expose). Returns the last-applied manifest from internal.project_manifest, or a manifest reconstructed by introspecting live DB state if none has ever been applied. The source field is "applied" or "introspected".

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description must carry full burden. It discloses two return sources (applied vs introspected) and the source field, providing useful behavioral context for a read-only operation. Missing error handling or permission details but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and behavior. Every sentence adds value with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, description explains both return paths and the source field. Could detail manifest structure but suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter project_id. Description adds no additional meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves the current authorization manifest for a project, distinguishing it from siblings like apply_expose (which applies) and validate_manifest (which validates). Includes endpoint and behavior details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for reading the current manifest but lacks explicit guidance on when to use this vs alternatives like apply_expose or validate_manifest. No 'when-not' or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_function_logsB

Get recent logs from a deployed function. Shows console.log/error output and error stack traces from CloudWatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFunction name to get logs for
tailNoNumber of log lines to return (default: 50, max: 1000)
sinceNoOnly return logs at or after this ISO 8601 timestamp (e.g. 2026-03-29T14:00:00Z). Invalid timestamps are rejected before the API call.
project_idYesThe project ID
request_idNoOnly return logs correlated to this routed request id, function run id, or attempt id, such as req_abc123, fnrun_abc123, or fnatt_abc123.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses source (CloudWatch) and log types, but does not mention limitations like latency, max tail, pagination, or read-only nature beyond the verb 'get'. Lacks depth for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, clear sentences with no unnecessary words. Front-loaded verb and resource. Efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description covers return content. Lacks details on return format (e.g., fields like timestamp, message), but sufficient for a simple read operation with well-documented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate field descriptions. The tool description adds no parameter information, but the schema already serves its purpose. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb (get) and resource (recent logs from deployed function) and specifies content (console.log/error output, stack traces). However, it does not differentiate from sibling get_function_run_logs, which may cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_function_run_logs. No mention of prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_function_runA

Fetch one durable function run by fnrun_ id.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesFunction run id, fnrun_...
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose any behavioral traits such as read-only nature, permissions required, or side effects. The agent is left to infer that this is a simple fetch operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately conveys the action and resource. No unnecessary words, highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 required parameters, no output schema), the description is minimally adequate but could include more details such as the return value format or that both parameters are required. It does not fully equip the agent for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters (run_id, project_id) described. The description adds context about fetching by fnrun_ id, aligning with the run_id parameter, but does not provide additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Fetch one durable function run by fnrun_ id.' Clearly specifies the action (fetch) and the resource (a single durable function run), distinguishing it from sibling tools like list_function_runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. The name implies fetching a specific run, but no alternatives are mentioned. Usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_function_run_logsB

Fetch logs correlated to one durable function run.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNoNumber of log entries to return (default 50, max 1000).
sinceNoOnly include logs at or after this ISO timestamp or epoch ms.
run_idYesFunction run id, fnrun_...
project_idYesThe project ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states it fetches logs but does not disclose any behavioral traits like read-only nature, rate limits, pagination, or what happens if no logs exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence. It is front-loaded and has no fluff, though it could benefit from a brief mention of context (e.g., requires project_id and run_id).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not explain return format. Schema covers parameters adequately. For a log-fetching tool, the description is minimally complete but lacks output details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description need not add much. It does not provide additional meaning beyond the schema, but the schema itself fully describes parameters. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Fetch' and resource 'logs correlated to one durable function run', clearly distinguishing it from sibling tools like 'get_function_logs' which might return all logs, and 'list_function_runs' which lists runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for logs of a specific run, but does not explicitly state when to use it over alternatives such as 'get_function_logs' or 'get_function_run'. No guidance on context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mailboxA

Get the project's mailbox info (ID, address, slug, default/readiness metadata, and footer-policy fields when returned). Use to check if a mailbox exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox (otherwise returns an ambiguity error naming the slugs).
project_idYesThe project ID

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description includes return fields but does not mention idempotency, permissions, or error behavior (e.g., 404 if not found).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with clear structure: what it returns and why to use it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description covers main returned fields but omits error conditions and structure details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; description adds no extra parameter info beyond the schema (though it lists response fields).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves mailbox info (ID, address, slug, etc.) for a project, distinguishing it from siblings like create_mailbox or list_mailboxes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use case ('check if a mailbox exists'), but does not mention when to use an alternative like list_mailboxes or exclude misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mailbox_webhookA

Get details of a specific webhook by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID
webhook_idYesThe webhook ID (whk_...)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the burden. It indicates a read operation ('get details') but does not mention authentication requirements, error handling (e.g., webhook not found), or rate limits. Basic transparency is present but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that conveys the essential purpose without any filler. Every word is meaningful and necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool without an output schema, the description covers the core functionality adequately. It could optionally mention return fields or error conditions, but completeness is sufficient given the tool's simplicity and the presence of a sibling list tool for context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description. The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate as the schema already documents parameter purposes adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Get details of a specific webhook by ID', which is a clear verb+resource pair. It distinguishes from sibling tools like list_mailbox_webhooks (which lists all) by specifying retrieval by ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives (e.g., list_mailbox_webhooks for listing). Usage is implied by 'by ID', but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notification_preferencesA

Read the operator's notification preferences (channels, cadence, threshold/lifecycle/security toggles, locale, timezone).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only states it reads preferences. It does not disclose any behavioral traits like authentication requirements or side effects, but the read nature is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the verb and resource, and efficiently lists all relevant preference aspects. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description covers the high-level content of preferences. It does not specify return format but is sufficient for a simple read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (no parameters). The description adds meaning by listing the preference categories, providing context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads the operator's notification preferences and lists specific categories (channels, cadence, toggles, locale, timezone), distinguishing it from sibling tools like set_notification_preferences and list_notifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing current preferences, but does not explicitly state when to use versus alternatives or provide exclusions. However, the context is clear enough for differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_operator_statusC

Compact operator-health snapshot: contact assurance, critical items, skipped notifications, organizations, projects, active thresholds. Read via run402 doctor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, side effects, or access requirements beyond the cryptic note 'Read via run402 doctor'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes a cryptic instruction ('Read via run402 doctor') that may confuse the agent. Could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and zero parameters, the description lists content items but lacks details on output structure. Adequate for a simple snapshot tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, so schema coverage is 100%. Baseline score of 3 applies, and description adds no parameter-specific meaning as none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides a compact operator-health snapshot, listing key components (contact assurance, critical items, etc.), and distinguishes from sibling tools like service_health by focusing on operator-specific items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like service_health or service_status. The description lacks context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orgA

Read one organization (GET /orgs/v1/:org_id) — its org_id, display_name, tier, lease_started_at, lease_expires_at, and your role. Any active member may read; a non-member (including a guessed id) gets the same non-revealing 403. Params: org_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe org id, e.g. `org_...`.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses the non-revealing 403 error for non-members and that any active member can read. It lacks details on rate limits or idempotency, but the behavioral info is good for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a single sentence to convey the purpose, fields, access rules, and error behavior. Every part is necessary and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, read-only, no output schema), the description covers key aspects: what it returns, who can use it, and error handling. It could mention idempotency but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter. The description states 'Params: org_id' and the schema provides a description. No additional meaning is added beyond repeating the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read one organization', lists the specific fields returned, and includes the HTTP method and path. It distinguishes from sibling tools like list_orgs and create_org.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions that any active member may read and non-members get a 403, but does not explicitly state when to use this tool versus alternatives like list_orgs for multiple organizations or create_org for creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_snapshotB

Get one project data snapshot and its next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID that owns the snapshot.
snapshot_idYesSnapshot ID.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states a read operation but omits details on authorization requirements, rate limits, or side effects. The brevity leaves ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous words, front-loaded with the key action. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description hints at the return value ('data snapshot and its next actions') but lacks detail on structure. For a simple read tool with 2 params, it is adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (project_id, snapshot_id). The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'one project data snapshot and its next actions', distinguishing it from sibling tools that create, delete, list, or restore snapshots.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., list_project_snapshots, restore_project_snapshot). No context about prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quoteA

Get tier pricing for Run402 projects. Free, no auth required. Shows prices, lease durations, storage limits, and API call limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description implies a read-only, non-destructive operation by stating 'Get tier pricing'. It also discloses that it is free and requires no authentication. However, it does not explicitly state that it does not modify state or mention rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the purpose and includes all necessary information without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description adequately explains the return values by listing the key data fields. This is sufficient for a simple query tool with no parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters (schema coverage 100%), so the description's role is to explain what the tool returns. It adds value by listing the specific data fields: prices, lease durations, storage limits, and API call limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets tier pricing for Run402 projects, specifies it's free and no auth required, and lists the specific data returned (prices, lease durations, storage limits, API call limits). This distinguishes it from sibling tools like tier_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use it (free, no auth required, anyone can use), but does not explicitly mention when not to use it or suggest alternatives like tier_status. Nevertheless, the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_schemaA

Introspect the database schema — tables, columns, types, constraints, and RLS policies. Useful for understanding the database structure before writing queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoThe project ID (defaults to the active project)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It describes the output (tables, columns, etc.) and implies a read-only operation, but does not explicitly confirm non-destructive behavior, permissions, or performance characteristics. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first defines the operation, second gives usage context. No wasted words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description enumerates what is returned (tables, columns, etc.), which is sufficient for this tool. It integrates well with sibling tools and the simple parameter. Minor gap: no mention of output format or limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (one parameter fully described). The description adds no additional meaning beyond the schema; it does not elaborate on the parameter's use or provide examples. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'introspect' and clearly identifies the resource 'database schema' with enumerated details (tables, columns, types, constraints, RLS policies). It effectively distinguishes from query-execution siblings like 'run_sql' and 'rest_query'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states it is useful 'before writing queries', providing clear context for when to use. Does not specify when not to use or list alternatives, but the guidance is adequate for a straightforward introspection tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signerA

Get a KMS signer's metadata + live native-token balance + USD-micros (Chainlink-cached price).

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe KMS signer ID (cwlt_...)
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should fully disclose behavior. It mentions 'live native-token balance' and 'Chainlink-cached price', indicating read operations and data freshness. However, it does not explicitly state that this is a read-only operation with no side effects, nor does it mention any necessary permissions or potential errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the core purpose. Every word adds value; there is no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with two parameters and no output schema, the description adequately covers what the tool returns (metadata, balance, price). It does not mention error cases or what happens if the signer is not found, but overall it is sufficiently complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with basic parameter descriptions for 'signer_id' and 'project_id'. The tool description does not add extra meaning beyond what the schema already provides, so baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and resources: 'Get a KMS signer's metadata + live native-token balance + USD-micros'. It clearly distinguishes from sibling tools like 'list_signers' (which lists all signers) and 'delete_signer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a specific signer (via signer_id) versus list tools, but it does not explicitly state when to use this tool versus alternatives like 'list_signers' for listing or 'provision_signer' for creating. No when-not or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usageB

Get project usage report — API calls, storage usage, limits, and lease expiry.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states it's a report (read), but does not disclose safety, auth requirements, side effects, or error handling. For a tool with no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with dash-delimited list of report contents. Efficiently communicates scope without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists key report elements (API calls, storage, limits, lease expiry), providing adequate context for a simple read operation. Minor gap: no mention of read-only nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter (project_id) described as 'The project ID'. Description adds no further meaning beyond the schema, so baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get project usage report' with specific resource enumeration (API calls, storage, limits, lease expiry), distinguishing it from sibling tools like ai_usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as billing_history or ai_usage. The description implies a straightforward read but does not provide context for excluding other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_project_archiveA

Import a verified portable archive into a new local Run402 Core project through the Core gateway. Automatically verifies before import, supports dry_run and require_runnable, and reports SECRET_VALUES_REQUIRED with next actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew Core project name. Default imported-project.
dry_runNoVerify and plan without creating a project.
core_urlNoCore gateway URL. Default RUN402_CORE_URL or http://127.0.0.1:4020.
env_fileNoEnv file containing required secret values.
archive_pathYesLocal archive directory or .r402ar tar path.
secret_valuesNoExplicit secret values. Overrides env_file entries for duplicate names.
require_runnableNoBlock import unless required secret values are supplied.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses automatic verification before import, dry_run and require_runnable support, and SECRET_VALUES_REQUIRED reporting. With no annotations, the description provides moderate behavioral context but omits details on error handling, permissions, or side effects like cleanup on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. Purpose is front-loaded, followed by key features. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main behavioral aspects (auto-verification, dry_run, require_runnable, secret reporting) but does not describe the return value format or error conditions. For a complex tool with 7 parameters and no output schema, more detail on response behavior would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented there. The description adds minimal extra meaning beyond mentioning dry_run and require_runnable as features, which is already in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (import), resource (verified portable archive), and destination (new local Run402 Core project). Distinguishes from sibling tools like verify_project_archive and inspect_project_archive by indicating it performs import with automatic verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage contexts through mentions of dry_run (to verify only) and require_runnable (to enforce secret provisioning), but lacks explicit comparison to sibling tools or guidance on when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

initA

Set up agent allowance, request faucet funding, and check tier status — single-call bootstrap. Idempotent, safe to re-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
railNoPayment rail: x402 (Base Sepolia, default) or mpp (Tempo Moderato)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It declares the tool is 'idempotent, safe to re-run', which is key behavioral information for a tool that performs multiple actions. It lists the actions performed (allowance, faucet, tier status) but does not detail the exact side effects or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the key actions and ends with a clear behavioral note. Every word earns its place; there is no fluff. It is optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool combines multiple actions (allowance setup, faucet request, tier check), the description adequately lists them. However, it lacks details about return values, prerequisites (e.g., authentication, project context), and error handling. For a critical bootstrap tool, more completeness is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one optional parameter 'rail' with a full description and enum values (100% coverage). The description adds no additional meaning to the parameter beyond what the schema provides. Therefore, the score is at baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it sets up allowance, requests faucet funding, and checks tier status, all in a single call. The verb 'bootstrap' effectively summarizes the resource being set up. However, it does not differentiate from sibling tools like 'allowance_create', 'request_faucet', and 'tier_status', which perform these actions individually.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description labels the tool as a 'single-call bootstrap' and notes it is 'idempotent, safe to re-run'. This implies usage for initial setup and indicates it can be run multiple times without harm. However, it does not explicitly state when to use this tool versus calling the individual tools, nor does it mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

initiate_project_transferA

Initiate a project transfer (owned-org recipient shape v1.96+). Addressed to a WALLET (to_wallet, completed by accept_project_transfer), an EMAIL (to_email, completed by claim_project_transfer), OR an owned ORG (to_org_id, same-actor move that completes immediately in the first gateway release) — provide exactly one. You must currently own/admin the project; for to_org_id you must be an active owner of both the source and destination orgs. Wallet/email transfers create a pending row with 72h expiry and freeze owner-side mutations until completed, cancelled, or expired. The recipient gets the project under the migrate billing policy. Owner's tier lease is NOT refunded. GitHub repo ownership is NOT transferred. Calls POST /projects/v1/:project_id/transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional free-text note shown to the recipient in the preview and notification emails.
to_emailNoRecipient EMAIL. Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. An email recipient completes the transfer via `claim_project_transfer` (they claim it into an org they own).
to_org_idNoDestination ORG id. Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. First gateway release is same-actor only: caller must be an active owner of the source org and destination org. Completes immediately and returns project keys.
to_walletNoRecipient WALLET address (any case — the gateway lowercases). Provide EXACTLY ONE of `to_wallet`, `to_email`, or `to_org_id`. A wallet recipient completes the transfer via `accept_project_transfer`.
project_idYesProject id to transfer. You must currently own or admin it (the gateway verifies against fresh DB state).
billing_policyNoWallet rail only. Phase 1A supports only `migrate` (default). The project moves into the recipient's organization.
kysigned_record_idNoWallet rail only. Optional KySigned record id. Phase 1A stores this verbatim (no verification).
retain_collaborator_roleNoEmail rail only (v1.91): keep a `developer` membership in the recipient's org after the transfer completes. The recipient must accept it at claim time (`accept_retained_collaborator`). Omit for a full severance.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses multiple behavioral traits: 72h expiry, freeze of owner mutations, no refund of tier lease, no GitHub transfer, billing policy migrate, and immediate completion for org. Minor missing details like what happens on expiry or cancellation, but overall strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph with clear logical flow: purpose, recipient options, prerequisites, side effects, and version notes. Every sentence adds value, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description covers purpose, usage, behavior, and parameter semantics comprehensively. It explains all three recipient paths and their consequences. Could mention error handling or expiry behavior in more detail, but overall quite complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds significant value beyond the schema: it explains the exclusivity of the three recipient parameters, the pending vs immediate behavior, default billing policy, and the purpose of retain_collaborator_role for email rail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool initiates a project transfer and specifies three distinct recipient types (wallet, email, org), each with its own completion path. It distinguishes from sibling tools like accept_project_transfer and claim_project_transfer by describing the flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each recipient type, prerequisites (must own/admin project, for org must own both orgs), and the behavioral differences (pending row with 72h expiry for wallet/email, immediate completion for org). It contrasts with sibling tools named in the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_project_archiveA

Inspect a local run402-project-archive.v1 directory or .r402ar tar offline. Reports digest, required secrets, auth stubs, export report, portability report, and compatibility diagnostics without Cloud credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
archive_pathYesLocal archive directory or .r402ar tar path.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes what the tool reports but does not explicitly state that it is read-only or whether it modifies any files. The term 'inspect' implies safety, but more explicit behavioral disclosure (e.g., no side effects) would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently packs all relevant information: target, reports produced, and key condition (no credentials). No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description provides a good overview of what the tool does and what it returns. It could be more explicit about the return format (e.g., JSON) but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description essentially repeats the schema's description of archive_path. No additional semantic detail is added beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Inspect' and the resource 'local archive directory or .r402ar tar offline'. It lists the reports produced (digest, secrets, etc.) and distinguishes from sibling tools like export_project_archive and verify_project_archive by emphasizing offline inspection without Cloud credentials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'without Cloud credentials' and refers to local paths, indicating this tool is for offline inspection. It does not explicitly contrast with alternatives but the context from siblings and the clear scope imply when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invite_auth_userB

Create/update a project auth user and send a trusted invite magic link. Requires service_key and an allowed redirect_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the auth user to invite
is_adminNoSet project_admin status before sending the invite
project_idYesThe project ID
client_stateNoOptional opaque state preserved through invite verification
redirect_urlYesAllowed auth redirect URL for the invite link

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool creates/updates and sends an invite requiring service_key and redirect_url. However, it omits details about return values, side effects, or what happens on update vs create. The mention of 'service_key' not present in the schema also causes confusion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, consisting of two short sentences. It front-loads the main action. However, it could benefit from a slightly more structured format to separate the action from requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, 3 required) and no output schema, the description should explain what the tool returns or side effects. It only states it sends an invite link but does not specify the return value (e.g., success confirmation, user object). This leaves a significant gap for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds minimal additional meaning. It mentions 'requires service_key' which is not in the schema, contradicting the parameter set. It does clarify that 'redirect_url' must be an allowed one and 'is_admin' sets project_admin status, but overall adds little value and introduces confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates/updates a project auth user and sends a trusted invite magic link. This distinguishes it from siblings like 'create_auth_user' (which likely just creates without invite) and 'request_magic_link' (which is for existing users).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions required prerequisites ('service_key' and 'allowed redirect_url'), providing basic usage context. However, it does not explicitly state when to use this tool vs alternatives, nor does it provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoke_functionA

Invoke a deployed function via HTTP. Free functions behave like the direct test path; paid functions require idempotency_key and may spend allowance, returning a result or pollable run_id. Stable errors preserve code and set isError=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRequest body (string or JSON object)
nameYesFunction name to invoke
waitNoWhen a paid invocation returns a 202 run handle, poll the run and replay the same idempotency key for the retained result.
methodNoHTTP method (default: POST)
headersNoAdditional headers to send
project_idYesThe project ID
timeout_msNoMaximum wait time in milliseconds when wait is true.
idempotency_keyNoStable Idempotency-Key required by paid function invocations. Reuse it for the same paid intent; use a new key only for a new paid intent.
poll_interval_msNoPolling interval in milliseconds when wait is true.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by explaining free vs paid behavior, idempotency_key semantics, error handling with isError=true, and the polling mechanism. Annotations are generic (readOnlyHint=false, idempotentHint=false), so the description provides necessary behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences), front-loaded with the core purpose, and every sentence adds necessary detail. No redundant or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (9 parameters, no output schema), the description covers key behaviors: free vs paid, idempotency, error handling, and polling. It lacks a description of the return value structure beyond 'result or pollable run_id', but it is sufficiently complete for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. The description adds meaning to idempotency_key ('reuse for same paid intent') and wait parameter (polling with idempotency_key replay), which goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Invoke' and resource 'deployed function via HTTP', distinguishing it from sibling tools like deploy_function or delete_function. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use this tool: it distinguishes free vs paid functions, explains idempotency_key requirement, and mentions polling behavior. However, it does not explicitly contrast with alternatives or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_cancelB

Cancel a queued or running managed job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesManaged job run ID
project_idYesThe project ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states the basic action. It does not mention side effects, reversibility, permissions, or error conditions, which is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no extraneous information. It is perfectly concise and front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with 2 parameters and no output schema, the description is adequate but minimal. It lacks context about job state transitions or consequences of cancellation, so it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes both parameters. The description adds no additional meaning beyond the schema, meeting the baseline but providing no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Cancel') and the resource ('queued or running managed job'), clearly distinguishing it from sibling tools like jobs_submit or jobs_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., jobs_purge, jobs_get) or when not to use it. The description provides no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_download_artifactA

Download a completed managed job's artifact by filename to a local file. Discover the recorded filenames from the artifacts map returned by jobs_get; the legacy run402:// refs were retired in favor of these gateway URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesManaged job run ID (must be completed)
filenameYesArtifact filename to download. Discover the recorded set from the artifacts map returned by jobs_get.
project_idYesThe project ID
output_pathYesLocal filesystem path to write the artifact bytes to. Parent directories will be created.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the output is written to a local file and that parent directories are created. However, it does not disclose if the file is overwritten, the potential for long downloads, or any side effects beyond writing. Some gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two tightly-written sentences. The first sentence immediately defines the primary purpose, and the second provides necessary context about prerequisite data and legacy information. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the tool's purpose and parameter semantics well, but it does not cover the return value (if any) or error scenarios (e.g., what happens if the file doesn't exist). Given no output schema and no annotations, some completeness is missing, though the core usage is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing a baseline of 3. The description adds value beyond the schema by specifying that job_id must be from a completed job, that filenames come from jobs_get's artifacts map, and that output_path will create parent directories. This extra context improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('download') and the specific resource ('completed managed job's artifact by filename to a local file'). It distinguishes this tool from siblings by mentioning that filenames are discovered via jobs_get, and it notes that legacy refs are retired, providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use the tool: after a managed job is completed and after retrieving filenames from jobs_get. It implies the job must be completed (reinforced in parameter description). It does not explicitly list when not to use it, but the guidance is sufficient for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_getA

Get a managed job run by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesManaged job run ID
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description bears full burden. It only states 'Get', which implies a read operation, but fails to mention permissions, rate limits, or what the response contains. Minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear, concise sentence with no extraneous information. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with full schema coverage, the description is adequate but minimal. It does not mention that no output schema exists, nor does it clarify the scope of the job run data returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'managed job run by id', which is specific and distinguishes from sibling tools like 'jobs_cancel', 'jobs_logs', etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'jobs_logs' or 'jobs_download_artifact'. The description implies usage for retrieving a specific job run, but lacks when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_logsA

Read recent runner logs for a managed job. Use tail to cap entries and since for an ISO-8601 lower bound; legacy epoch milliseconds are still accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNoMaximum number of log entries to return
sinceNoOnly include logs at or after this ISO-8601 timestamp. Legacy epoch milliseconds are also accepted.
job_idYesManaged job run ID
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description bears full responsibility. It correctly implies a read-only operation and notes legacy epoch millisecond acceptance, but omits details on auth requirements, rate limits, return format, or log retention. The behavioral traits disclosed are minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. The purpose is front-loaded, and the parameter guidance is compact yet informative. Every sentence serves a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (4 parameters, no output schema), the description provides adequate context for a read-only log retrieval operation. It explains the optional parameters and constraints. However, it does not describe the output format or any limitations like pagination or log retention period, which would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with 'description' fields already explaining each parameter. The description adds some context by stating 'use tail to cap entries' and 'since for an ISO-8601 lower bound', but this largely echoes the schema. No new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Read' and the resource 'recent runner logs for a managed job', making the tool's purpose unambiguous. It distinguishes from siblings like 'jobs_get' and 'get_function_logs' by specifying 'runner logs' rather than job metadata or function logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises on using optional parameters 'tail' and 'since', but does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'jobs_get' for job status, 'get_function_logs' for function logs). The context is clear but lacks when-not-to-use or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_purgeA

Purge all managed job runs for a project, terminating known active runners first.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses that active runners are terminated, which is valuable. However, it does not mention irreversibility, required permissions, or potential impacts on other resources. More detail would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence. It communicates the core action and a key behavioral detail without any fluff or repetition. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, no output schema), the description is fairly complete. However, it lacks information about return values, error handling, or any prerequisites. For a destructive action, more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single parameter project_id with a description 'The project ID'. The tool description adds no additional semantic meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'purge', identifies the resource 'managed job runs', and scopes it to 'for a project'. It also mentions a unique behavioral aspect: 'terminating known active runners first'. This clearly distinguishes it from sibling tools like jobs_cancel or jobs_submit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies this tool is for bulk cleanup of job runs, it does not explicitly state when to use this tool over alternatives like jobs_cancel. There is no mention of prerequisites, limitations, or exclusions. The guidance is minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobs_submitA

Submit a platform-managed job. The request must match the gateway jobs API shape: job_type, input with input.json, and max_cost_usd_micros. The SDK supplies the required idempotency header.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYesGateway-shaped managed job submit request
project_idYesThe project ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It mentions platform management and idempotency but lacks details on auth needs, destructive potential, or process outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with zero waste. Every word serves a purpose, efficiently conveying the tool's function and key requirement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and nested objects, the description adequately covers the request shape but omits expected return value or post-submission behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description reiterates required fields (job_type, input, max_cost_usd_micros) already in schema, adding little extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Submit a platform-managed job' with a specific verb and resource. It distinguishes from siblings like jobs_get and jobs_cancel by focusing on submission.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on the expected request shape but does not explicitly state when to use this tool versus alternatives or mention exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_emailsC

List sent emails from the project's mailbox. Shows message ID, template, recipient, status, and timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor (message id from prior page)
limitNoMax messages to return (server caps at 200)
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
directionNoFilter to received (inbound) or sent (outbound) messages. Omit for both. 'inbound' is the reconciliation backstop for a missed reply_received webhook.
project_idYesThe project ID

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. The description claims 'list sent emails' but the direction parameter can filter inbound or outbound, making the statement misleading. It fails to mention that results are paginated, ordered, or how the API handles limits. This inaccuracy reduces trust and transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences but lacks structure (e.g., no bullet points or clear separation of purpose from fields). It is not overly verbose, but the misleading 'sent emails' phrase costs efficiency. Could be slightly improved without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain pagination behavior (after cursor, limit), default direction, or how to handle the mailbox parameter when the project has one mailbox. The return format is only hinted ('Shows message ID, template...') without details on order or structure. More context is needed for reliable agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the parameters are already well-documented. The tool description does not add any additional meaning or context about the parameters beyond what the schema provides. According to guidelines, baseline 3 is appropriate when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists emails from a mailbox and enumerates returned fields (message ID, template, recipient, status, timestamp). It implicitly distinguishes from sibling tools like get_email (single email) and send_email. However, it inaccurately specifies 'sent emails' when the direction parameter allows both inbound and outbound, which slightly undermines clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_email for individual messages, list_mailboxes for mailbox metadata). Missing context on pagination (after cursor, limit), default behavior, or filtering with the direction parameter. The description does not help the agent decide when to include or omit optional parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_function_runsA

List durable runs for a function, filterable by status, event_type, time window, limit, and cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFunction name
limitNoMaximum runs to return (max 100).
sinceNoOnly include runs created/updated at or after this ISO timestamp or epoch ms.
untilNoOnly include runs created/updated before this ISO timestamp or epoch ms.
cursorNoPagination cursor returned by a prior list call.
statusNoFilter by run status
event_typeNoFilter by event type
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral traits. It only mentions the listing and filterability but omits whether the operation is read-only, any side effects, pagination behavior (cursor/limit details), rate limits, or authentication needs. The description provides minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose and key filterable dimensions. Every word earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 8 parameters, the description provides a basic overview but does not explain return structure, default sorting, or ordering. It lacks depth about what the agent can expect after invocation, leaving some gaps for a moderately complex listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description lists some filter options (status, event_type, time window, limit, cursor) but does not add meaning beyond what the schema already provides. It serves as a high-level summary without additional detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists 'durable runs for a function', which is a specific resource. It distinguishes from siblings like 'get_function_run' (single run) and 'list_functions' (list functions). The mention of filterable options adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing runs but does not explicitly state when to use this tool versus alternatives like 'get_function_run' or 'cancel_function_run'. There is no guidance on prerequisites or when not to use it, so the usage context is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_functionsA

List all deployed functions for a project. Shows names, URLs, Node runtime, timeout, memory, resolved direct deps, and injected @run402/functions compatibility metadata: deployed runtime_version, gateway runtime_current_version, guaranteed runtime_minimum_version, and runtime_stale. Rebuild stale functions with functions_rebuild; an unchanged-source redeploy does not refresh the injected runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It implies read-only behavior by listing fields. It discloses the caveat about runtime not refreshing on redeploy. However, it does not mention authentication, rate limits, or error conditions, so transparency is adequate but not outstanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first covers purpose and output details, second adds usage guidance and behavioral caveat. No redundant information, front-loaded, and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with one parameter and no output schema, the description provides a detailed list of return fields and a behavioral note. It lacks mention of pagination or ordering, but these are not critical for basic usage. Overall sufficient for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter project_id, but its description only says 'The project ID'. The tool description does not add any additional meaning beyond the schema. Baseline 3 is appropriate as the description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all deployed functions for a project' and enumerates specific fields shown. While it does not explicitly differentiate from siblings like deploy_list or list_versions, the level of detail makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a specific alternative tool (functions_rebuild) for stale functions and warns that redeploy without source change does not refresh runtime. This gives clear guidance on when to use another tool and a behavioral nuance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_incoming_transfersA

List pending project transfers OFFERED TO the authenticated wallet (v1.59+). Each entry carries preview_path for deep-linking into the preview tool. Calls GET /agent/v1/transfers/incoming.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOpaque pagination cursor (next_cursor from a prior page).
limitNoPage size (default 50).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

In the absence of annotations, the description discloses the GET HTTP method, the API endpoint, and the fact that entries include a preview_path for deep-linking. It also mentions the version requirement. It does not explicitly state that the operation is read-only, but the nature of listing transfers implies it. Overall, it provides sufficient behavioral context for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences covering purpose, scope, version, preview_path, and the HTTP endpoint. Every sentence adds value, with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the main purpose and pagination parameters, it lacks details about the return structure beyond the preview_path field. Since no output schema is provided, the description should describe what fields to expect in each entry. This omission leaves the agent uncertain about the response format, making the context incomplete for a well-informed invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (after, limit) are fully described in the input schema, achieving 100% schema description coverage. The description does not add any new meaning or usage guidance beyond what the schema already provides, so it meets the baseline without additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('List pending project transfers'), the scope ('OFFERED TO the authenticated wallet'), and distinguishes from siblings like list_outgoing_transfers by emphasizing 'incoming'. It also adds version info and the API endpoint, leaving no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (to view incoming transfers) but does not explicitly state when not to use it or suggest alternatives like list_outgoing_transfers or preview_project_transfer. The purpose is understandable, but usage guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mailboxesA

List a project's mailboxes, including address/managed_address, default-role metadata (is_default_outbound, is_auth_sender), readiness (can_send, can_receive, send_blocked_reason, domain_kind), footer-policy fields, mailbox_settings, and next_actions. Use before choosing or repairing email defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The verb 'list' implies a read-only operation, and the description lists the returned fields without signalling any side effects. It is transparent about what the tool does, though it could explicitly state that it does not modify data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose and includes a usage hint. It is concise with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one parameter and no output schema, the description is fairly complete. It explains what fields are returned and gives a usage context. It could mention pagination or ordering, but given the simplicity, it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter project_id, with a clear description in the schema. The tool description does not add any additional information about the parameter beyond the schema, so baseline score 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'mailboxes', and enumerates the fields returned, such as address/managed_address, readiness, and footer-policy fields. It clearly distinguishes from siblings like get_mailbox (singular) and list_projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'Use before choosing or repairing email defaults,' providing a clear when-to-use hint. However, it does not explicitly mention when NOT to use it or alternative tools like get_mailbox for a single mailbox.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mailbox_webhook_deliveriesA

List durable webhook delivery rows for the project's mailbox. Webhook delivery is at-least-once with bounded retries + backoff; failures land in 'failed_permanent' (the dead-letter queue). Filter by status to inspect what was lost. Consumers must dedupe on the envelope idempotency_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor (delivery id from a prior page)
limitNoMax rows to return (server caps at 200)
statusNoFilter by delivery status. 'failed_permanent' is the dead-letter queue (events that exhausted retries or failed permanently).
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses at-least-once delivery, retries, backoff, and the dead-letter queue concept. However, it omits pagination behavior, rate limits, auth requirements, and whether the operation is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences), front-loaded with the purpose, and each sentence adds value without redundancy. It efficiently covers the core concept and critical instructions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 params, no output schema, no annotations), the description covers essential behavioral aspects but lacks details on output shape (e.g., fields beyond idempotency_key), pagination usage of 'after', and the 'limit' parameter cap. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by mentioning the need to dedupe on idempotency_key and to filter by status, but does not significantly enhance understanding of individual parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists webhook delivery rows for the project's mailbox, using a specific verb and resource. It distinguishes from sibling tools like list_mailbox_webhooks and includes behavioral context (durable, at-least-once retries, dead-letter queue).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description suggests using this tool to inspect lost events by filtering on status, but it does not explicitly state when to use versus alternatives (e.g., redrive_mailbox_webhook_delivery). No when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mailbox_webhooksA

List all webhooks registered on the project's mailbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden but discloses no behavioral traits beyond 'list all'. No mention of pagination, ordering, or read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy, front-loaded with action and resource. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple list operation, but lacks details about response content (e.g., webhook properties) and the optional mailbox parameter usage. No output schema to fill gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes parameters. Description adds no extra meaning beyond restating the resource context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly specifies action (list), resource (webhooks), and scope (on the project's mailbox), distinguishing it from siblings like list_mailboxes and list_mailbox_webhook_deliveries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like list_mailbox_webhook_deliveries or filtering options. Usage is implied by the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notification_channelsA

List every notification channel for the operator: email, webhook, and every live (non-revoked) Telegram binding with its id, status (pending/active/revoked), chat metadata, and label. Use this to find a telegram_binding_id for create_notification_rule.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that only live (non-revoked) Telegram bindings are included and lists the fields returned. It does not mention side effects, but as a read-only listing, none are expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The purpose is front-loaded, and the description is structured effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters. The description covers what is listed, the fields returned, and a primary use case. No output schema exists, but the described return values are sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description adds no parameter info, but per calibration rules, 0 parameters gives a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists every notification channel (email, webhook, Telegram bindings) and specifies the returned fields. It explicitly differentiates from siblings like list_notification_rules by focusing on channels and mentions a specific use case for create_notification_rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description directly tells when to use it ('Use this to find a telegram_binding_id for create_notification_rule'). It does not explicitly state when not to use, but the purpose is so clear that alternative usage contexts are evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notification_rulesA

List the operator's Telegram routing rules. Each rule ANDs its match dimensions (project_id, source, event_types, classes); an omitted dimension is a wildcard. One rule always targets exactly one Telegram binding.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and provides good behavioral context: it explains rule matching logic (AND, wildcards, one binding per rule) and implies a read-only operation. Lacks details on permissions or rate limits, but sufficient for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences only: first states the purpose, second explains rule structure. No superfluous words, clearly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains rule semantics but does not describe the output format (e.g., array fields, pagination). With no output schema, more detail would benefit completeness. However, the essential behavior is conveyed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and 100% coverage. The description does not need to add parameter information; baseline is 4 for zero-parameter tools. No contradiction or omission.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('operator's Telegram routing rules') and the action ('List'). It explains the rule semantics (AND-ing dimensions, wildcard omitted dimensions, one binding per rule), which distinguishes it from siblings like list_notifications or list_notification_channels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conveys usage for viewing routing rules but does not explicitly state when to use this tool versus create/delete/modify alternatives. However, the context of sibling tools makes the use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notificationsA

List the operator's notification audit log (delivered, failed, and skipped attempts). Paginated; filter by event type or since timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by event_type (e.g. project_past_due)
afterNoOpaque pagination cursor (next_cursor from a prior page).
limitNoPage size (default 50, max 200)
sinceNoISO timestamp; only notifications at or after this time

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It reveals that the tool returns delivered, failed, and skipped attempts and supports pagination and filtering. However, it does not explicitly state that the operation is read-only, mention rate limits, or describe the response format. The addition of the audit log context provides moderate value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and key features (audit log, status types, pagination, filters). No superfluous words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description provides the core purpose and capabilities but omits details about the response structure, error handling, or any side effects. For a data retrieval tool with four parameters, the description is minimally adequate but leaves important context unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all four parameters having descriptions. The description's mention of filtering by event type or since timestamp mirrors the parameter descriptions without adding new semantic details. Thus, the description does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists the operator's notification audit log, specifying three types of attempts (delivered, failed, skipped). This distinguishes it from sibling tools like get_notification_preferences (which retrieves preferences) and test_notification (which sends a test).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions pagination and filtering capabilities but does not address scenarios where a different tool (e.g., get_notification_preferences) would be more appropriate. Given the large set of sibling tools, explicit usage guidelines are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_org_membersB

List the members of an org and their roles. Params: org_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe org id, e.g. `org_...`.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits like read-only nature, rate limits, or authorization needs. It only states the action without additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with one sentence plus a brief param note. No unnecessary words, and important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple, the description does not explain return structure, pagination, or role details. With no output schema, additional context would be beneficial for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full coverage for the single parameter (org_id). The description redundantly mentions 'Params: `org_id`' but adds no new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'members of an org and their roles', distinguishing it from sibling tools like 'list_orgs' and 'get_org'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as 'add_org_member' or 'set_org_member_role'. The description lacks context about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_orgsA

List the orgs you are a member of, with each org's id, display name, your role, and membership status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral burden. It describes output fields but lacks details on pagination, ordering, or whether it includes all membership statuses. However, for a simple list tool, basic transparency is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, clear and direct, no unnecessary words. Front-loaded with key purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-param tool, the description specifies returned fields. Missing details like authentication requirements or pagination, but overall adequate given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist (empty schema, 100% coverage). The description adds no param info, which is acceptable. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it lists orgs the user is a member of and specifies returned fields (id, display name, role, membership status). It clearly distinguishes from siblings like 'get_org' (single org) and 'list_org_members' (org members).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when needing a list of user's orgs, but does not explicitly state when to use vs. alternatives or provide exclusions. No guidance on when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_outgoing_transfersA

List pending project transfers INITIATED BY the authenticated wallet (v1.59+). Each entry carries preview_path for deep-linking into the preview tool. Calls GET /agent/v1/transfers/outgoing.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOpaque pagination cursor (next_cursor from a prior page).
limitNoPage size (default 50).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It specifies the HTTP GET method and mentions the preview_path for deep-linking, implying a read-only operation. However, it does not explicitly state that no mutations occur, nor does it disclose any side effects or authentication requirements beyond the implicit wallet context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear front-loading: first sentence conveys core purpose, second adds a key detail (preview_path) and the API call. No redundancy or unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description specifies the returned data includes preview_path, but lacks details about the full response structure or pagination behaviour. Given the tool's simplicity and the presence of pagination parameters, a brief note on how to iterate pages would improve completeness. Still, it covers essential context for an agent to begin using the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (two parameters: after and limit). The description does not add meaning beyond the schema; the schema already describes 'after' as an opaque cursor and 'limit' as page size with default 50. The description's mention of preview_path is unrelated to parameters, so no additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists pending project transfers initiated by the authenticated wallet, distinguishing it from incoming transfers and other transfer-related siblings like list_incoming_transfers, initiate_project_transfer, etc. It also mentions the API endpoint and the preview_path field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for outgoing initiated transfers, but lacks explicit guidance on when to use this tool versus alternatives such as list_incoming_transfers, preview_project_transfer, or accept_project_transfer. Context from sibling names fills the gap, but the description itself does not provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_passkeysB

List the authenticated user's active passkeys.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
access_tokenYesAuthenticated user's access_token

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It implies a read operation by using 'List', but does not disclose that it is non-destructive, what authentication is needed beyond the access token, or any other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb, no redundant or extra words. It is highly concise and structured effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with no output schema, the description should hint at the return format (e.g., list of passkey objects). It does not describe what 'active passkeys' means or the structure of the output, leaving the agent with incomplete information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the parameter names and descriptions already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'the authenticated user's active passkeys', which is specific and distinguishes it from sibling tools like delete_passkey or passkey_register_options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like delete_passkey or passkey_register_verify. The description only states what it does, not the context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_branchesB

List active contained branch projects for a parent project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesParent project ID.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the sole source for behavioral traits. It does not disclose pagination, result limit, what 'active' means, or any side effects. Merely states the action without depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the action. Every word contributes meaning, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no output schema and no annotations, the description should clarify response format, pagination, and ambiguity of 'active' and 'contained'. It falls short, leaving critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for project_id. The tool description adds no new meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'list' and the specific resource 'active contained branch projects for a parent project'. Distinguishes from siblings like create_project_branch and delete_project_branch by focusing on listing active contained branches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives like list_projects or other list tools. No prerequisites, conditions, or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_eventsA

Catch up on what happened to a project since you last looked: the durable, cursored feed of deploy activations, mailbox suspensions, transfers, lifecycle cliffs, and verification outcomes, each with platform-suggested next_actions. The feed also carries app-emitted business facts (a deployed function's own events.emit calls) alongside the platform's own events — pass source:"app" to read just the app's facts, source:"platform" for just the platform's operational record, or event_type (comma-separated) to filter to one-or-more specific types; key on (source, event_type) together since app-chosen type names are free-form. Reach for this after any deploy (the apply/promote response hands you a positioned cursor) and at the start of a session on an existing project. Store the returned cursor and pass it back next time; an expired cursor returns reset:true + earliest_cursor instead of an error. Read-only; works even on frozen projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default 50, max 200).
cursorNoOpaque cursor from a prior page (the response's `cursor`, or any event's `id`). Returns events strictly after it. Omit on first contact to start from the earliest retained event. Never parse cursors.
org_idNoRead the org-wide feed instead (union across the org's projects; requires an active org membership).
sourceNoRestrict to one source: "app" (business facts a deployed function emitted itself via events.emit) or "platform" (every non-app source — the platform's own operational record). Omit to read both lanes in one merged, cursor-ordered feed.
event_typeNoRestrict to one or more event types, comma-separated (e.g. "signature_completed,booking_created"). Composes with source — e.g. source: "app" + event_type to watch for one specific business fact.
project_idNoProject whose feed to read. Omit when passing org_id.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: read-only, durable cursor, expired cursor returns reset:true + earliest_cursor, works on frozen projects. It also explains the nature of the feed (app vs platform events) and next_actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat lengthy but well-structured with front-loaded main purpose. Every sentence adds value, though some details could be condensed. It effectively uses examples and conditional logic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 parameters, no output schema), the description is remarkably complete. It explains the return structure (cursor, events with next_actions), pagination, filtering, and use cases. No gaps for effective usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds significant meaning: explains the enum values for source, how event_type composes with source, that cursor is opaque and how to handle it, and the relationship between project_id and org_id. This goes well beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'durable, cursored feed' of project events, including specific event types like deploy activations, mailbox suspensions, etc. It distinguishes from sibling tools by emphasizing the cursored feed and filtering capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Reach for this after any deploy' and 'at the start of a session on an existing project.' Also explains cursor handling and that it is read-only, but does not mention alternatives or when not to use it compared to other event-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsA

List projects from the named, domain-aware inventory (GET /projects/v1). Membership-scoped by default: every project owned by an org the agent's wallet is an active member of, with name, site_url, custom_domains, org (org_id), and status. SIWX wallet auth is signed automatically. Pass org_id to filter to one org (authorize-before-reveal: non-member/guessed → 403, non-UUID → 400), all:true to read the cross-wallet inventory across every wallet controlling your operator email, or limit/cursor to paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoRead the cross-wallet inventory across every wallet controlling your operator email instead of just this wallet's membership-scoped slice. Mutually exclusive with org_id.
limitNoPage size for the membership-scoped read (server default 50, max 200).
cursorNoPagination cursor from a previous response's next_cursor.
org_idNoOptional org (organization) id to filter to. Authorize-before-reveal: a non-member or guessed id returns the same 403 as a real-but-unauthorized org; a non-UUID id is a 400.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits: authentication via SIWX wallet, error responses for org_id (403/400), pagination with limit/cursor, and the all parameter for cross-wallet inventory. However, it does not explicitly state that it is read-only or mention rate limits, but given no annotations, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the main purpose and provides necessary details. It is relatively concise, though it could be slightly more structured (e.g., bullet points) without losing information. Every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists returned fields (name, site_url, etc.), explains auth, error cases, and pagination. It covers the main usage scenarios and constraints, making it fairly complete for a listing tool with moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds minimal meaning beyond the schema's parameter descriptions; it mostly repeats the same information (e.g., org_id authorize-before-reveal, all parameter). No significant extra context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List projects' and specifies the scope (membership-scoped) and the endpoint. It distinguishes from siblings like project_get by focusing on listing multiple projects, with explicit details on returned fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool for listing projects, but does not explicitly mention when not to use it or provide alternatives such as project_get for single project retrieval. It gives context on filtering and pagination but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_snapshotsA

List project data snapshots with optional kind filter and keyset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional snapshot kind filter.
afterNoKeyset pagination cursor from a previous response.
limitNoPage size, max 100.
project_idYesProject ID whose snapshots should be listed.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It mentions optional filtering and pagination, but does not specify ordering, default page size, or confirm that the operation is read-only. The schema provides parameter details, but behavioral traits like side effects are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads key information. No redundant or unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and no output schema, the description covers the basic functionality but lacks details on pagination mechanics, default behavior, and ordering. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing full parameter documentation. The description adds minimal value beyond the schema by reiterating 'optional kind filter and keyset pagination'. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('project data snapshots'), and key features ('optional kind filter and keyset pagination'). This distinguishes it from sibling tools like 'create_project_snapshot' or 'get_project_snapshot'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('list snapshots'), but there is no explicit guidance on when to use this tool versus alternatives (e.g., 'get_project_snapshot' for a single snapshot). No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_secretsA

List secret keys for a project. Values and value-derived hashes are never shown; use this only to check which keys are configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose all behavioral traits. It only states that values and hashes are never shown, but omits other important behaviors such as output format, pagination, error handling, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two sentences with no unnecessary words. The purpose is front-loaded, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic purpose and a key behavioral constraint, but lacks details about the output structure, potential errors, or pagination. For a simple list tool, it is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with a description for the single parameter 'project_id'. The description does not add any additional semantic information beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List secret keys for a project' with a specific verb and resource, and differentiates from sibling tools like set_secret and delete_secret by noting that values and hashes are never shown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'use this only to check which keys are configured', providing clear context for when to use the tool. However, it does not mention when not to use it or provide alternative tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_signersA

List all KMS signers owned by the project, including deleted ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the inclusion of deleted signers, which is a behavioral trait. However, it does not mention permissions, rate limits, or return format, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste. It is front-loaded with the main action. While concise, it could benefit from a brief mention of the return type without losing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description covers the basic purpose and scope. However, it lacks details about the output (e.g., what properties are returned) and any pagination or ordering, which a complete description should include.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'project_id' described in schema. The description adds no additional parameter information beyond restating 'owned by the project', so it provides no extra value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'List' and the resource 'KMS signers', specifies scope 'owned by the project, including deleted ones', and distinguishes it from sibling tools like get_signer (specific signer) and delete_signer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While not explicit, the description implies when to use this tool (listing all signers, including deleted) versus siblings like get_signer (single signer) or delete_signer (deletion). The inclusion of 'including deleted ones' subtly guides against using it when only active signers are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subdomainsA

List all subdomains claimed by a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While the description indicates a safe read operation, it lacks details on pagination, limits, or what 'claimed' means relative to sibling tools. No annotations are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description omits what the response contains (list of strings? objects?), and lacks context on how this tool relates to claim_subdomain and delete_subdomain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter (project_id) has full schema coverage, and the description adds no additional meaning beyond the schema's 'The project ID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (subdomains), and scope (claimed by a project), distinguishing it from sibling tools like list_custom_domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as list_custom_domains or claim_subdomain, and no exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tenant_paymentsA

List redacted tenant x402 payment records for priced function web routes on a project (GET /projects/v1/:project_id/tenant-payments). Requires project.tenant_payments.read: org developer+ or read-scoped project grant/delegate. Raw X-PAYMENT headers, authorization hashes, and internal metadata are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOpaque keyset cursor from a previous next_cursor.
limitNoPage size. Server default 50, max 200.
statusNoOptional status filter.
project_idYesProject id, e.g. `prj_...`.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Mentions redaction and excluded data, but omits read-only nature, pagination behavior, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose, endpoint, auth, and exclusions without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema; description does not explain response structure, pagination usage, or record format, which is needed for a 4-parameter tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and describes all parameters; description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'list redacted tenant x402 payment records for priced function web routes on a project' with HTTP endpoint, distinguishing it from other list tools by specifying the resource and redaction behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies required permission scope ('project.tenant_payments.read: org developer+ or read-scoped project grant/delegate') and what is never returned, but lacks explicit guidance on when to use vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_versionsB

List published versions of a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

B3.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, pagination, sorting, or effects on the system. The agent is left unaware of whether this operation is safe or has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is minimal but does not cover expected response format, potential pagination, or ordering. It is adequate but leaves gaps for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter 'project_id', which is adequately described in the schema. The description does not add any additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List published versions of a project' clearly states the action (list) and the resource (published versions) with a specific scope (of a project). It distinguishes itself from sibling tools like 'delete_version' and 'update_version' by focusing on listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'list_projects' or other list operations). The description lacks context on prerequisites, such as requiring a project ID, and does not indicate when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

passkey_login_optionsA

Create WebAuthn passkey login options for a project app origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoOptional email hint. Does not expose allowCredentials.
app_originYesExact app origin for the WebAuthn ceremony
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits (e.g., that this generates options without side effects, or requires user interaction). It only states the action without explaining the result or implications for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key information. No redundant or extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is minimal. It covers the basic purpose but lacks details on what the tool returns or any prerequisites, making it adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are described in the schema (100% coverage), so the description adds no new meaning beyond 'create for a project app origin'. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and the resource ('WebAuthn passkey login options') with specific scope ('for a project app origin'). It distinguishes from sibling tools like 'passkey_register_options' by specifying 'login'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like 'passkey_register_options' or 'passkey_login_verify'. Usage is implied by the name and description, but no direct instructions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

passkey_login_verifyA

Verify a browser WebAuthn assertion and return a normal Run402 auth session.

ParametersJSON Schema
NameRequiredDescriptionDefault
responseNoPublicKeyCredential assertion response JSON from the browser
project_idYesThe project ID
challenge_idYeschallenge_id returned by passkey_login_options

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description lacks disclosure of prerequisites, side effects, error conditions, or security implications. Does not mention that it likely requires a prior challenge or that it creates a session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with 13 words. No redundant information or extraneous details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has low complexity with 3 well-described parameters and no output schema. Description covers the essential purpose, though additional context about the prerequisite challenge_id could be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. Description adds no extra meaning beyond the schema, such as format or constraints for the 'response' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb (verify), resource (WebAuthn assertion), and outcome (return auth session). Distinguishes from siblings like passkey_register_verify and passkey_login_options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Implies usage in login flow after passkey_login_options, but no alternatives or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

passkey_register_optionsA

Create WebAuthn passkey registration options for the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_originYesExact app origin for the WebAuthn ceremony
project_idYesThe project ID
access_tokenYesAuthenticated user's access_token

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses the basic action but does not explain side effects, return value format, or whether it creates a session. Missing behavioral details like idempotency or expiration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, directly communicates the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool, but lacks mention of return format and the next step (verification with passkey_register_verify). No output schema or annotations to supplement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 parameters with descriptions. The description adds the context 'for the authenticated user' but does not explain parameter roles beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool creates WebAuthn passkey registration options for the authenticated user, specifying the verb, resource, and user scope. It distinguishes from sibling tools like passkey_register_verify and passkey_login_options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (for passkey registration) but lacks explicit guidance on when not to use it or comparisons to alternatives like passkey_register_verify or passkey_login_options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

passkey_register_verifyB

Verify a browser WebAuthn registration response and store the user's passkey.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional passkey label
responseNoPublicKeyCredential registration response JSON from the browser
project_idYesThe project ID
access_tokenYesAuthenticated user's access_token
challenge_idYeschallenge_id returned by passkey_register_options

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool stores the passkey (write operation), but doesn't elaborate on side effects like permanent storage or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no wasted words. Could benefit from a second sentence for context, but still concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or annotations, and 5 parameters. The minimal description leaves out necessary context like the flow from passkey_register_options and the expected format of the response parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'verify' and 'store' and the resources 'browser WebAuthn registration response' and 'user's passkey', distinguishing it from siblings like passkey_register_options and passkey_login_verify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. The description does not mention the prerequisite call to passkey_register_options or that it follows the browser registration step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_urlA

Call an arbitrary HTTP(S) URL and automatically satisfy a supported x402 exact-payment challenge. Defaults to a $0.10 ceiling, uses the configured allowance wallet, forwards Idempotency-Key, and returns the HTTP response plus a structured payment receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe HTTP(S) URL to call
bodyNoRequest body as text or a JSON object
methodNoHTTP method (default: GET)
max_usd_microsNoMaximum payment in USD micros (default: 100000, or $0.10)
idempotency_keyNoStable Idempotency-Key forwarded to the seller; on Run402 pending, retry the identical call with the same payer and key
require_receiptNoRequire a verified wallet-rooted merchant offer before payment and a matching receipt after settlement

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant detail beyond annotations: payment challenge auto-satisfaction, default payment ceiling, allowance wallet usage, idempotency key forwarding, and response contents (HTTP response + receipt).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single focused paragraph, front-loaded with core action, no redundant phrasing. Every sentence adds relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, payment mechanism, idempotency, return value. Lacks detail on error scenarios or behavior when URL does not support x402. Otherwise complete for a tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with descriptions (100% coverage), so baseline applies. Description reinforces defaults (e.g., $0.10 ceiling) and idempotency behavior but does not add new meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it calls an HTTP URL with automatic payment challenge satisfaction, distinguishing it from siblings focused on other operations. It specifies the action, resource, and unique capability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context like default ceiling, allowance wallet, and idempotency key forwarding but lacks explicit guidance on when to use vs alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_project_transferA

Fetch the preview document for a project transfer of any pending kind (v1.93+). Returns the safe review payload: project name, custom domains, subdomains, function names, secret NAMES (values are never returned), CI bindings that will be revoked at completion, mailbox summary, billing implications, and — on email transfers — the retain_collaborator offer. Caller must be a party to the transfer. Calls GET /agent/v1/transfers/:transfer_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
transfer_idYesTransfer id to preview. You must be a party to it (wallet signer, the addressed-email principal, or an offering-org member). Kind-agnostic — works for wallet and email transfers.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description fully carries the burden. It discloses what the return payload contains (including sensitive data like secret names but not values) and the authentication requirement. It does not mention rate limits or side effects, but for a read-only preview this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, but the first sentence is long and lists many return fields. It is still readable and front-loaded with the core action. Could be slightly more concise, but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, no output schema, and no annotations, the description provides a thorough list of return fields, version requirement, and caller prerequisite. It is nearly complete for guiding an agent, though error conditions could be added.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter transfer_id already has a detailed description in the input schema (100% coverage). The main description adds nothing beyond the schema, so it meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch' and the resource 'preview document for a project transfer', distinguishing it from sibling transfer tools like accept_project_transfer or initiate_project_transfer. It also mentions the API endpoint for precise identification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that the caller must be a party to the transfer and that the tool is kind-agnostic (works for wallet and email transfers). Although it does not explicitly contrast with siblings, the context makes it clear this is a preview step before acting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_getA

Authoritative server read of a project — name, owning org, tier, effective status, active deploy, mailbox addresses, and usage vs. tier limits. Live API call; returns no keys (use project_key_cache_status/export for local cached keys).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID to read (authoritative server view; no keys)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It clearly indicates this is a read operation ('read') and a live API call, implying no destructive side effects. It doesn't detail error handling or rate limits, but for a simple read tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long. The first sentence introduces purpose and key data points, the second clarifies the live nature and key exclusion. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (1 param, no output schema), the description covers what it does, what it returns, and differentiation from siblings. It lacks details on return format or errors, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameters (project_id with description). The description adds minimal extra meaning beyond restating that it's an authoritative server view and no keys. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's an 'Authoritative server read of a project' and lists specific data returned (name, org, tier, status, deploy, mailbox, usage). It distinguishes from sibling tools by explicitly noting it returns no keys and directing to project_key_cache_status/export for cached keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context ('Live API call') and directs users to alternative tools for cached keys. While it doesn't explicitly state when not to use this tool, the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_key_cache_exportA

Export local cached anon/service keys for one project. Requires reveal:true and emits secret material; use only when a credential-required operation needs keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
revealYesMust be true to emit secret key material
project_idYesProject ID to export from the local project-key credential cache

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the requirement for reveal:true and that it emits secret material, which is critical. However, it does not describe side effects on the cache, return value format, or any security restrictions beyond the boolean flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two precise sentences, front-loading the purpose and adding necessary condition and use case. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (2 params, no output schema), the description covers the essential points but omits return value, error cases, and potential destructive behavior on the cache.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, so baseline is 3. The description adds minimal context beyond the schema, only linking reveal=true to secret emission.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Export') and the resource ('local cached anon/service keys for one project'), and distinguishes from any sibling tools with similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the prerequisite (reveal:true) and the context ('when a credential-required operation needs keys'), but does not explicitly mention when not to use or provide alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_key_cache_statusA

Read redacted local project-key cache status for one project. Local cache only; not authoritative project inventory and never returns full keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID to inspect in the local project-key credential cache

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool is read-only, returns redacted data, is local-only, and never returns full keys. Missing permission or latency details, but adequate for a simple read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with purpose. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully describes what the tool does, its limitations, and what it returns, despite no output schema. Sufficient for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already describes project_id fully (100% coverage). Description adds no new parameter-specific info beyond context about cache nature.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Read' and specific resource 'redacted local project-key cache status', distinguishing it from siblings like project_key_cache_export and project_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context that it's local cache and not authoritative, but does not explicitly compare to alternative tools. Implies usage for cache status only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_useB

Server-validate a project and store its id as the active project pointer for this local profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID to set as active

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose side effects (e.g., overwriting previous pointer, validation failure behavior, persistence) beyond the basic action. The burden is high without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is efficient and front-loaded, containing key action and result. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and minimal description, the tool lacks contextual details about return values, error handling, and side effects, making it incomplete for a simple yet state-changing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds no extra meaning beyond the schema's parameter description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool validates a project and sets it as the active pointer, using specific verbs and resource. It distinguishes itself from siblings as no other tool sets the active project pointer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the action of setting active project, but no explicit guidance on when to use vs alternatives or prerequisites is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

promote_userA

Promote a user to project_admin role by email. Admins can manage secrets from the browser. Requires service_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the user to promote to project_admin
project_idYesThe project ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It does mention the required service_key for authorization, but lacks details on reversibility, idempotency, or what happens if the user already has the role. The extra sentence about admin secrets is tangential.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, but the second sentence about admin secrets is only tangentially related and adds unnecessary length. The purpose is front-loaded, but the structure could be tighter without the digression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity, the description covers the basic purpose and a required authorization. However, it omits important context such as required preconditions (user must exist in the project), potential errors, and output format. It is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it implies the 'email' parameter is the user's email address and that 'project_id' is a project identifier. No additional constraints or formats are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Promote a user to project_admin role' with the specific verb 'promote' and resource 'user to project_admin role'. It distinguishes from the sibling tool 'demote_user' which performs the opposite action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite 'Requires service_key' but lacks explicit guidance on when to use this tool versus alternatives like 'demote_user' or 'set_org_member_role'. The usage context is implied but not clearly delineated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

provision_postgres_projectB

Provision a new Postgres database. Returns project credentials on success, or payment details if x402 payment is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional project name (auto-generated if omitted)
tierNoDatabase tier: prototype ($0.10/7d, free with testnet faucet), hobby ($5/30d), team ($20/30d)prototype
org_idNoProvision into an EXISTING org (v1.82). You must hold a developer+ membership on it. Omit for the cold-start path. Tier is org-governed.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses return behavior (credentials on success, payment details if x402 needed), which is helpful. However, it lacks details on destructive nature, authorization requirements, or idempotency, and annotations are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and to the point, but could be slightly expanded to include key contextual details without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (optional parameters, tier options, payment requirement), the description is somewhat incomplete. It does not mention the tier choices or org_id implications, nor does it have an output schema to supplement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema documentation coverage is 100%, so the description adds no extra parameter info beyond the schema. No per-parameter elaboration is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Provision') and the resource ('a new Postgres database'), distinguishing it from sibling tools like 'provision_signer' or project management tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as when to provision a signer or use a different project creation flow. The mention of 'cold-start path' is only in the schema, not in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

provision_signerA

Provision an AWS KMS-backed Ethereum signer for signing smart-contract write transactions. Private keys never leave KMS. Cost: $0.04/day rental ($1.20/month) plus $0.000005 per contract call. Requires $1.20 in cash credit at creation (30 days of rent). Non-custodial.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesWhich EVM chain. Cost: $0.04/day rental, requires $1.20 in cash credit at creation.
project_idYesThe project ID
recovery_addressNoOptional 0x-prefixed address for auto-drain on day-90 deletion

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: KMS-backed, non-custodial, cost structure, and credit requirement. It does not mention synchronization or completion time, but covers the most important aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with four sentences, each adding distinct value: purpose, security, cost, requirement. Front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (provisioning with costs and security), the description covers essential points. It lacks details about return value or post-creation state, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds context about costs but does not significantly enhance parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Provision' and the resource 'AWS KMS-backed Ethereum signer' with its purpose 'for signing smart-contract write transactions'. This distinguishes it from sibling tools like get_signer, delete_signer, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context including cost and prerequisite ($1.20 cash credit). However, it does not explicitly state when not to use it or mention alternatives like existing signers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_appB

Publish a project as a forkable app. Set visibility and tags for discoverability.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for discoverability (e.g. ['auth', 'rls', 'todo'])
project_idYesThe project ID to publish
visibilityNoVisibility: public (listed in browse_apps), unlisted (accessible by ID), private (default)
descriptionNoApp description
fork_allowedNoWhether other users can fork this app (default: false)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description lacks details on side effects, required permissions, or behavioral constraints beyond 'publish' and 'set visibility and tags'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys the core action and key options. Slightly more detail could be included without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given lack of annotations and output schema, the description should cover default values, effect of 'forkable', and what happens post-publish. It does not, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage of parameter descriptions, so baseline is 3. Description adds context for visibility and tags but does not elaborate on description or fork_allowed parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'publish' and resource 'project as a forkable app', distinguishing it from sibling tools like fork_app and browse_apps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like fork_app or browse_apps. Does not mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redrive_function_runB

Redrive a failed/cancelled/expired durable function run with an optional retry override and optional wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait until the run becomes terminal before returning.
retryNo
run_idYesFunction run id, fnrun_...
project_idYesThe project ID
timeout_msNoMaximum wait time in milliseconds.
poll_interval_msNoPolling interval in milliseconds.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It implies restarting execution and optionally modifying retry settings, but fails to mention side effects (e.g., state changes, resource usage) or prerequisites (e.g., run must be terminal). The description is too brief for safe agent use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the main action. It wastes no words but could include more context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, a nested object, and no output schema, the description is incomplete. It omits details on return values, required state of the run, and potential side effects, which are critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the baseline is 3. The description adds 'optional retry override and optional wait,' but the schema already describes these parameters adequately. No additional semantic meaning beyond the schema is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (redrive), the resource (failed/cancelled/expired durable function run), and mentions optional parameters (retry override and wait). It effectively distinguishes from sibling tools like create_function_run or cancel_function_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use redrive vs alternatives such as creating a new run or invoking the function again. No exclusions or context on prerequisites are given, leaving the agent without clear usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redrive_mailbox_webhook_deliveryA

Re-queue a dead-lettered (failed_permanent) webhook delivery so the worker attempts delivery again. Use after fixing the consumer endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID
delivery_idYesThe delivery id to re-queue (from list_mailbox_webhook_deliveries)

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the worker will attempt delivery again but does not disclose behavior for non-failed deliveries, rate limits, idempotency, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and purpose. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description adequately explains the core action and when to use. However, it lacks details on edge cases (e.g., non-failed delivery, success indication) and does not clarify the optional mailbox parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add any parameter-specific meaning beyond what the schema already provides (e.g., delivery_id source).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (re-queue), resource (dead-lettered webhook delivery), and purpose (worker attempts again). It distinguishes from sibling tools like list_mailbox_webhook_deliveries by specifying the action on failed_permanent deliveries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Use after fixing the consumer endpoint.' It implies when to use but does not explicitly state when not to or mention alternatives like checking status first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_mailbox_webhookB

Register a webhook on the project's mailbox. Receives POST notifications for email events (delivery, bounced, complained, reply_received).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebhook callback URL
eventsYesEvents to subscribe to. Valid: delivery, bounced, complained, reply_received
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It does not mention idempotency, side effects (e.g., immediate POST notifications), authentication needed, or whether the webhook secret is returned. The description only states it receives notifications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core purpose, and each sentence adds necessary information. No redundancy or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and no output schema, the description covers the basic purpose and events but lacks information on webhook lifecycle (e.g., how to manage, what happens after registration). It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond what's in the schema, such as constraints like HTTPS for url or that mailbox can be omitted when only one mailbox exists. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'register' and resource 'webhook on mailbox', and lists specific email events (delivery, bounced, complained, reply_received). This distinguishes it from sibling tools like delete_mailbox_webhook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., update_mailbox_webhook, list_mailbox_webhooks). There is no mention of prerequisites like ensuring the mailbox exists or that the URL is reachable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_org_memberA

Remove a member from an org. Requires an active owner membership. Removing the org's only active owner fails with 409 LAST_OWNER.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe org id.
principal_idYesThe member principal id to remove. Removing the org's only active owner fails with `409 LAST_OWNER`.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses important behavioral traits: required owner membership and failure on removing the only active owner. It could add more details on side effects or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, and every sentence adds value without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple removal tool with 2 parameters and no output schema, the description covers core behavior, prerequisites, and an error scenario. Lacks detail on return value or atomicity, but sufficient for most contexts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds no new parameter info beyond the schema; the error mention is already in the principal_id description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('remove a member from an org') and the resource (org member), distinguishing it from siblings like add_org_member and set_org_member_role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: prerequisite (active owner membership) and a specific failure condition (LAST_OWNER). However, it does not explicitly state when not to use it or compare to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_orgA

Set or clear an organization's display label (PATCH /orgs/v1/:org_id). Owner-only + step-up gated. Pass display_name: null (or "") to clear. Returns the updated org_id, display_name, tier, lease_started_at, and lease_expires_at. Params: org_id, display_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe org id to rename.
display_nameYesNew label. Pass `null` or an empty string to clear the label. Owner-only + step-up gated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It discloses auth requirements and response fields, but could mention reversal or further side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with main action, no redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with two required params, the description includes auth context, clearing behavior, and return fields, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so description adds minimal extra meaning beyond what's already in the parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Set or clear an organization's display label' with HTTP method and endpoint, distinguishing it from sibling tools like rename_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'Owner-only + step-up gated' and how to clear the label, but doesn't explicitly mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_projectA

Rename a project (PATCH /projects/v1/:id) — fix an auto-generated name. Authorization is org-membership based (admin+ on the owning org, or a project:write grant) and authorize-before-reveal: an unauthorized or guessed id returns the same 403 as a real-but-unauthorized project, never a not-found oracle. Uses the wallet's SIWX auth (not a project service key), so it works even if the project isn't in the local key store. The server validates the name (non-empty, ≤ 200 chars, no control characters).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew display name (1-200 characters, no control characters; server-validated).
project_idYesThe project ID to rename (prefix: prj_).

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Covers auth mechanism, authorize-before-reveal with 403, validation rules, and SIWX auth requirement. No annotations exist, so description carries full burden and does well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three well-structured sentences with no fluff. First sentence gives purpose, second auth details, third security and validation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing return value description. For a rename tool without output schema, success/failure behavior beyond auth should be explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions. Description adds validation details but doesn't significantly enhance beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Rename a project' with HTTP method and resource. Specifies use case 'fix an auto-generated name', distinguishing it from other project tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides authorization context (org-membership, grant, SIWX auth) and security behavior. Does not explicitly list alternatives but context implies when to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

renew_project_branchB

Extend a contained branch project's TTL.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttl_daysNoNew TTL extension in days.
project_idYesParent project ID.
branch_project_idYesBranch project ID.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description does not disclose side effects, permissions needed, or response behavior. It only states the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, clear sentence that directly states the tool's purpose with no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description lacks details on TTL meaning, default behavior for optional ttl_days, and return value, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema, which already includes parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Extend' and identifies the resource as 'contained branch project's TTL', clearly distinguishing it from siblings like create_project_branch or delete_project_branch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or exclusions mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_faucetA

Request free testnet USDC from the Run402 faucet (Base Sepolia). Rate limit: 1 per IP per 24h. Returns 0.25 USDC — enough for 2 prototype databases.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoWallet address (0x...) to fund. If omitted, reads from local agent allowance file.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the rate limit, the amount of USDC returned, and its purpose (enough for 2 prototype databases). It does not mention error handling or consequences of exceeding rate limits, but is adequate for a simple faucet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each serving a purpose: stating the action, providing the rate limit, and specifying the return value. There is no redundancy or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description covers the essential aspects: what it does, constraints, and expected result. It does not detail the response format, but that is less critical for a prototype tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single optional parameter 'address'. The description does not add additional meaning beyond what the schema already provides ('Wallet address... If omitted, reads from local agent allowance file.'). Following the baseline rule, score is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('request'), the resource ('free testnet USDC from the Run402 faucet on Base Sepolia'), and the amount returned. It uniquely identifies the tool among siblings, as no other tool serves a similar faucet function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit rate limiting (1 per IP per 24h) and the return amount, which guides usage. Although it does not mention alternatives or when not to use, the tool's single-purpose nature makes usage obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_project_snapshotA

Plan or confirm a project snapshot restore. Omit confirm for the loss statement and confirm token; pass confirm to execute the atomic restore.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoConfirm token from the restore_plan. Omit for a dry restore plan.
project_idYesProject ID to restore.
snapshot_idYesSnapshot ID to restore from.
include_authNoWhen true, restore captured auth users/passkeys too. Sessions/tokens are never restored.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Mentions 'loss statement' and 'atomic restore' but does not clearly state that the current project state will be destroyed or require confirmation details. Lacks full disclosure of consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with core purpose, no redundant words. Highly efficient for a restore tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers basic usage but lacks details on return values, required permissions, or what 'loss statement' means. Adequate but with notable gaps for a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. Description adds context for confirm parameter (dry vs execute) but does not elaborate beyond what schema provides for other params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it plans or confirms a project snapshot restore, distinguishing two modes. It differentiates from sibling tools like create/delete/list snapshots.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to omit or pass the confirm parameter for dry plan vs execution. No mention of when not to use, but the two-mode guidance suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rest_queryC

Query or mutate data via the PostgREST REST API. Supports GET/POST/PATCH/DELETE with query params.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRequest body for POST/PATCH (JSON object or array)
tableYesTable name to query
methodNoHTTP methodGET
paramsNoPostgREST query params (e.g. {select: 'id,name', order: 'id.asc', limit: '10'})
key_typeNoWhich key to use: anon (default, respects RLS) or service (bypasses RLS)anon
project_idNoThe project ID (defaults to the active project)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It indicates mutability (POST/PATCH/DELETE) but does not disclose authentication requirements, side effects, rate limits, or data persistence details. The key_type parameter is mentioned only in schema, not description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise (20 words), with purpose front-loaded. Every word earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 6 parameters and no output schema, description is minimal. It lacks examples, response format hints, or usage patterns. An agent would need more detail to use the tool effectively, especially for constructing queries and handling responses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds the concept of 'query params' but does not elaborate on any parameter beyond the method. It provides no additional semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool queries or mutates data via PostgREST REST API and supports common HTTP methods. However, it does not explicitly differentiate from similar tools like run_sql or contract_read, though the context of REST API vs SQL or contract calls is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Given siblings like run_sql (direct SQL) and contract_read (smart contracts), an agent would benefit from context on selecting the appropriate database access method.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_project_grantB

Revoke a per-project capability grant by id. Params: project_id, grant_id. Requires you to be an owner of the project's org.

ParametersJSON Schema
NameRequiredDescriptionDefault
grant_idYesThe grant id to revoke, e.g. `grt_...`.
project_idYesProject id the grant belongs to.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so description must carry full burden. It only states the revocation action without explaining idempotency, error behavior (e.g., if grant doesn't exist), or side effects. Minimal behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences, no waste. First sentence states action and parameters, second adds prerequisite. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter revocation tool with no output schema, the description covers the core action, required params, and a key prerequisite. Could mention return value or error conditions, but completeness is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds minimal value by mentioning the example `grt_...` for grant_id. Baseline 3 is appropriate as schema already provides parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action ('Revoke a per-project capability grant by id') and lists required parameters. However, it does not differentiate from related siblings like 'create_project_grant' or clarify the broader context of grants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only prerequisite ('Requires you to be an owner') is provided. No guidance on when to use this tool versus alternatives, such as when to revoke vs. create a grant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rotate_webhook_secretA

Generate a fresh HMAC signing secret for the operator's webhook endpoint. Returned EXACTLY once. Previous secret remains valid for 24h. Requires operator_passkey assurance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses critical behavior: single retrieval, 24h overlap, authentication requirement. With no annotations, it covers essential safety and mutation aspects well, though could elaborate on effect of repeated calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with action, then key constraints. Every sentence provides unique value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers behavior and prerequisites for a zero-parameter tool with no output schema. Minor gap: does not describe output format or type of the returned secret.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, baseline is 4. Description adds context about the operation (single return, grace period) that complements the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate a fresh HMAC signing secret') and the specific resource ('operator's webhook endpoint'). It differentiates from sibling webhook tools by specifying 'operator's' rather than mailbox webhooks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides key usage constraints: secret returned exactly once, previous valid for 24h, requires operator_passkey. Implicitly guides when to use (for rotation) but does not explicitly contrast with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_sqlB

Execute SQL (DDL or queries) against a provisioned project. Returns results as a markdown table.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL statement to execute (DDL or DML)
paramsNoBind parameters for parameterized queries (e.g. [42, "hello"])
project_idNoThe project ID to run SQL against (defaults to the active project)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description must disclose safety. It states 'returns results as a markdown table' but does not mention side effects of DDL, permissions needed, rate limits, or error behavior. Critical details for a tool that executes arbitrary SQL.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action, no redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and the description only states 'returns results as a markdown table' without detail on error handling, pagination, transaction behavior, or response structure. Incomplete for a SQL execution tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds no parameter-specific details beyond the schema; it does not elaborate on the 'sql', 'params', or 'project_id' parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Execute SQL' and resource 'provisioned project', clearly distinguishing from sibling tools like 'rest_query'. It specifies DDL and queries, and mentions markdown table output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'rest_query'. No when-not-to-use or prerequisite information provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scaffold_rolesA

Generate a role-table migration + requireRole gate snippet + first-operator bootstrap for Run402 function role gates. Offline and deterministic (no project or network). Inputs: table, user_col, role_col, roles[], cache_ttl.

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesNoAllowed roles. Default: ["operator"].
tableNoRole table name (unquoted SQL identifier). Default: app_roles.
role_colNoRole column. Default: role.
user_colNoUser-id column — matches the tenant user id (internal.users.id / JWT 'sub'). Default: user_id.
cache_ttlNoRole-lookup cache seconds (0-600). Default: 60. 0 = instant revocation (fresh DB read per request).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description's mention of 'offline and deterministic' partially addresses behavioral traits (no network/project interaction). But it does not disclose side effects (e.g., file overwriting, idempotency), output format, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. First sentence states the purpose, second lists inputs and key characteristics. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and description does not explain what the tool returns (e.g., generated code as string, file creation, console output). For a moderately complex tool with 5 parameters and no output schema, this is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents parameters. The description only lists inputs briefly ('table, user_col, role_col, roles[], cache_ttl') without adding deeper meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool generates a role-table migration, requireRole gate snippet, and first-operator bootstrap for Run402 function role gates. Verb and resource are specific, and it distinguishes itself from sibling tools which focus on different tasks (e.g., deploy, manage users, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description mentions 'offline and deterministic (no project or network)', indicating it's safe for local development and has no external dependencies. However, it does not explicitly state when to use vs alternatives or provide usage exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailA

Send an email. Two modes: template (project_invite, magic_link, notification) or raw HTML (subject + html). Optional from_name for display name. Single recipient only. Pass mailbox to target a slug/id; otherwise the configured default_outbound_mailbox_id is used. Result echoes mailbox_id and from_address when the gateway provides them.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address (single recipient only)
htmlNoHTML email body (raw HTML mode, max 1MB)
textNoPlain text fallback (raw HTML mode, auto-generated from HTML if omitted)
mailboxNoTarget mailbox by slug or id. If omitted, the configured default_outbound_mailbox_id is used; missing/invalid defaults return typed repair errors.
subjectNoEmail subject line (raw HTML mode, max 998 chars)
templateNoEmail template (template mode). project_invite, magic_link, or notification
from_nameNoDisplay name for From header, e.g. "My App" (max 78 chars)
variablesNoTemplate variables (template mode). project_invite: project_name, invite_url. magic_link: project_name, link_url, expires_in. notification: project_name, message (max 500 chars).
project_idYesThe project ID
attachmentsNoBinary attachments — RAW HTML MODE ONLY (with subject + html, not template). Max 5; ≤ 7 MB total (decoded).
in_reply_toNoID of a prior message (typically inbound) to thread this one under. The server uses it to set RFC-822 In-Reply-To and References headers. Usually set via reply flows; leave empty for new threads.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behavioral traits: two modes, default mailbox fallback, and result echoing mailbox_id and from_address. It does not mention error handling, rate limits, or idempotency, but it covers the main behaviors adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only 4 sentences, front-loaded with the core purpose, and free of fluff. Each sentence adds critical information (modes, constraints, mailbox behavior, result). Perfectly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters and no output schema, the description covers the main modes and mailbox behavior. However, it fails to mention that attachments are only allowed in raw HTML mode (described in schema but absent here). This is a notable gap for a tool with no annotations and high schema coverage, leaving the agent to infer a key constraint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the two-mode concept, which clarifies parameter grouping (e.g., template and variables vs subject+html+attachments). It also reiterates mailbox defaulting, but the schema already does that. Overall, it provides a useful framework for parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sends an email, specifies two modes (template or raw HTML), and includes key constraints like single recipient and mailbox defaulting. It distinguishes itself from sibling tools like 'send_message' by explicitly naming the action and email mode options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description guides usage by detailing two modes and their respective parameters (template vs subject+html), and it mentions single-recipient only. However, it does not explicitly compare to alternatives like 'send_message' or state when not to use it, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageA

Send a message to the Run402 developers. Requires an active tier.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesMessage to send to the Run402 developers

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the prerequisite (active tier) but does not mention side effects, rate limits, or whether the operation is destructive. The behavior is minimally inferred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The most critical information (action and prerequisite) is front-loaded. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and no output schema. The description covers the action and a prerequisite but omits any mention of expected outcome, success signals, or error cases. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description in the schema ('Message to send to the Run402 developers') matches the tool description almost verbatim. The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'send' and the resource 'message to the Run402 developers'. This distinct purpose separates it from sibling 'send_email', which sends generic emails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions the prerequisite 'Requires an active tier', but does not explicitly provide when-to-use or when-not-to-use guidance or alternatives. The distinction from 'send_email' is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

service_healthA

Liveness check for the Run402 SERVICE — not your organization. For your organization status (allowance, tier, projects), use status. Reads public GET /health with per-dependency check results. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that no authentication is required, the endpoint is a public GET /health, and returns per-dependency check results. Without annotations, this provides adequate transparency, though the dependency list is not specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. The first sentence front-loads the primary purpose and differentiation, and the second adds details and alternative usage. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a no-parameter health check, the description is largely complete. It covers what, how, and auth. However, it does not specify the return format or error handling, which could be clarified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With no parameters in the schema, the description adds all necessary meaning by explaining the tool's operation. No parameter documentation is needed, and the description fully compensates for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a liveness check for the Run402 SERVICE, explicitly distinguishing it from organization status checks. It uses a specific verb ('liveness check') and resource ('Run402 SERVICE'), and differentiates from the sibling 'status' tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when not to use this tool ('not your organization') and directs to the alternative 'status' tool for organization status. This helps agents choose correctly among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

service_statusA

Reports on the Run402 SERVICE (availability, capabilities, operator, deployment) — not your organization. For your organization status (allowance, tier, projects), use status. Reads public GET /status. No auth, no allowance required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states 'Reads public GET /status. No auth, no allowance required'—a clear, accurate disclosure of read-only, public, non-consuming behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. First sentence front-loads the tool's purpose; second provides contrast and context. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status check tool with no params and no output schema, the description is complete: it explains scope (service vs org), accessibility (public, no auth), and resource impact (no allowance). Adequate for an agent to select and invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, schema coverage 100%. Baseline for 0 params is 4. Description adds no param info, which is unnecessary; it does mention the HTTP endpoint, but that is not parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Reports on the Run402 SERVICE (availability, capabilities, operator, deployment)', specifying both the verb 'reports' and the resource 'SERVICE'. It distinguishes itself from the sibling 'status' by noting it is not about the organization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when not to use: 'For your organization status (allowance, tier, projects), use `status`.' Also notes 'No auth, no allowance required', guiding the agent on prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_agent_contactA

Register agent contact info (name, email, webhook). New or changed emails start operator email reply verification. Free with allowance auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent name
emailNoContact email (optional; new or changed emails start reply verification)
webhookNoWebhook URL for notifications (optional)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description carries the full burden. It discloses that new/changed emails trigger operator email reply verification and mentions 'Free with allowance auth', providing behavioral context about activation and authorization. However, it does not address whether the operation overwrites existing info or requires specific roles.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with two sentences (or three clauses) that front-load the purpose and include only essential details. Every sentence contributes meaning, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with 3 params, no output schema, and no annotations, the description covers purpose, a key behavioral trait (email verification), and authorization/cost context. It lacks details on return value or error states, but is largely complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter described in the schema. The description adds only a slight rephrasing of the email parameter's effect (new/changed emails start verification), which is already in the schema. Thus, minimal added value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Register' and the resource 'agent contact info', listing the fields (name, email, webhook). It distinguishes from sibling tools like get_agent_contact_status and verify_agent_contact_email, as it is the only setter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for setting or updating contact info and mentions the side effect of email verification, but it does not explicitly state when to use this tool versus alternatives such as get_agent_contact_status (read) or verify_agent_contact_email (verification).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_auto_rechargeA

Enable or disable automatic email pack repurchase when credits drop below a threshold. Requires a saved Stripe payment method.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID
enabledYesEnable (true) or disable (false) auto-recharge
thresholdNoCredit threshold to trigger auto-recharge (default 2000)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It indicates the tool is a mutator (enable/disable) and specifies a prerequisite, but does not mention side effects, reversibility, or response behavior. This is adequate for a simple toggle but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no redundant information, and immediately conveys the core purpose. It is appropriately sized and front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (3 parameters, no output schema, no nested objects), the description covers the main aspects: purpose, condition, and a prerequisite. It could optionally mention the return value or confirmation, but the tool's simplicity makes this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions already explain each parameter. The tool description adds value by linking the threshold to the condition, but does not provide additional semantic context beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Enable or disable') and clearly identifies the resource ('automatic email pack repurchase'). It also mentions the condition ('when credits drop below a threshold'), distinguishing it from sibling tools that manage other billing aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states a prerequisite ('Requires a saved Stripe payment method'), which helps the agent know when it can be used, but it does not provide explicit guidance on when to use this tool versus alternatives like set_low_balance_alert or allowance_create.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_low_balance_alertA

Set the low-balance threshold (in wei) for a KMS signer. Email alerts fire when the signer's native balance drops below this threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe KMS signer ID
project_idYesThe project ID
threshold_weiYesLow-balance threshold in wei (decimal string)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description discloses that email alerts fire on threshold breach, but lacks details on side effects, idempotency, permissions, or error conditions. Adds some context but not full behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, clear and front-loaded. No unnecessary words. Every sentence provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations. Description lacks return value, error scenarios, prerequisites. For a tool with 3 required parameters, more context is needed for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description adds context that threshold_wei triggers email alerts but does not enhance parameter meaning beyond schema. Baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (set threshold), the resource (KMS signer), and the context (email alerts when balance drops). It distinguishes from siblings like check_balance or set_auto_recharge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for monitoring signer balances but does not explicitly state when to use versus alternatives like check_balance or set_auto_recharge. No when-not or context for alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_mailbox_defaultsA

Set default_outbound_mailbox_id and/or auth_sender_mailbox_id for a project. Use list_mailboxes first to choose an explicit mailbox id; sending without a mailbox uses the configured outbound default instead of guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
auth_sender_mailbox_idNoMailbox id (`mbx_...`) to use for auth/session emails, or null to clear.
default_outbound_mailbox_idNoMailbox id (`mbx_...`) to use for outbound email sends, or null to clear.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions setting or clearing values but lacks details on side effects, permissions, rate limits, or reversibility. For a mutation tool, this is insufficient disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the key action and provide necessary guidance. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 parameters, no output schema, and no annotations, the description adequately explains the tool's purpose and usage hints (like calling list_mailboxes first). It lacks details about return values or confirmation, but is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds context by explaining the purpose of each parameter and the null option. However, it does not add significant meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool sets default_outbound_mailbox_id and/or auth_sender_mailbox_id for a project, using a specific verb and resource. It distinguishes from sibling tools like list_mailboxes and send_email by explaining the prerequisite and the effect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells users to use list_mailboxes first to get a mailbox id, and explains the consequence of not setting defaults. Provides clear context for usage, though it does not explicitly list situations where the tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_notification_preferencesA

Update operator notification preferences. Cross-wallet effects require email_verified assurance; webhook URL changes require operator_passkey assurance.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoBCP-47 (e.g. en-US)
timezoneNoIANA timezone (e.g. UTC)
webhook_urlNoHTTPS webhook URL (requires operator_passkey assurance)
digest_cadenceNoPeriodic digest cadence
digest_hour_utcNoHour (UTC) for the digest send
lifecycle_eventsNoWhich lifecycle events fire notifications
threshold_alertsNoThreshold-alert delivery mode (immediate ships in v1.5)
digest_day_of_weekNoDay of week for weekly digest (1=Mon, 7=Sun)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses that certain operations require specific assurances (email_verified, operator_passkey), which is behavioral. However, it does not mention error behaviors, idempotency, or side effects beyond the constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's purpose and key behavioral constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, and the description does not mention return values. For an update tool with 8 optional parameters, the description is adequate but could be more complete by indicating success/failure indicators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description adds no significant additional meaning beyond repeating the webhook_url assurance already in the schema. Baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update operator notification preferences' using a specific verb and resource. It distinguishes from the sibling 'get_notification_preferences' by implying a write operation. However, it does not explicitly differentiate from other update tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides important context on assurance requirements for specific changes (cross-wallet effects, webhook URL). However, it does not state when to use this tool versus alternatives or explicitly indicate when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_org_member_roleA

Change a member's role (owner > admin > developer > billing > viewer). Requires an active owner membership. Demoting the org's only active owner fails with 409 LAST_OWNER.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesNew role: owner > admin > developer > billing > viewer. Requires you to be an active `owner`.
org_idYesThe org id.
principal_idYesThe member principal id, e.g. `prn_...` (from `list_org_members`).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the mutation nature, required ownership, and a specific error case (409 LAST_OWNER). But it does not mention other potential side effects, idempotency, or whether changes take effect immediately. Without annotations, the burden is higher and the description is adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no wasted words, front-loaded with action and hierarchy, and efficiently covers key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with no output schema, the description covers the action, prerequisites, and a notable error case. It lacks return value information but is otherwise fairly complete given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes all parameters. The description adds context for the role hierarchy and notes that principal_id comes from list_org_members, but the schema's role enum description already includes hierarchy. Thus the description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Change a member's role' and includes the role hierarchy (owner > admin > developer > billing > viewer), which distinguishes it from sibling tools like add_org_member, remove_org_member, promote_user, and demote_user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies the precondition 'Requires an active `owner` membership' and a failure condition for demoting the only owner. However, it does not explicitly compare to similar tools like promote_user or demote_user, which could help agents choose the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_org_payout_walletA

Set or clear an organization's default payout wallet for tenant priced routes (PATCH /orgs/v1/:org_id/payout-wallet). Admin/owner-only + step-up gated. wallet_address must already be an active wallet linked to the org; pass null to clear the explicit default. Response includes recovery.status, active_wallet_count, and next_actions for PAYOUT_WALLET_REQUIRED / PAYOUT_WALLET_AMBIGUOUS.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe org id.
wallet_addressYesActive wallet linked to this organization, or null to clear the explicit default. Admin/owner + step-up gated.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, description fully discloses mutation (PATCH), authorization requirements, preconditions (wallet must be linked to org), and response fields (recovery.status, active_wallet_count, next_actions).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single tightly written paragraph with no unnecessary words. Front-loaded with purpose and key constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description covers purpose, parameters, behavior, and response fields comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds some context (wallet must be active, null to clear) but does not provide significant new semantics beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action: set or clear an organization's default payout wallet for tenant priced routes, with HTTP method and path. Distinguishes from siblings by specifying the specific resource and operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies admin/owner-only and step-up gating, along with conditions for wallet_address (must be active wallet or null). Provides clear context but does not explicitly compare with alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_recovery_addressA

Set or clear the optional recovery address used for auto-drain on day-90 deletion of a KMS signer.

ParametersJSON Schema
NameRequiredDescriptionDefault
signer_idYesThe KMS signer ID
project_idYesThe project ID
recovery_addressYes0x-prefixed address (or null to clear). Used for auto-drain on day-90 deletion.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the burden of behavioral transparency. It clearly states the effect (set or clear address, used for auto-drain on day-90 deletion) and that the address is optional. It does not contradict any annotations. Some additional detail on side effects could further raise the score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that conveys the essential action and context without unnecessary words or repetition. Well-structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only three required parameters and no output schema, the description provides sufficient context about the purpose and use case. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have full descriptions in the input schema (100% coverage), so the description adds no new semantic information beyond restating the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (set or clear) and the resource (recovery address for a KMS signer) and provides the specific context (auto-drain on day-90 deletion). It distinguishes this tool from siblings like drain_signer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when managing recovery addresses but lacks explicit guidance on when to use versus alternatives like drain_signer. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_secretA

Set a project secret (e.g. STRIPE_SECRET_KEY). Values are write-only and injected as process.env variables in functions. Setting an existing key overwrites it. Use this before deploy, then declare the key with secrets.require.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesSecret key (uppercase alphanumeric + underscores, e.g. 'STRIPE_SECRET_KEY')
valueYesSecret value (will be injected as process.env in functions)
project_idYesThe project ID

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that values are write-only and injected as process.env, and that setting an existing key overwrites it. Without annotations, this covers the key behavioral traits for a secret-setting operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with no redundancy. Each sentence adds essential information: what it does, behavioral notes, and usage guidance. Perfectly front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple set tool, the description covers the purpose, behavior, and workflow context (before deploy). No output schema needed for a set operation; the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds value by explaining the write-only nature and the overwrite behavior, which goes beyond the schema descriptions. The example also helps understanding parameter formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Set a project secret' with an example (STRIPE_SECRET_KEY), and explains that it overwrites existing keys. This distinguishes it from related tools like delete_secret or list_secrets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit says 'Use this before deploy' and advises to 'declare the key with secrets.require' afterwards, providing good context. However, it does not mention scenarios where this tool should not be used or alternative approaches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_tierA

Subscribe, renew, or upgrade tier. Auto-detects action based on allowance state. Returns success or payment details if x402 payment is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierYesTarget tier — subscribes, renews, or upgrades automatically based on wallet state

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses auto-detection and potential payment requirement, but fails to mention side effects, error handling, or irreversible actions. With no annotations, more detail is expected for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with front-loaded purpose. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately describes behavior and output for a single-parameter tool without output schema. Missing error cases or preconditions, but sufficient for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter description already mirrors tool behavior. Description adds no new semantic information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it subscribes, renews, or upgrades tier, with auto-detection based on allowance state. This distinguishes it from read-only sibling 'tier_status', though no explicit differentiation is given.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when changing tier, but no explicit guidance on when to use versus alternatives like 'tier_status' or 'allowance_create'. Lacks exclusion criteria or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_user_passwordA

Change, reset, or set a user's password. Change: provide current_password + new_password. Reset (via magic link login): just new_password. Set (passwordless user): requires allow_password_set=true on project.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
access_tokenYesThe user's access_token (Bearer token from login)
new_passwordYesThe new password to set
current_passwordNoCurrent password (required for password change, omit for reset via magic link or initial set)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the three behavioral modes and the project-level 'allow_password_set' requirement, though lacks details on side effects or authorization specifics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences front-loaded with the main purpose; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description covers the main behavioral modes and parameter relationships well, though it omits success/failure indicators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds meaning by explaining which parameters to use in each mode (e.g., current_password for change, omit for reset/set).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states three distinct operations (change, reset, set) with specific conditions, clearly distinguishing the tool's purpose from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear conditions for each usage scenario (change, reset, set), but does not explicitly state when not to use this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_operator_passkey_enrollmentA

Email a short-lived Run402 operator passkey enrollment link to the verified contact email. Requires email_verified.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It notes that the link is 'short-lived', but lacks details about authentication needs, side effects (e.g., invalidating previous links), or what happens after sending.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It conveys the action, target, and condition efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description adequately explains the core function and a precondition. However, it could be more complete by describing what the user receives or next steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is 100% (empty). The description adds meaning by explaining the action, which is sufficient given no parameters. Baseline for no parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (email a link), the target (operator passkey enrollment link), and a precondition (email_verified). It effectively distinguishes from sibling tools like delete_passkey or list_passkeys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the requirement 'Requires email_verified', which gives usage context. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Full organization snapshot — allowance, billing balance, tier subscription, projects, and active project. Single-call overview.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes output content but discloses no behavioral traits (e.g., read-only nature, required permissions, rate limits, side effects). Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key purpose. Every word adds value. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool lacking output schema, description adequately lists output components. Could mention structured nature or use cases, but sufficient for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters with 100% schema coverage. Description adds no parameter info (unnecessary), no deduction needed. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides a 'full organization snapshot' listing key components like allowance, billing, tier, projects. Distinguishes from siblings like allowance_status or service_status which are more specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when needing a comprehensive overview ('single-call overview'), but does not explicitly state when not to use or suggest alternatives like allowance_status or tier_status for specific queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_notificationA

Trigger a real test notification (audit row marked is_test=true). Rate-limited per wallet at 1/min. Verifies the full pipeline end-to-end.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoRoute the synthetic test event as if it came from the app lane or the platform, so it exercises a specific Telegram routing rule's `source` filter. Defaults to 'platform' when omitted.
event_typeNoSynthetic event_type override (flat snake_case, e.g. `signature_failed`) — use this to exercise a specific routing rule's `event_types` filter precisely. Defaults to the gateway's built-in sample event when omitted.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It discloses that notifications are real but marked as test, rate-limited, and verifies pipeline. It does not detail side effects like whether actual users receive the notification, but the test context and rate limit provide adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. Each clause adds essential information: action, test marking, rate limit, pipeline verification. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a test tool with 2 optional parameters and no output schema, the description covers purpose, rate limit, and testing nature. It lacks response format or error handling, but the simplicity makes it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. The description adds value by stating defaults (source defaults to 'platform', event_type defaults to gateway sample), which aids agent understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool triggers a real test notification, marks audit row with is_test=true, and verifies the full pipeline. The verb 'trigger' and resource 'test notification' are specific, and the details distinguish it from siblings like create_notification_rule or list_notifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions rate-limiting (1/min per wallet) and end-to-end verification, implying use for testing. However, it does not explicitly state when to use or not use this tool compared to alternatives, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tier_statusA

Check current tier subscription — tier name, status, expiry, usage, and function authoring caps when returned (max timeout, memory, scheduled functions, min cron interval). Requires allowance auth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses auth requirement and return fields, but does not explicitly state it's read-only or mention any side effects, rate limits, or further behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no wasted words. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status check with no params and no output schema, the description adequately covers purpose, return fields, and auth requirement. Could mention if there are any limits or pagination, but not necessary for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters in schema, so baseline is 4. Description adds no parameter info, which is acceptable as there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (Check) and resource (current tier subscription), listing specific returned fields (tier name, status, expiry, usage, caps). Distinguishes from siblings like allowance_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear prerequisite: 'Requires allowance auth.' Implies usage for checking subscription info, but does not explicitly compare to related tools like allowance_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_functionA

Update a function's timeout or memory without re-deploying code. Legacy schedule mutation remains for old simple-function surfaces; new schedule/email background triggers should be declared through ReleaseSpec triggers[].

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFunction name to update
memoryNoMemory in MB (tier limits apply)
timeoutNoTimeout in seconds (tier limits apply)
scheduleNoCron expression (5-field, e.g. '*/15 * * * *') to set or update the schedule. Pass null to remove an existing schedule.
project_idYesThe project ID

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states 'without re-deploying code' indicating non-destructive behavior, but lacks details on permissions, side effects on existing runs, or error states. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose concisely, second provides key usage guidance. Every sentence earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters and no output schema, the description covers the core functionality and usage context well. However, it omits the return value or confirmation of update, which is a minor gap. Sibling tools provide context, but a mention of what the tool returns would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for all parameters. The description adds context about the schedule parameter being legacy and advises against using it for new triggers, which adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'function's timeout or memory', and distinguishes it from deploying code or other function updates. It also contrasts with legacy schedule mutation and directs to ReleaseSpec for new triggers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use (update timeout/memory without re-deploying) and when not to use (new schedule/email triggers should go through ReleaseSpec), providing clear guidance and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_mailboxA

Update per-mailbox settings. Currently supports footer_policy: run402_transparency or none. Prototype projects are locked to run402_transparency; attempting none surfaces the gateway's FOOTER_POLICY_TIER_REQUIRED typed error.

ParametersJSON Schema
NameRequiredDescriptionDefault
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID
footer_policyYesOutbound footer policy. `none` is allowed for hobby/team projects; prototype projects are locked to `run402_transparency`.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description compensates by disclosing that prototype projects are locked to 'run402_transparency' and attempting 'none' surfaces a specific typed error, revealing important behavioral constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences, no excess, and the main purpose is front-loaded. However, structure could be improved with bullet points for constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description covers input constraints well but does not mention the return format or success behavior, leaving some context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning by explaining the supported footer_policy values and the prototype lock, which are not fully covered in the schema's enum description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates per-mailbox settings, specifically the footer_policy, and distinguishes itself from other mailbox-related tools (create, delete, get) by focusing on updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives, but the name and context imply it's for modifying mailbox settings. No exclusion criteria or alternative tool references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_mailbox_webhookA

Update a webhook's URL and/or events. At least one field required. Events is a full replacement, not a merge.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoNew webhook URL
eventsNoNew events array (full replacement). Valid: delivery, bounced, complained, reply_received
mailboxNoTarget mailbox by slug or id; omit only when the project has exactly one mailbox.
project_idYesThe project ID
webhook_idYesThe webhook ID (whk_...)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the critical behavioral trait that 'Events is a full replacement, not a merge', which prevents accidental loss of events. With no annotations, the description carries the behavior disclosure burden. It does not mention other aspects like whether URL validation occurs or if changes are reversible, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states the action and scope, second adds the key constraint 'At least one field required' and the full-replacement behavior of events. No unnecessary words, perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential information for a straightforward update mutation: what is updated, that events is a full replacement, and that at least one field is required. Missing details like the expected response format (likely success/failure) and prerequisites (e.g., webhook must exist). However, for a simple tool, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters and their meanings. The description reinforces that events is a full replacement, but this is already in the schema ('full replacement'). It adds minimal new meaning beyond the schema, aligning with baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action 'Update a webhook's URL and/or events' identifying the resource (webhook) and specific fields. The 'at least one field required' and 'Events is a full replacement, not a merge' further specify scope. Distinguishes from sibling tools like register_mailbox_webhook (create) and delete_mailbox_webhook (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides the constraint 'At least one field required' which tells the agent that not all fields are mandatory. However, it does not explicitly mention when to use this tool versus alternatives like register_mailbox_webhook for creation or delete_mailbox_webhook for deletion, leaving context implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_versionA

Update metadata (description, tags, visibility, fork_allowed) of a published app version.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoUpdated tags
project_idYesThe project ID
version_idYesThe version ID to update
visibilityNoUpdated visibility
descriptionNoUpdated description
fork_allowedNoWhether forking is allowed

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It indicates mutation ('update') but lacks details on prerequisites (e.g., must the version be published?), side effects, or permissions. The description lists updatable fields but does not go beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that front-loads the verb and resource, lists the target fields clearly. No unnecessary words or repetition. Excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic purpose and parameters, but lacks information about return values (no output schema), behavior on failure, or any constraints (e.g., version must be published). For a 6-parameter update tool, this is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 6 parameters are described in the input schema (100% coverage), so the schema already provides meaning. The description only repeats the field names without adding extra value like formatting constraints or interdependencies. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update), the resource (metadata of a published app version), and specifies the fields that can be updated (description, tags, visibility, fork_allowed). This distinguishes it from sibling tools like delete_version or publish_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for updating a version's metadata, but does not mention when not to use it or suggest alternatives. Given sibling names, the purpose is clear but lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_manifestA

Validate an auth/expose manifest without applying it. This checks the authorization manifest used by manifest.json, database.expose, and apply_expose; it is not deploy-manifest validation. Optional migration_sql is reference context only and is not executed. Use deploy planning/dry-run surfaces for deploy manifest questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestYesAuth/expose manifest as a JSON object or JSON string. This is not a deploy manifest.
project_idNoOptional project id for live-schema validation. Omit for projectless validation.
migration_sqlNoOptional migration SQL used only as reference context for validation; it is not executed.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the tool does not apply the manifest, implying no side effects. It also clarifies that migration_sql is not executed. However, it does not explicitly state read-only nature or any authentication/rate limit details. The information provided is good but could be slightly more explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, perfectly concise and front-loaded. The first sentence states the core purpose, the second provides usage guidance and clarifications. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not mention return values, but for a validation tool the output can be inferred. It clearly distinguishes from sibling tools like deploy. The guidance on migration_sql and deploy manifest boundaries adds completeness. Minor gap: no mention of what the validation result looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds meaning by explaining that manifest is the auth/expose manifest used by manifest.json, database.expose, and apply_expose, and that migration_sql is only reference context. This adds value beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates an auth/expose manifest without applying it. It specifies the resource (auth/expose manifest) and the action (validate), and distinguishes it from deploy-manifest validation. This gives a specific verb+resource combination that leaves no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool (auth/expose manifest validation) and when not to (deploy manifest validation, advising to use deploy planning/dry-run surfaces instead). It also clarifies that migration_sql is only reference context and not executed, preventing misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_agent_contact_emailA

Start or resend the operator email reply challenge for the active agent contact email. Does not expose the challenge secret.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it 'does not expose the challenge secret', which is a useful behavioral note. However, with no annotations, it fails to mention other important traits such as idempotency, side effects, rate limits, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two short sentences that front-load the action and add one key behavioral fact. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is minimally adequate. However, it lacks information about return values, success/failure indicators, or what happens after the challenge is sent, which an agent would need for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema coverage is 100%. The description doesn't need to add parameter details, and its concise note about the challenge secret adds value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Start or resend') and the resource ('operator email reply challenge for the active agent contact email'). It is specific and informative, but does not differentiate from sibling tools like 'get_agent_contact_status' or 'set_agent_contact'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for initiating or re-sending an email challenge for agent contact verification, but provides no explicit guidance on when to use this tool versus alternatives, nor any preconditions or scenarios where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_project_archiveA

Verify a local run402-project-archive.v1 directory or .r402ar tar offline. Checks integrity and compatibility only; archives remain untrusted input.

ParametersJSON Schema
NameRequiredDescriptionDefault
archive_pathYesLocal archive directory or .r402ar tar path.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description clearly states the tool only checks integrity and compatibility and treats archives as untrusted input, implying no side effects. This is sufficient for a verification tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words. Front-loaded with the core action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, no output schema, and no annotations, the description covers the tool's purpose, input type, and a key behavioral trait (untrusted input). Could mention return type or error handling but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter archive_path. The description adds value by clarifying acceptable types (local directory or .r402ar tar path), which is not in the schema description beyond 'path.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it verifies a local archive directory or .r402ar tar file, checking integrity and compatibility. It distinguishes from siblings like inspect_project_archive by specifying it only verifies and does not trust input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for offline verification but does not explicitly guide when to use this tool over alternatives like inspect_project_archive, import_project_archive, or export_project_archive. No when-not-to-use conditions given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_cdn_freshnessA

Polls the CDN until a MUTABLE blob URL serves the expected SHA-256, or the timeout elapses. For mutable URLs only — for immutable URLs (the immutableUrl returned by assets_put), no waiting is needed; they're bound to a SHA at upload time and never previously cached. Use this after a re-upload to an existing public mutable key when an end-user-visible URL must reflect the new content before continuing. The probe is single-vantage (us-east-1). On timeout, the tool returns isError=true so an agent can branch into a fallback — typically: switch to the immutableUrl.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesMutable blob URL to poll (e.g. https://app.run402.com/_blob/avatar.png)
sha256YesExpected hex SHA-256 (from a preceding upload)
project_idYesProject ID that owns the URL
timeout_msNoMax wait in milliseconds (1 000 – 600 000, default 60 000)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits: polls until expected SHA or timeout, only for mutable URLs, single vantage point (us-east-1), and on timeout returns isError=true for fallback branching. Since no annotations are provided, this carries full burden and does so thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the main action. It is detailed but every sentence earns its place. Slight verbosity prevents a 5, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool without output schema, the description covers purpose, behavior, constraints, and fallback. It mentions return on timeout but not on success; still adequate given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the description adds context beyond the schema, e.g., 'sha256' is 'from a preceding upload' and timeout_ms default. This adds semantic value, justifying a score above baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool polls the CDN until a mutable blob URL serves the expected SHA-256 or timeout. It explicitly distinguishes mutable from immutable URLs, providing a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies when to use the tool: after re-upload to an existing mutable key when end-user visibility is required. It also contrasts with immutable URLs where no waiting is needed, and suggests a fallback to immutableUrl on timeout.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiA

Resolve the caller's control-plane principal and its org memberships (GET /agent/v1/whoami). A wallet authenticates; ownership is the org. Returns the principal (id/type/displayName/createdAt), authenticator_id, and every org membership (org_id, display_name, role, status). This is the REMOTE identity — for the local wallet/profile state use status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, but description indicates it's a read-only GET, lists return fields, and implies authentication via wallet. Could explicitly state that no side effects occur, but still clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. HTTP method and path are front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param tool with no output schema, it adequately describes return fields (principal fields, authenticator_id, org memberships). Could mention error cases or response format, but not required given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema coverage is 100%. Description adds no parameter info, but none needed. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it resolves the caller's principal and org memberships, with specific verb and resource. Distinguishes from sibling 'status' by noting remote vs local identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this vs 'status': remote identity vs local wallet/profile state. No other guidance needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.1/5.0
Disambiguation2/5

With 198 tools, many have overlapping or confusingly similar purposes. For example, status, service_status, tier_status, and get_operator_status all sound similar despite different scopes, and a large number of deploy_*, project_*, and notification_* tools create high ambiguity. The detailed descriptions help, but the sheer volume and close names make misselection likely.

Naming Consistency2/5

Naming conventions are inconsistent: some tools use verb_first (list_projects, create_org), others use noun_first (assets_put, jobs_submit, domains_get), and there are one-off names like init, status, and whoami. Prefixes like mailbox_ and contract_ are not used uniformly across related tools (e.g., create_mailbox vs list_mailboxes vs get_mailbox). This mixed style reduces predictability.

Tool Count1/5

198 tools is an extreme mismatch for any MCP server scope, far exceeding the typical 3-15 well-scoped tools. Even for a comprehensive platform like Run402, this count is overwhelming and impractical for an agent to navigate effectively. The set could be consolidated or split into focused servers.

Completeness4/5

The tool set is remarkably comprehensive, covering project lifecycle, deployments, functions, storage, auth, email, billing, notifications, and more. There are minor gaps, such as no direct tool to list/delete project auth users and no organization deletion operation, but the overall surface covers the domain thoroughly.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI-driven PostgreSQL database management with secure OAuth 2.1 authentication, enabling users to administer, monitor, and query databases with support for extensions like pgvector, PostGIS, and pg_cron.
    121
  • A
    license
    Not graded
    quality
    D
    maintenance
    A general-purpose PostgreSQL MCP server with full read-write SQL access, atomic multi-statement transactions, and schema inspection. Works with any PostgreSQL instance — local, Supabase, AWS RDS, or self-hosted — and connects to Claude, Cursor, Windsurf, or any MCP-compatible AI client.
    104
    2
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    An extensible MCP server for database operations that supports PostgreSQL for managing schemas, tables, data, and user permissions. It features automatic migration recording for DDL changes and integrates with various AI-powered editors like Cursor, Zed, and Claude Code.
    37
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kychee-com/run402'

If you have feedback or need assistance with the MCP directory API, please join our Discord server