Skip to main content
Glama
Floe-Labs

Floe Payments and Credit

Official
by Floe-Labs

@floelabs/mcp-server

npm version npm downloads CI License: MIT Base Mainnet

Floe over MCP — know what every AI call really costs. Floe costs each call the moment it ends across every vendor — telephony, STT, LLM, TTS, tools — on one ledger, ties the spend to the client and campaign, and shows your margin per contract, so you can bill your own customers off those actuals. This server puts that layer in your MCP client: give Claude Desktop, Claude Code, Cursor, CrewAI, or any MCP client one key for every voice tool and model a voice agent uses — STT, TTS, LLM, telephony — plus 2,000+ vendor API services, with budgets the agent can reason about. Walletless. No crypto required.

Website · Docs · Dashboard · 𝕏 @FloeLabs

80 tools covering the full agent lifecycle — create agents, mint/rotate keys, set budgets, estimate costs, and execute x402 payments — with transport-aware auth (remote HTTP uses a Bearer token; local stdio reads FLOE_API_KEY from the env) and a keyless tier (get_markets, check_x402_url, search_floe_docs work with no key at all).


Start free. A $3 Welcome Credit (300 API credits) on signup — no card, no wallet. Get an agent key →

Start building with Floe

One key for your agent's whole vendor bill — LLM, voice, telephony, search, data — metered per call and budget-capped. Let your coding agent set it up, or wire it yourself:

Path

One line

Agent — Claude Code / Cursor does the setup

paste: Read https://dev-dashboard.floelabs.xyz/agents.md and set up Floe for this project.

Skill — install the Floe agent skill

npx skills add floe-labs/agent-skills

MCP — hosted MCP server (80 tools)

npx -y add-mcp https://mcp.floelabs.xyz/mcp

CLI — the full platform from your terminal: agents, keys, budgets, billing

npx @floelabs/cli init

NPM — the SDK + floe-agent CLI

npm i -g floe-agent

New accounts get a $3 Welcome Credit (300 API credits) — no card. Set up with your AI tools → · Get a key →

Related MCP server: thebuyside-x402-agent

What makes this different

Most payment tools let an agent spend. Floe lets an agent reason about spend before it commits — and stops it before it overruns.

  • Agent-awareness toolsget_credit_remaining, estimate_x402_cost, get_loan_state: your agent asks "do I have budget? is this call worth it?" before paying, not after.

  • Context-aware budgets — set a session spend cap; the agent tapers as it nears the limit and replans to finish on budget.

  • The Floe agent skill (Floe-Labs/agent-skills) — the playbook that turns those tools into deliberate spending behavior. Jump to it ↓

  • Server-side enforcement — the soft signal is the skill; the hard ceiling is the on-chain spend cap + merchant allowlist. The agent cannot overspend regardless of what it decides.

One-liner installs:

# Universal (any MCP-aware client)
npx -y add-mcp https://mcp.floelabs.xyz/mcp

# Claude Code
claude mcp add --transport http floe https://mcp.floelabs.xyz/mcp --header "Authorization: Bearer YOUR_FLOE_KEY"

# Codex (reads the key from $FLOE_API_KEY at connect time)
codex mcp add floe --url https://mcp.floelabs.xyz/mcp --bearer-token-env-var FLOE_API_KEY

Or by JSON config:

{ "mcpServers": { "floe": {
  "url": "https://mcp.floelabs.xyz/mcp",
  "headers": { "Authorization": "Bearer floe_YOUR_AGENT_KEY" }
} } }

Get your agent key: dashboard → Create agent → copy the floe_<hex> key (shown once). Or from the CLI: npx @floelabs/cli init — paste your dashboard developer key and it creates (or selects) the agent and mints the key for you. No key yet? The server still works — see Keyless tier.

Scope params — narrow what a session can do straight from the URL:

https://mcp.floelabs.xyz/mcp?read_only=true          # only non-mutating tools
https://mcp.floelabs.xyz/mcp?features=spend,pricing  # only the named capability groups

Capability groups: lending, spend, pricing, lifecycle, observability, payments, webhooks, actuals, docs. Both params combine. The Floe agent skill's decision loop needs spend,pricing.

Local stdio, global install, and key taxonomy below

Tools at a glance

Group

Tools

For

Payment execution

x402_pay (idempotent), x402_forecast, estimate_x402_cost, check_x402_url

pay any x402 vendor — with a cost preflight first

Agent lifecycle

create_agent, list_agents, get_agent, pause_agent, resume_agent, close_agent, create_agent_key, rotate_agent_key, revoke_agent_key, set_agent_key_budget, open_credit_line, get_credit_line_bounds

bootstrap and manage the fleet with a developer key

Agent awareness

get_credit_remaining, get_loan_state, get_spend_limit, set_spend_limit, clear_spend_limit

every agent — reason about cost before paying

Spend governance

register_credit_threshold, list_credit_thresholds, delete_credit_threshold (webhooks)

govern + alert on utilization

Merchant allowlist

set_allowlist_mode, get_allowlist_mode, add_allowlist_entry, remove_allowlist_entry, list_allowlist

default-deny on which destinations the agent may pay

Funding & observability

get_funding_instructions, get_balances, get_activity, get_usage_summary, get_coverage_score

fund agents + watch the fleet spend + measure enforcement coverage

Webhooks

create_webhook, list_webhooks, list_webhook_events, get_webhook, update_webhook, delete_webhook, test_webhook, rotate_webhook_secret, list_webhook_deliveries, get_webhook_delivery, retry_webhook_delivery

push notifications for account events + the delivery log

Vendor actuals

list_vendor_cost_legs, list_vendor_cost_calls, get_vendor_cost_rollup, list_reconciliation_findings, list_vendor_connections, verify_vendor_connection

what your OWN vendors charged you, reconciled against their billing records

Docs

search_floe_docs (keyless)

learn the Floe API without leaving MCP

Wallet

get_wallet_balance, get_accrued_interest

balances + state

Utility

simulate_transaction, broadcast_transaction, get_transaction_status

tx lifecycle

Lending protocol (advanced)

20+ intent / collateral / liquidation tools

crypto-native lending against deposits

Full per-tool reference is in Tools (80) below.


Tested clients

Client

Status

Claude Desktop

GA

Claude Code

GA

Cursor

GA

Continue / Cline

Best-effort

CrewAI (via langchain-mcp-adapters)

Beta

OpenAI Agents SDK

Preview (MCP fallback while native adapter ships)

ElizaOS

Preview


Install options

Option 1 (remote) is in Quick start above. For local runs:

Local via npx

Run the server locally. It proxies all requests to the Floe API.

FLOE_API_KEY=floe_YOUR_AGENT_KEY npx -y @floelabs/mcp-server --stdio

Claude Desktop config:

{
  "mcpServers": {
    "floe": {
      "command": "npx",
      "args": ["-y", "@floelabs/mcp-server", "--stdio"],
      "env": {
        "FLOE_API_KEY": "floe_YOUR_AGENT_KEY"
      }
    }
  }
}

Cursor config (.cursor/mcp.json):

{
  "mcpServers": {
    "floe": {
      "command": "npx",
      "args": ["-y", "@floelabs/mcp-server", "--stdio"],
      "env": {
        "FLOE_API_KEY": "floe_YOUR_AGENT_KEY"
      }
    }
  }
}

Install globally

npm install -g @floelabs/mcp-server
FLOE_API_KEY=floe_YOUR_AGENT_KEY floe-mcp --stdio

Transport selection

--stdio and --http are explicit overrides. With neither flag, the server picks by what stdin is: a pipe (an MCP client spawning it) → stdio; a terminal or a service manager's /dev/null → HTTP on 127.0.0.1:3100. So a bare command: npx config now works — but keep --stdio in configs anyway so behavior never depends on how the client wires stdio. On startup failure the process logs [floe-mcp] Fatal: to stderr and exits with code 1; in stdio mode all logging goes to stderr, never stdout (which carries the MCP protocol).


Auth model

Auth source depends on transport:

Transport

Identity source

Remote HTTP (https://mcp.floelabs.xyz/mcp)

Authorization: Bearer <key> header (per-request)

Local stdio (floe-mcp --stdio / npx -y @floelabs/mcp-server --stdio)

FLOE_API_KEY env var

Local HTTP (self-hosted)

Authorization: Bearer <key> header (per-request). The env-var key is never used as a fallback for headerless HTTP requests — requests without a Bearer run keyless.

Keyless tier

The server starts (and the hosted endpoint answers) without any key. Keyless sessions get exactly three tools with live results: get_markets, check_x402_url, and search_floe_docs — enough to vet a vendor, price a call, and learn the API before signup. Every other tool returns a structured error:

{ "error": "AUTH_REQUIRED", "status": 401,
  "message": "…Requires an agent key (floe_...).",
  "next": "Get a developer key at https://dev-dashboard.floelabs.xyz, then mint agent keys with create_agent_key. …" }

Tool errors always carry the backend's HTTP status (so agents can distinguish 401/403/404/429), and 401/403 include a remediation hint that distinguishes missing key from wrong key type.

Which key to use

Two key formats unlock different surfaces — every tool description states which one it needs:

Key format

Scope

Unlocks

floe_<64-hex> (agent key)

One specific agent

Runtime: agent-awareness, spend governance, allowlist, reputation, estimate_x402_cost, x402_forecast, and x402_pay. One MCP session = one agent. Lifecycle tools return 401 (wrong key type).

floe_live_<base62> (developer key)

Whole developer account

Lifecycle: create_agent, agent keys (create_agent_key, rotate_agent_key, …), budgets, credit lines, funding instructions, balances, activity, usage, webhooks. Agent-runtime tools return 401 (wrong key type).

Typical bootstrap: connect with the developer keycreate_agentcreate_agent_key → reconnect (or open a second MCP session) with the minted agent key to spend.

Get an agent key:

  1. Go to dev-dashboard.floelabs.xyz

  2. Connect your wallet and Create an agent (name + borrow limit + max rate)

  3. Copy the floe_<64-hex> key shown at the end of the wizard — it is revealed once

You can also mint one from the CLI:

# Platform CLI — interactive: paste your developer key, create or select an
# agent, and the minted agent key lands in your OS keychain
# (manage agent keys later with `floe keys list|create|rotate|revoke`,
#  developer keys with `floe devkeys`)
npx @floelabs/cli init

# SDK-level alternatives:
# TypeScript SDK
npx floe-agent register --name my-agent --borrow-limit 10000

# Python SDK
floe-agent register --name my-agent --borrow-limit 10000

The platform CLI and this MCP server cover the same API surface. @floelabs/cli is the full platform from a terminal — agents, keys, budgets, policies, billing, funds, phone, metered calls — with --json on every command and stable exit codes for scripts and CI. MCP remains the richer in-context integration: tools your agent discovers, reasons over, and calls mid-session without shelling out.

Get a developer key (unlocks the lifecycle tools — create_agent, key minting, budgets, funding, webhooks — and multi-tenant visibility across all your agents):

  1. Go to dev-dashboard.floelabs.xyz/keys

  2. Click Create Key, label it, pick read or read_write permissions

  3. Copy the floe_live_<base62> key shown once

Developer keys span the whole developer account and have a separate rate limit (100 req/min). Agent-runtime tools (get_credit_remaining, get_spend_limit, x402_pay, etc) return 401 with a developer key because the caller is the developer, not a single agent — the error's next hint says so and points at create_agent_key. See the API Keys docs for the full taxonomy.

Fund with fiat: You can fund your wallet with USDC via Coinbase — credit card, bank transfer, Apple Pay, Google Pay — directly from the dashboard. No crypto on-ramp needed.

Multiple agents

One Floe developer can own many agents. To run several MCP sessions side by side (e.g. a research agent and a trading agent), mint one key per agent and configure each MCP client entry with its own key:

{
  "mcpServers": {
    "floe-research": {
      "url": "https://mcp.floelabs.xyz/mcp",
      "headers": { "Authorization": "Bearer floe_KEY_FOR_RESEARCH_AGENT" }
    },
    "floe-trading": {
      "url": "https://mcp.floelabs.xyz/mcp",
      "headers": { "Authorization": "Bearer floe_KEY_FOR_TRADING_AGENT" }
    }
  }
}

Each session is scoped to one agent — credit lines, spend limits, and webhooks stay isolated.


Environment Variables

Variable

Required

Default

Description

FLOE_API_KEY

No (keyless tier without it)

Your Floe API key: floe_<64-hex> agent key for runtime/spend tools, floe_live_<base62> developer key for lifecycle tools. Identity source in stdio mode; ignored for HTTP requests, which authenticate per-request via Authorization: Bearer

FLOE_API_BASE_URL

No

https://credit-api.floelabs.xyz

API endpoint

MCP_PORT

No

3100

HTTP server port (non-stdio mode)

MCP_HOST

No

127.0.0.1

HTTP bind address; set 0.0.0.0 to expose beyond loopback

MCP_TRUSTED_ORIGINS

No

Comma-separated extra origins allowed by CORS in HTTP mode


Tools (80)

Below the tools are listed by request type. The summary is in Tools at a glance above. Every description also names the key it needs: agent key (floe_...), developer key (floe_live_...), any key, or none. The feature-group tag in each heading is what ?features= filters on.

Payment execution (payments, pricing) ⭐

The reason the rest exists: estimate → forecast → pay. x402_pay needs an agent key; check_x402_url is keyless.

Tool

Description

x402_pay

Execute a paid x402 call through the Floe proxy — pays the vendor in USDC from the agent's balance/credit, returns the vendor response + X-Floe-* metering headers. idempotency_key makes retries replay instead of double-paying

x402_forecast

Batch cost forecast + policy preflight for up to 50 planned calls (with repeat counts) — one round-trip to validate a whole plan

estimate_x402_cost

Preflight one x402 URL — returns cost + reflection against your credit, no payment

check_x402_url

Keyless probe: is this URL x402-protected, and what does it cost?

Agent lifecycle (lifecycle) — developer key

Bootstrap and manage the fleet without touching the dashboard.

Tool

Description

create_agent

Provision a managed agent: Privy wallet + sponsored on-chain delegation + the $3 welcome credit on the account's first agent (once per account, immediately spendable)

list_agents

List every agent on the account with status and limits

get_agent

One agent's detail: status, deposit address, credit used, 24h activity

pause_agent

Suspend an agent (kill-switch) — its keys fail auth until resumed

resume_agent

Reactivate a paused agent

close_agent

Irreversibly wind an agent down: repay loans, sweep funds, disable keys

create_agent_key

Mint a floe_... agent key (plaintext once), optionally with a rolling spend budget

rotate_agent_key

Atomically revoke + re-mint a key (new plaintext once)

revoke_agent_key

Delete a key — calls using it fail immediately

set_agent_key_budget

Set/update a fail-closed rolling budget on one key

open_credit_line

Upgrade a pay-as-you-go agent to a managed credit line (collateral from its wallet)

get_credit_line_bounds

Preview valid deposit/LTV ranges before open_credit_line

Funding & observability (observability) — developer key

Tool

Description

get_funding_instructions

Machine-readable "how to fund this agent": USDC deposit address, chain 8453, minimums/warnings

get_balances

Aggregate USDC across developer wallet, agent wallets, and API credits

get_activity

Unified activity feed (proxy calls, onramps, transfers, loans) with filters + cursor pagination

get_usage_summary

Spend/usage analytics rollup: KPIs, daily series, top endpoints

get_coverage_score

Coverage Score: share of known spend Floe enforces pre-call vs reconciled (off-path) vs dark. Pass agent_id for one agent, omit for the fleet

Webhooks (webhooks) — developer key

Tool

Description

create_webhook

Register an endpoint for account events (signing secret shown once). Scopes: global, wallet, agent (agent wallet address), loan; events accept exact names, *, or prefix wildcards like call.*

list_webhooks

List registered webhooks (secrets never returned)

list_webhook_events

The live event catalog — 30 events across loan / agent / credit / call / phone / marketplace

get_webhook

One webhook + its delivery stats (pending/success/failed/retrying/total)

update_webhook

Change URL, events, description, or pause/resume via active (scope is immutable)

delete_webhook

Delete an endpoint permanently

test_webhook

Send a signed test delivery to verify connectivity end-to-end

rotate_webhook_secret

Rotate the signing secret (new secret shown once)

list_webhook_deliveries

Account-wide delivery log with filters (endpoint, event, agent wallet, status, time range, delivery/correlation id) + cursor pagination; 30-day retention

get_webhook_delivery

One delivery in full: sent payload, sanitized response body, next retry time

retry_webhook_delivery

Manually redeliver a failed delivery (dedupe on X-Floe-Delivery-Id)

Vendor actuals (actuals) — developer key

What your own vendors charged you (FLO-746), reconciled against those vendors' billing records — not what Floe charged you. Every cost carries a status, and a status is a claim:

Status

Means

Never say

exact

reconciled to the vendor's own per-request billing record

period-rate

priced at the vendor's own realized rate for that period

"exact", or anything implying per-request precision

invoiced

footed to the vendor's invoice

pending

the vendor hasn't published this cost yet

any dollar figure

manual

no vendor API publishes this — upload the invoice

any dollar figure

costRaw is null for pending and manual — report units, never a zero. exact and period-rate are returned as separate subtotals and must never be added into one number.

When a cost arrives: some legs can be costed the moment a call ends, others only on the vendor's next-day batch — so a recent leg reads pending, which is the steady state, not a defect.

Coverage reads low on voice-heavy accounts at launch — a property of what vendors publish, not your setup. Close the gap via the invoice lane.

Tool

Description

list_vendor_cost_legs

Per-leg captured vendor cost with the vendor's own request id, typed units, status and provenance. Keyset-paginated. Filters: since/until, vendor, customer_id, agent_id, campaign_id, task_id, status

list_vendor_cost_calls

Server-side by-call rollup — a composition count per call plus separate exact / period-rate subtotals. A single totalRaw only when every leg is priced and USD; otherwise "partial — lower bound"

get_vendor_cost_rollup

Totals by customer, campaign, agent, vendor, or time (UTC day)

list_reconciliation_findings

Everything the engine could not reconcile — unmatched legs/actuals, unit mismatches, stale connectors, invoice variance. The named reasons a total is a lower bound

list_vendor_connections

Your vendor billing credentials (masked — key material is never returned) + the connector catalog. bestStatus is the ceiling: a period-rate connector will never produce exact

verify_vendor_connection

Re-check one stored credential against the vendor now. Distinguishes "revoked, re-key it" (unauthorized) from "the vendor is down" (degraded). Advisory — a pass is not a scope guarantee

Gating: the four reads need the Pro feature attribution_reports; the two connection tools need the Agency feature vendor_connections (and admin/owner for verify_vendor_connection).

Not exposed over MCP, on purpose. Invoice upload is a binary PUT to a signed storage URL — no agent has a file to send. Footing an invoice writes invoiced stamps against a vendor's invoice and is not undone by re-running, so that irreversible finance action keeps a human in the loop. Resolving a finding is a human verdict — the API refuses the machine's own auto_cleared for exactly that reason. Creating a connection writes a sealed credential, and credentials never travel through a tool call. All four live in the dashboard and in floe actuals.

Docs (docs) — keyless

Tool

Description

search_floe_docs

Search the Floe documentation index (llms.txt) — titles, URLs, descriptions

Read tools (lending)

Tool

Description

get_markets

List active lending markets with rates and liquidity (keyless)

get_open_lend_intents

Browse lend offers available for borrowing against

get_open_borrow_intents

Browse borrow requests from borrowers seeking lenders

get_intent_details

Get full details of a specific intent by hash

get_loan

Get loan details by numeric ID

get_user_loans

Get all loans for a wallet (borrower + lender)

get_loan_health

Check loan LTV, health status, liquidation risk

get_token_price

Current oracle price for collateral tokens

get_wallet_balance

Token balances for a wallet

get_accrued_interest

Interest accrued on a loan

Write tools (lending, return unsigned transactions)

Tool

Description

create_lend_intent

Create a lending offer

create_borrow_intent

Create a borrowing request

create_counter_intent

Accept an existing offer (solver matches automatically)

repay_loan

Repay a loan with slippage protection

add_collateral

Add collateral to improve loan health

withdraw_collateral

Withdraw excess collateral

liquidate_loan

Liquidate an unhealthy loan

revoke_intent

Cancel an active intent

approve_token

Approve token spending for the protocol

Analysis tools (lending)

Tool

Description

check_compatibility

Check if two intents can match

calculate_risk

Risk metrics: LTV, liquidation price, buffer

estimate_interest

Interest estimate for given loan terms

Utility tools (lending)

Tool

Description

simulate_transaction

Dry-run a transaction (eth_call)

broadcast_transaction

Submit a signed transaction

get_transaction_status

Check transaction receipt

Agent-awareness tools (spend) ⭐

Lets an agent answer "do I have credit?", "is this call worth it?", and "where am I in the loan lifecycle?" before committing capital. All require an agent API key (floe_*). The calling identity is taken from the Bearer header in HTTP mode, or from FLOE_API_KEY in stdio mode.

Tool

Description

get_credit_remaining

Current available credit, headroom to auto-borrow, utilization in bps

get_loan_state

Coarse state: idle | borrowing | at_limit | repaying

get_spend_limit

Currently active session spend cap, if any

set_spend_limit

Set a session-level USDC ceiling (resets the session window)

clear_spend_limit

Remove the session spend cap

list_credit_thresholds

List registered credit-utilization thresholds

register_credit_threshold

Register a webhook trigger at a utilization threshold (cap: 20 per agent)

delete_credit_threshold

Remove a registered threshold

get_agent_reputation

0–100 credit score, band, and collateral multiplier for the calling agent

Merchant-allowlist tools (spend)

Opt-in, default-deny restriction on which destinations the agent may pay. An allowlist entry is an ordinary capped policy row that doubles as "allowed AND capped". Default mode off = allow any vendor (zero onboarding friction). All require an agent API key (floe_*).

Tool

Description

set_allowlist_mode

Set enforcement: off | host (block unlisted hosts pre-fetch) | vendor (block unlisted payees pre-sign) | both

get_allowlist_mode

Read the agent's current enforcement mode

add_allowlist_entry

Add an allowed-AND-capped entry — kind=api (host) or kind=vendor (payee), with a limit_raw spend cap

remove_allowlist_entry

Revoke an allowlist entry by policy id (from list_allowlist)

list_allowlist

List host (api) and payee (vendor) allowlist entries with their caps

Inference gateway tools (pricing)

Tool

Description

list_models

OpenAI-compatible model catalog for Floe Inference (text/embedding/TTS/STT/realtime)

estimate_inference_cost

Price an inference call from a usage vector without making it


Budget-awareness skill

Floe's agent skills live in their own repo: Floe-Labs/agent-skills.

The floe skill is the playbook that turns the MCP tools above into deliberate spending behavior: read budget status before paying, taper as it nears the tightest cap, replan to finish the task on budget, and stop before the ceiling. It reads status from the existing get_credit_remaining, get_spend_limit, estimate_x402_cost, and get_loan_state tools, plus the X-Floe-Budget-Advisory header the Floe x402 proxy stamps on paid responses — no new tool or backend required.

Soft signal, not the guardrail. The skill helps a cooperative agent spend wisely. The real ceiling is enforced server-side — the on-chain credit line, the session spend cap, and (if configured) the merchant allowlist refuse calls past the limit regardless of what the agent decides.

Install:

npx skills add floe-labs/agent-skills          # skills.sh CLI
# or manually:
git clone https://github.com/floe-labs/agent-skills
cp -r agent-skills/skills/floe ~/.claude/skills/   # or .claude/skills/ per-project

Transaction Flow

All write tools return unsigned transactions — the server never holds private keys.

1. Call a write tool (e.g., create_counter_intent)
   → Returns { transactions: [...], summary, warnings, expiresAt }

2. (Optional) Call simulate_transaction to dry-run

3. Sign each transaction locally with your wallet

4. Call broadcast_transaction with the signed hex
   → Returns { transactionHash, status, blockNumber }

Example: Get a USDC Credit Line

Agent: "I need 9,950 USDC working capital"

1. get_open_lend_intents → browse USDC/USDC offers
2. create_counter_intent(offer_hash, wallet) → unsigned txs
3. simulate_transaction(from, to, data) → { success: true, gasEstimate }
4. Sign locally → signed hex
5. broadcast_transaction(signed_hex) → confirmed

Signing with viem

import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const wallet = createWalletClient({
  account: privateKeyToAccount(PRIVATE_KEY),
  chain: base,
  transport: http(),
});

// Sign and send each transaction in order
for (const { transaction: tx } of response.transactions) {
  const hash = await wallet.sendTransaction({
    to: tx.to,
    data: tx.data,
    value: BigInt(tx.value),
  });
  // Wait for confirmation before next step
}

Programmatic Usage

MCP Client SDK

import { Client } from "@modelcontextprotocol/sdk/client";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-agent" });
await client.connect(new StreamableHTTPClientTransport(
  new URL("https://mcp.floelabs.xyz/mcp"),
  { requestInit: { headers: { "Authorization": "Bearer floe_..." } } }
));

const markets = await client.callTool("get_markets", {});
const counter = await client.callTool("create_counter_intent", {
  offer_hash: "0x...",
  wallet_address: "0x...",
});

LangChain / LangGraph

from langchain_mcp_adapters import MultiServerMCPClient

async with MultiServerMCPClient({
    "floe": {"url": "https://mcp.floelabs.xyz/mcp", "headers": {"Authorization": "Bearer floe_..."}}
}) as client:
    tools = client.get_tools()
    # Use tools in your agent

CrewAI

CrewAI agents can consume the Floe MCP tools via langchain-mcp-adapters. A runnable crew is available in floe-cookbook/crewai-demo.


Architecture

Your Agent → MCP Server → credit-api.floelabs.xyz → Envio Indexer / Base RPC
                ↑                    ↑
           This package         Private backend
          (open source)        (holds secrets)

The MCP server is a thin HTTP client. All protocol logic, indexer queries, and RPC calls happen in the private Floe API backend. This package contains only tool definitions and fetch() calls.


Lending protocol (advanced)

Floe is the spend layer for AI agents — one key that pays any vendor API under programmable budgets (everything above). It also exposes an advanced, crypto-native intent-based lending layer on Base, for agents that want working capital against deposits:

  1. Primary market (USDC/USDC): Deposit USDC as collateral, borrow up to 99.5% as a credit line. No price-volatility risk — same-token market.

  2. Volatile markets: Also supports WETH and cbBTC collateral for crypto-native use cases.

  3. Solvers automatically match compatible intent pairs on-chain.

  4. Loans are created with matched terms, collateral locked in per-loan isolated escrow.

  5. Gas-free — Floe sponsors all transaction costs.

  6. Fixed rates — no variable-rate surprises.

Key concepts:

  • Intent: An on-chain offer to lend or borrow

  • Counter-Intent: An intent created to match an existing offer

  • Health Factor: Ratio of collateral value to debt — below threshold triggers liquidation

  • LTV (Loan-to-Value): Borrower's debt as % of collateral value


Contract Addresses (Base Mainnet)

Contract

Address

LendingIntentMatcher

0x17946cD3e180f82e632805e5549EC913330Bb175

PriceOracle

0xEA058a06b54dce078567f9aa4dBBE82a100210Cc

LendingViews

0x9101027166bE205105a9E0c68d6F14f21f6c5003

x402 Facilitator

0x58EDdE022FFDAD3Fb0Fb0E7D51eb05AaF66a31f1


License

MIT

Available Tools

65 tools
add_allowlist_entryA

Add a merchant-allowlist entry — an allowed-AND-capped policy row. Use kind="api" to allowlist a host (match_key = hostname) or kind="vendor" to allowlist a payee (match_key = recipient wallet). limit_raw caps spend against this entry (raw USDC, 6 decimals). Enforcement only kicks in once set_allowlist_mode is host/vendor/both. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes"api" for a host entry (match_key = hostname) or "vendor" for a payee entry (match_key = recipient wallet address).
limit_rawYesSpend cap in raw USDC units (6 decimals), positive. e.g. "1000000" = $1.
match_keyYesHost (for kind="api") or payee wallet address (for kind="vendor").
match_kindNoOptional matcher: host_exact | host_suffix (api) or recipient (vendor). Defaults server-side.

TDQS

A4.4/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 authentication requirement (agent key floe_...), the conditional enforcement behavior (only after set_allowlist_mode), and the nature of the entry (allowed-AND-capped). This is sufficient for a straightforward add operation, though it does not mention side effects like overwriting or duplicate handling.

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 with zero filler. Each sentence carries essential information: purpose, kind usage, enforcement condition, and auth requirement. It is well-structured and front-loaded with the primary 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?

For a creation tool with no output schema and moderate complexity, the description covers purpose, parameter semantics, prerequisite mode, and auth. It omits the optional match_kind parameter, but the schema fully documents it, so the description remains largely complete for correct 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?

Schema coverage is 100% and the schema already documents each parameter. The description adds value by connecting kind to match_key semantics (host vs recipient wallet) and clarifying that limit_raw is in raw USDC with 6 decimals, reinforcing the cap concept. It does not mention optional match_kind, but the schema covers that.

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 starts with a specific verb ('Add') and resource ('merchant-allowlist entry'), and clarifies it as an 'allowed-AND-capped' policy row. It explicitly differentiates the two kinds (api vs vendor), distinguishing it from sibling tools like remove_allowlist_entry or set_allowlist_mode.

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 clearly explains when to use kind='api' (hostname) vs kind='vendor' (payee wallet) and notes that enforcement only occurs after set_allowlist_mode is set, implying the need to use that tool in conjunction. However, it stops short of explicitly naming alternative tools or stating when not to use this one.

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

add_collateralA

Build unsigned tx to add collateral to a loan. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesCollateral amount in raw token units
loan_idYesLoan ID
market_idNoMarket ID
wallet_addressYesWallet adding collateral

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 discloses a key behavioral trait: it builds an unsigned tx, meaning no on-chain effect occurs. It also mentions authentication requirements. However, it does not describe the return format, error behavior, or that the unsigned tx would need to be signed and broadcast separately.

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 the core purpose and includes the key authentication requirement. It is concise with no redundant phrases.

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 no output schema and no annotations, so the description should explain the return value and next steps. It does not mention what the tool returns (e.g., the unsigned transaction) or how to use it with broadcast_transaction. The role of optional market_id is also unclear, leaving gaps for an agent selecting and invoking 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%, so the schema already documents each parameter. The description adds minimal extra meaning beyond the context of adding collateral to a loan. It does not clarify the optional market_id usage or provide additional parameter-level details.

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 'Build' and specifies the resource 'unsigned tx to add collateral to a loan', clearly distinguishing it from sibling tools like withdraw_collateral or broadcast_transaction. The intent is 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 states a clear prerequisite (requires any Floe API key) and notes that it builds an unsigned transaction, implying it is not for broadcasting. However, it does not explicitly mention alternative tools or when to use this over others, and there are no exclusions.

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

approve_tokenA

Build unsigned tx to approve a token for Floe protocol. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to approve in raw units
token_addressYesToken contract address

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 burden. It discloses that the tool builds an *unsigned* transaction, indicating it does not broadcast or mutate state, and specifies API key requirements. However, it does not detail what the returned unsigned tx looks like or any further steps needed, but the key point of non-broadcasting is 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 concise sentences, front-loaded with the primary purpose and a single prerequisite. No filler or 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?

For a simple 2-parameter tool with no output schema, the description provides essential context: the action (approve a token), the form (unsigned tx), and the auth requirement. It does not explain return value format or next steps, but 'unsigned tx' implies the output type sufficiently for an agent. Slightly incomplete only because it omits what the agent should do with the unsigned tx (e.g., sign and broadcast).

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% for both parameters (token_address and amount), so the schema already provides full parameter semantics. The description adds no additional parameter-specific 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?

Description clearly states the tool's function: 'Build unsigned tx to approve a token for Floe protocol.' Uses a specific verb ('Build') and resource ('unsigned tx to approve a token'), which distinguishes it from sibling tools like broadcast_transaction or create_lend_intent.

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 mentions a prerequisite: 'Requires any Floe API key (agent floe_... or developer floe_live_...)' but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or references to related workflows. The usage context is only implied by the tool's purpose.

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

broadcast_transactionA

Submit a signed transaction to Base Mainnet. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
signed_transaction_hexYesSigned tx as 0x RLP hex

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 mentions the auth requirement but omits critical behavioral traits such as irreversibility, potential gas costs, or that a transaction hash is returned.

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 front-loads the core action, the second adds the necessary auth context. 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 covers the essential action, network, and auth. However, with no output schema, it does not mention the return value (expected tx hash) or any caveats about finality. It is minimally adequate for a simple broadcast 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% for the single parameter, fully describing 'signed_transaction_hex' as 'Signed tx as 0x RLP hex'. The description adds no additional param information, but the schema is sufficient.

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 ('Submit') and the resource ('a signed transaction to Base Mainnet'). This distinguishes it from sibling tools like simulate_transaction and get_transaction_status.

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?

It specifies the authentication prerequisite ('Requires any Floe API key') and the target network. However, it gives no explicit guidance on when to use this vs alternatives (e.g., simulate first) 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.

calculate_riskB

Calculate risk metrics for a potential loan position. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
borrow_amountYesBorrow amount in human units
duration_daysYesDuration in days
collateral_amountYesCollateral in human units
interest_rate_percentYesAnnual rate %
liquidation_ltv_percentNoLiquidation threshold %

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 bears full responsibility for behavioral disclosure. It mentions the API key requirement, which is useful, but does not explicitly state whether this is a read-only calculation, how results are returned, or that no state is modified. This leaves the agent with incomplete safety and side-effect knowledge.

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 that immediately states the tool's purpose and follows with the auth requirement. Every word contributes value; there is 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?

The tool has no output schema and no annotations, so the description must explain what the tool returns and how it fits into a workflow. It only says 'risk metrics' without specifying what those metrics are, their format, or how the result should be interpreted. This is a notable gap for an agent to use the tool effectively.

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 describes all parameters (borrow_amount, collateral_amount, interest_rate_percent, duration_days, liquidation_ltv_percent) with 100% coverage, so the description adds no parameter-specific meaning. The baseline score of 3 applies because the schema 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 a specific verb ('calculate') and resource ('risk metrics') for a well-defined context ('a potential loan position'). This differentiates it from sibling tools like estimate_interest or get_loan_health, which focus on different 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 phrase 'for a potential loan position' gives implied context that this is used when evaluating a loan, but there is no explicit guidance on when to choose this tool over alternatives such as get_loan_health or estimate_interest. No exclusionary or alternative-tool guidance is provided.

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

check_compatibilityA

Check if two intents can match. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
lend_offer_hashYesLend intent hash
borrow_offer_hashYesBorrow intent hash

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 the full burden of behavioral disclosure. It only mentions the API key requirement and the action itself, but does not disclose whether the operation is read-only, what the return value looks like, or any side effects. This is minimal for a check-type 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 two concise sentences, front-loaded with the core purpose and followed by the necessary auth requirement. There is no wasted text or repetition of schema details.

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 adequate for a simple tool with clear purpose and fully documented parameters, but it lacks important context such as the expected result (e.g., boolean) or any limitations on what 'match' means. Considering there is no output schema, the description could be more complete, though the complexity is low.

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 already provides 100% coverage for both parameters ('Lend intent hash' and 'Borrow intent hash'). The description adds no additional parameter semantics, 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?

The description uses a specific verb ('Check') and resource ('two intents') to state exactly what the tool does. It is immediately clear and distinct from sibling tools like get_open_lend_intents or create_counter_intent, 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 Guidelines3/5

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

The description implies the use case (checking if two intents are compatible) but does not explicitly say when to use it versus alternatives, nor does it mention any exclusions or prerequisites beyond the API key. It provides basic context but no comparative guidance.

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

check_x402_urlA

Check whether a URL is x402-protected and, if so, what it costs — without any credential. Public probe (IP rate-limited). Returns { x402: false, status } for plain URLs or the payment requirements for x402 ones. Use to vet a vendor before minting keys or funding. No API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL to probe.

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 carries the full burden. It discloses that no credential is required, that it is a public probe with IP rate-limiting, and explains the exact return shape for both plain and x402-protected URLs. This is comprehensive behavioral transparency for a read-only probe.

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, each earning its place: the first states the core function, the second describes behavior and return format, and the third gives a specific use case. It is front-loaded and free of unnecessary detail.

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 single-parameter tool with no output schema, the description is complete. It covers the return shape, authentication requirements, rate limiting, and a concrete usage scenario, making it fully self-contained for an agent to select and invoke 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% for the single 'url' parameter, which has a clear description 'Target URL to probe.' The tool description does not add parameter-specific meaning beyond the schema, so the baseline score 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 clearly states the tool checks whether a URL is x402-protected and what it costs, using the specific verb 'Check' and resource 'URL'. It distinguishes itself from sibling tools like x402_pay by emphasizing it's a public probe without credentials, making its purpose unique 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 explicitly provides a use case: 'Use to vet a vendor before minting keys or funding.' It implies when to use (when you need to assess a URL without credentials) but does not explicitly name alternatives or when-not-to-use, so it falls slightly short of full guidance.

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

clear_spend_limitA

Remove the agent's session spend cap. Subsequent paid calls will only be bounded by the on-chain creditLimit. Requires an agent key (floe_...).

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 provided, the description carries the full burden of disclosing effects. It clearly states the action, the post-condition (only bounded by creditLimit), and the authentication requirement (agent key). This exceeds a bare 'clears the spend limit' and provides meaningful behavioral context, though it could go further (e.g., reversibility).

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 short sentences, front-loading the core action ('Remove the agent's session spend cap.') and adding essential context ('Requires an agent key') without any filler. Every word 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?

For a parameterless tool with no output schema and in the context of a balanced set of sibling tools, this description is complete. It covers the action, the impact on future behavior, and the necessary authority, leaving no obvious gaps for an agent to miss.

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, making schema coverage trivially 100%. No parameter documentation is needed, so the baseline of 4 applies. The description correctly focuses on the action and its effects instead of 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 states a specific verb ('Remove') a specific resource ('the agent's session spend cap') and clarifies the resulting boundary ('Subsequent paid calls will only be bounded by the on-chain creditLimit'). This clearly distinguishes it from sibling tools like set_spend_limit and get_spend_limit.

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 the use case: when you want to lift the session cap but still be bound by the on-chain credit limit. It also provides a prerequisite ('Requires an agent key'), which is useful guidance. However, it does not explicitly mention when not to use this tool or name alternative tools, so it misses the top tier.

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

close_agentA

Permanently close an agent: repays outstanding facility loans, sweeps unspent funds back to the developer (unspent welcome credit returns to the treasury), and disables its keys. Irreversible. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id.

TDQS

A4/5.0
Behavior4/5

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

Given the absence of annotations, the description carries full burden and informs significantly: it details financial effects (repaying facility loans, sweeping unspent funds), resource disposition (disabling keys), irreversibility, and authentication needs. This is rich behavioral context, though it omits potential edge cases 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 exceptionally concise and front-loaded, opening with the core action, then listing specific effects and warnings in a compact format. Every sentence contributes value without redundancy, and the parenthetical about welcome credit adds precision without bloat.

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 single-parameter destructive tool with no output schema, the description covers the essential operational aspects: irreversible action, financial outcomes, key handling, and authentication. It doesn't mention the response format or whether the agent is hard-deleted vs. deactivated, but these are secondary to the primary behavioral effects.

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 sole parameter agent_id is fully described in the schema as 'Numeric agent id', so schema coverage is 100%. The description adds no additional parameter-level detail, but none is needed for a simple identifier, so the baseline score 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 clearly states the specific action: 'Permanently close an agent' and enumerates the consequences (repays loans, sweeps funds, disables keys). This distinguishes it from sibling tools like pause_agent and resume_agent, which are temporary, and the explicit 'Irreversible' further clarifies its purpose.

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 it through 'Permanently' and 'Irreversible', but doesn't explicitly contrast with alternatives or state when not to use it. The developer key requirement is a useful prerequisite, but there's no direct comparison with pause_agent or other lifecycle tools.

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

create_agentA

Provision a new managed agent end-to-end: agents row → Privy-managed wallet → sponsored on-chain operator delegation → $3 welcome credit auto-disbursed on the account's FIRST agent only (immediately spendable; once per account, not per agent). Defaults to pay-as-you-go funding (no credit line; upgrade later with open_credit_line). Returns agentId, privyWalletAddress (the deposit address), and delegationTxHash — NOT an API key; mint one with create_agent_key. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAgent name (alphanumeric / space / underscore / hyphen).
max_rate_bpsNoMax annual interest rate the delegation accepts, in bps (default 1500 = 15%).
expiry_secondsNoOperator delegation lifetime in seconds (default 90 days).
borrow_limit_rawNoOptional on-chain borrow limit in raw USDC (6 decimals). Omit for the pay-as-you-go default.

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 discloses key side effects: funded wallet, sponsored delegation, $3 welcome credit (first agent only, once per account), and the no-credit-line default. This goes well beyond a simple 'create' and explains the full behavior.

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 information-dense and front-loaded, but the long arrow-chain and embedded clarifications make it a bit dense. Still, every sentence adds value and no filler is present.

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 complex create operation with no output schema, the description covers return values, auth requirements, funding default, and the one-time credit edge case. It is complete enough for an agent to set expectations and avoid mistakes.

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 parameter semantics are already documented. The description adds context for borrow_limit_raw via the pay-as-you-go note but doesn't elaborate on max_rate_bps or expiry_seconds 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 opens with 'Provision a new managed agent end-to-end' and details the exact sequence (agent row, wallet, delegation, credit). It explicitly distinguishes itself from create_agent_key by noting it returns agentId/walletAddress/delegationTxHash, NOT an API key.

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 provides clear context: defaults to pay-as-you-go and directs 'upgrade later with open_credit_line', while also stating 'mint one with create_agent_key' for API keys. It also notes the developer key prerequisite, making when-to-use vs alternatives explicit.

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

create_agent_keyA

Mint a new agent API key (floe_...) for an agent — the credential its runtime tools and x402_pay use. The plaintext key is returned ONCE; store it securely and never echo it into chat. Optionally cap the key with a rolling spend budget (fail-closed). Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoHuman-readable label for the key.
agent_idYesNumeric agent id.
budget_rawNoOptional per-key spend budget in raw USDC (6 decimals), positive.
window_secondsNoRolling budget window in seconds. Omit for the server default.

TDQS

A4.7/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 responsibility for behavioral disclosure. It explicitly warns that the plaintext key is returned only once, instructs to store it securely and not echo into chat, and explains the budget option is fail-closed. These are critical security traits not discoverable from 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 three sentences, front-loaded with the core action, and contains only high-value information. No fluff or repetition; 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's sensitivity (creating a credential), the description covers essential aspects: the key prefix, one-time retrieval, security handling, optional budget, and developer-key requirement. No output schema exists, but the description mentions the main output (the plaintext key) and its security implications, making it sufficiently complete for correct 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 schema already has 100% parameter coverage with descriptions for all four fields. The description adds value by explaining that the budget is a 'rolling spend budget (fail-closed)', which clarifies the operational consequence of combining budget_raw and window_seconds beyond what the schema states.

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 'Mint a new agent API key (floe_...)' for an agent, identifying the resource and action. It also differentiates from siblings like rotate_agent_key and revoke_agent_key by focusing on creating a new credential for runtime tools and x402_pay.

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: this is for creating a new key and requires a developer key (floe_live_...). It does not explicitly mention alternatives or when-not-to-use, but the purpose is unambiguous enough that an agent can infer when to choose it over sibling key-management tools.

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

create_borrow_intentC

Build unsigned tx to create a borrow request. Solver matches it with lenders. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoMarket ID (bytes32). Omit to use the USDC/USDC same-token market on Base Mainnet — the recommended default for AI agents (no price risk, only interest-accrual liquidation).
min_ltv_bpsNoMin LTV in bps (default 8000 = 80%). For agents pushing the USDC/USDC market to 99% LTV, pass 9900. Same-token markets need only a 50bps gap to the lender's max_ltv_bps; volatile markets need 800bps.
borrow_amountYesAmount to borrow in raw token units
wallet_addressYesBorrower wallet
collateral_amountYesCollateral in raw token units
max_duration_daysYesMax duration in days
min_duration_daysYesMin duration in days
max_interest_rate_bpsYesMax annual rate in bps

TDQS

C2.9/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 of behavioral disclosure. It does reveal that the tool 'build[s] unsigned tx' (indicating no direct on-chain execution) and requires an API key, but it does not explain side effects, whether the intent is persisted, or what exactly the returned unsigned transaction represents. The mention of a solver matching suggests off-chain behavior but remains vague.

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, front-loaded sentences with no filler. The key action ('Build unsigned tx') is first, followed by the purpose and a clear requirement. 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?

Given the tool has 8 parameters, no output schema, and no annotations, the description is too sparse. It explains what the output is (an unsigned tx) but omits crucial context: how the tx should be used, whether it needs to be signed and broadcast separately, and what 'solver matches it with lenders' implies for the lifecycle. The description is insufficient for an agent to fully understand the tool's role without additional probing.

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 all 8 parameters with descriptions, so the baseline is 3. The tool description adds no parameter-level information beyond what the schema already provides. The schema itself offers rich context for market_id and min_ltv_bps, so the description does not need to 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 identifies the verb ('Build') and resource ('borrow request'), and adds that a solver matches it with lenders, which clarifies its role among other intent tools. However, it does not explicitly distinguish it from siblings like create_lend_intent or create_counter_intent, so it falls short of a 5.

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 prerequisite (API key) but gives no context about scenarios suited for creating a borrow intent, nor does it reference sibling tools like create_lend_intent or create_counter_intent.

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

create_counter_intentA

Create a counter-intent against an existing offer. Primary way to accept offers. Solver auto-matches. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_hashYesSource intent offer hash
wallet_addressYesYour wallet address

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 the full burden. It discloses the auth requirement ('Requires any Floe API key') and the auto-matching behavior, which adds value. However, it does not describe side effects (e.g., whether the original offer becomes inactive) or what happens after creation, leaving some behavioral ambiguity typical of 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 succinct with four short sentences, each earning its place: action, use case, automation behavior, and auth requirement. It is front-loaded with the primary purpose, making it easy to scan.

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 covers purpose, use case, behavior, and auth. It omits minor context like whether the counter-intent can be revoked or how the original offer is affected, but these are not critical for using 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 description coverage is 100%, and both parameters are adequately described ('Source intent offer hash' and 'Your wallet address'). The description does not add further parameter-specific details beyond what the schema already provides, so it does not elevate the baseline.

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 ('Create a counter-intent') and identifies the target resource ('against an existing offer'). It further distinguishes this tool from siblings by calling it the 'Primary way to accept offers,' making its role clear relative to other intent 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 provides clear context on when to use the tool: to accept an existing offer. The phrase 'Primary way' implies it is the go-to method, though it does not explicitly list alternatives or exclusions. The mention of 'Solver auto-matches' hints at the intended workflow but lacks explicit comparison to other create/revoke tools.

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

create_lend_intentA

Build unsigned tx to create a lending offer. Solver matches it with borrowers. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in raw token units
market_idNoMarket ID (bytes32). Omit to use the USDC/USDC same-token market on Base Mainnet — the recommended default for AI agents (no price risk, only interest-accrual liquidation).
max_ltv_bpsYesMax LTV in bps (the liquidation threshold on the resulting loan). Volatile-collateral markets (USDC/WETH, USDC/cbBTC) cap at 9500 (95%). Same-token markets (e.g. USDC/USDC) cap at 9950 (99.5%) — values above 9500 are the aggressive opt-in, only safe for short-duration loans because the interest-accrual headroom shrinks.
wallet_addressYesLender wallet
max_duration_daysYesMax duration in days
min_duration_daysYesMin duration in days
min_interest_rate_bpsYesMin annual rate in bps (500 = 5%)

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 transparency burden. It discloses key behaviors: builds an unsigned transaction (not broadcasting), requires an API key, and relies on a solver for matching. This adds meaningful context 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 with the primary action front-loaded. Every word earns its place; no 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?

For a 7-parameter tool with no output schema, the description covers purpose, authentication, and the matching workflow. It doesn't explicitly describe the response or next steps (like broadcasting), but the sibling list includes broadcast_transaction, and the 'unsigned tx' wording implies the follow-up. Overall 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 input schema has 100% description coverage with detailed parameter explanations (e.g., max_ltv_bps limits). The tool description itself adds no additional parameter semantics, so the 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 explicitly states 'Build unsigned tx to create a lending offer' with a specific verb ('Build') and resource ('unsigned tx for lending offer'), clearly distinguishing it from sibling tools like create_borrow_intent and create_counter_intent.

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 useful context: this is for creating a lending offer, a solver matches it with borrowers, and it requires any Floe API key. While it doesn't explicitly name alternatives or exclusions, the workflow is clear enough for an agent to decide 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.

create_webhookA

Register a webhook endpoint for account events. Returns the signing secret ONCE — store it to verify deliveries. Current event catalog: loan.health_warning, loan.expiry_warning, loan.liquidated, loan.repaid, agent.created, key.created, key.rotated, x402.first_settlement (plus credit.warning / credit.at_limit / credit.recovered via register_credit_threshold). Max 10 webhooks. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS endpoint to deliver events to.
scopeNoDelivery scope (default global).global
eventsYesEvent names to subscribe to (validated server-side).
descriptionNoHuman-readable label.
scope_valueNoWallet address or loan id when scope is not global.

TDQS

A4.9/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 responsibility for behavioral disclosure. It reveals critical behaviors: the signing secret is returned only once and must be stored, valid event names are listed, and there is a 10-webhook limit. This is substantial transparency 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 compact: one sentence for purpose, one for the secret, one list for events, and one for constraints. Every sentence carries information, with no filler. It is well-structured and easy to parse.

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 having no output schema, the description provides essential context: what the tool does, the event catalog, the secret return behavior, and resource limits. It covers the key aspects needed to invoke the tool successfully, especially given the schema already documents 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 coverage is 100%, so baseline is 3. The description adds value by enumerating the valid event names for the 'events' parameter and clarifying the 'url' must be an HTTPS endpoint (though schema already says HTTPS). It also mentions the scope caveat via register_credit_threshold, further enriching parameter 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 opens with 'Register a webhook endpoint for account events,' which is a specific verb+resource pair that clearly states the tool's function. It also distinguishes itself from siblings like list_webhooks and test_webhook by mentioning the event catalog and the alternative register_credit_threshold for credit-specific events.

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 explicitly provides usage context: when to use the tool (for account events), alternatives (register_credit_threshold for credit events), and constraints (max 10 webhooks, requires a developer key). This gives clear guidance on selection and prerequisites.

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

delete_credit_thresholdA

Delete one of the agent's credit-utilization thresholds by id (from list_credit_thresholds). Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThreshold subscription id.

TDQS

A4.2/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 mentions the agent key requirement, which is useful. However, it does not state whether deletion is permanent, idempotent, or what happens on error, 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?

The description is a single, well-structured sentence that leads with the action and includes key details (source of id, auth requirement) in minimal words. Every part is meaningful.

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 delete tool with one parameter and no output schema, the description covers the essential information: what it does, how to get the id, and the auth context. It could mention return behavior or error handling, but this is not critical for such a straightforward 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?

The schema already provides a description for the 'id' parameter, covering its type and meaning. The description adds value by clarifying that the id comes from list_credit_thresholds and that an agent key is required, going 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 ('Delete'), the resource ('credit-utilization thresholds'), and the scope ('by id'), while referencing the source for the id (list_credit_thresholds). This distinguishes it from sibling tools like register_credit_threshold and list_credit_thresholds.

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 how to use the tool: obtain the id from list_credit_thresholds first, and notes the required agent key. It provides clear context for use, though it does not explicitly discuss when not to use it or name alternatives.

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

estimate_inference_costA

Estimate the USDC cost of a Floe Inference call for a given model and usage vector, WITHOUT making the call or touching balance. Returns the cheapest priceable source: { rail, provider, margin_bps, upstream_cost_usdc, cost_usdc, cost_raw }. Provide only the units the model bills: text models use input_tokens/output_tokens (+cached_input_tokens); TTS uses characters; STT uses audio_seconds; realtime voice uses audio_input_tokens/audio_output_tokens. Use BEFORE inference to decide gating. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id from list_models, e.g. "openai/gpt-4o" or "elevenlabs/eleven-turbo-v2.5".
charactersNoCharacters of input text (TTS models).
input_tokensNoPrompt tokens (text models).
audio_secondsNoSeconds of audio, fractional allowed (STT models).
output_tokensNoCompletion tokens (text models).
audio_input_tokensNoInput audio tokens (realtime voice).
audio_output_tokensNoOutput audio tokens (realtime voice).
cached_input_tokensNoCached prompt tokens billed at the cached rate (text models).

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well. It explicitly discloses non-mutating behavior ('WITHOUT making the call or touching balance'), the return structure, and authentication requirements. This gives the agent a clear safety profile and expectations.

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 dense yet efficient: the first sentence states the core purpose, followed by return format, parameter selection rules, usage timing, and authentication. Every sentence serves a distinct purpose with no fluff or 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?

Given there is no output schema, the description appropriately explains the return value fields. It also covers key contextual aspects: non-side-effect behavior, when to use, how to select parameters, and auth requirements. For a cost-estimation tool with 8 params, this is complete enough 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?

Although the input schema has 100% coverage, the description adds critical meaning beyond individual field descriptions: it maps parameter sets to model types and instructs 'Provide only the units the model bills', resolving which parameters are relevant for which use case. This is essential semantic info not 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 a specific action ('Estimate the USDC cost of a Floe Inference call') with a specific resource (Floe Inference) and scope ('given model and usage vector'). It also distinguishes itself from sibling tools by emphasizing 'WITHOUT making the call or touching balance', making it unambiguous what this tool does and doesn't do.

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 when-to-use guidance: 'Use BEFORE inference to decide gating.' It also gives parameter-selection guidance per model type (text/TTS/STT/realtime voice) and prerequisite auth information ('Requires any Floe API key'). This is comprehensive for choosing this tool over alternatives.

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

estimate_interestB

Estimate total interest for given loan terms. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesLoan principal in human units
duration_daysYesDuration in days
interest_rate_bpsYesAnnual rate in bps

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 disclose behavioral traits. It only mentions the API key requirement but does not specify whether the operation is read-only, what the return value format is, or any side effects. The word 'estimate' implies a calculation, but the description lacks explicit statements about non-mutation or expected output, leaving significant behavioral gaps.

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 extremely concise, consisting of two sentences with no filler. It front-loads the purpose and then adds the authentication requirement. While very short, it could have included more critical usage or behavior details without becoming verbose, but as written it is appropriately sized for the content it conveys.

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 no annotations, the description should explain what the tool returns and how it differs from similar tools like get_accrued_interest. It does neither. It lacks information about the response format, units of the interest estimate, and when to prefer this tool over others. This leaves an agent with insufficient context to fully utilize 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 description coverage is 100%, with each parameter (principal, duration_days, interest_rate_bps) having a clear description including units. The tool description adds no additional meaning beyond the schema, such as calculation specifics or relationship between parameters, so it does not enhance 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 tool's function: 'Estimate total interest for given loan terms.' This specifies the verb (estimate), the resource (total interest), and the scope (given loan terms), distinguishing it from related tools like get_accrued_interest which deals with actual accrued interest on existing loans. No ambiguity in what the tool does.

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 hypothetical loan term calculations by saying 'given loan terms,' but it does not explicitly state when to use this tool over alternatives (e.g., get_accrued_interest) or any exclusions. The only additional guidance is the API key requirement, which is more about authentication than usage context.

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

estimate_x402_costA

Preflight an x402-protected URL and return its USDC cost without paying. Reflects against the calling agent's available credit and session spend-limit so you can decide gating in one round-trip. Use BEFORE x402_pay. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL to preflight.
methodNoHTTP method (default GET).

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 takes on the full burden and does disclose key behaviors: it does not charge ('without paying'), it checks against credit and spend-limit, and it requires an agent key. It omits possible error behavior or exact side effects, but the non-payment and auth details are well 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?

Three sentences, all informative and front-loaded: the first states action and result, the second adds policy context, the third gives sequencing and a prerequisite. No 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?

For a no-output-schema preflight tool, the description explains the return value (USDC cost), the non-payment behavior, the timing, and the auth requirement. It lacks explicit error/edge-case detail, but the essential context for invoking the tool is present.

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 does not add parameter detail beyond the schema; url and method are already documented. Baseline 3 is appropriate because the schema carries the 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 uses a specific verb 'Preflight' and clearly identifies the resource (x402-protected URL) with the outcome (return USDC cost without paying). It distinguishes itself from x402_pay by explicitly stating 'without paying' and 'Use BEFORE x402_pay'.

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 gives clear contextual guidance: use before x402_pay to decide gating in one round-trip, and it requires an agent key. It does not name alternative tools or negative cases, so it falls short of a 5.

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

get_accrued_interestA

Get accrued interest and full credit status for a loan. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_idYesNumeric loan 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 carries the burden. It discloses the API key requirement, which is useful. However, it does not elaborate on what 'full credit status' entails or confirm whether this is a read-only operation, though 'Get' implies it.

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, efficiently structured sentence that leads with the purpose and follows with the authentication requirement. 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?

The tool is simple (one parameter, no output schema), and the description covers the purpose and auth requirement. However, 'full credit status' is somewhat ambiguous and could be clarified, especially given the existence of sibling tools like get_loan_health.

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% for the loan_id parameter ('Numeric loan ID'), so the description adds minimal meaning beyond the schema, only framing it in context of a loan. 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 specific resource 'accrued interest and full credit status for a loan', which distinguishes it from sibling tools like estimate_interest (projection) and get_loan (general loan 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?

The description implies when to use the tool (to retrieve accrued interest and credit status for a loan) and provides authentication context, but it does not explicitly state when to choose this over alternatives or mention any exclusions.

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

get_activityA

Unified account activity feed: x402 proxy calls, onramps, transfers, and loan events, newest first. Filter by agent, type, or time range; paginate with the returned cursor. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter to these activity types. Omit for all.
limitNoMax results, 1-100 (server default 50).
sinceNoISO-8601 lower bound.
untilNoISO-8601 upper bound.
cursorNoOpaque pagination cursor from a previous page.
agent_idNoFilter to one agent (numeric 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 the burden. It discloses ordering ('newest first'), pagination behavior ('paginate with the returned cursor'), and authentication ('Requires a developer key'). These are useful behavioral traits beyond the schema. It lacks rate limits or error behavior, but still provides substantial 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, then filters, then auth. Every clause delivers value; no filler 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?

Despite no output schema, the description covers feed scope, ordering, filtering, pagination, and authentication—enough to select and invoke the tool correctly. It omits the response shape, but 'feed' and the listed event types give a reasonable mental model. The complexity is moderate (6 optional params), and the description addresses all major usage 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 coverage is 100%, so baseline is 3. The description adds a high-level summary of filters ('Filter by agent, type, or time range') but no new parameter-level detail beyond what the schema already explains for type, limit, since, until, cursor, and agent_id. The cursor description is already 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 begins with 'Unified account activity feed' and enumerates the event categories (x402 proxy calls, onramps, transfers, loan events), clearly distinguishing it from siblings like get_balances and get_usage_summary. It states the resource and scope with a specific verb implied by 'get_activity'.

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 explains filtering by agent, type, or time range and explicitly mentions pagination via the returned cursor. It also notes the developer key requirement. It does not contrast with alternatives explicitly, but the feed description implies use for listing activity events, and no sibling offers this unified view.

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

get_agentA

Get one agent's full detail: status, privyWalletAddress (deposit address), creditUsed, 24h transaction count, and session spend snapshot. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id (from create_agent / list_agents).

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 burden. It discloses the developer key requirement and lists the specific fields returned, giving the agent a good sense of behavior. It does not explicitly state read-only nature or error conditions, but 'Get' and the shown fields imply a safe read.

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 purpose, and zero wasted words. The list of fields is compact and informative.

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 single-parameter getter with no output schema, the description adequately covers the returned fields and auth requirement. It lacks explicit read-only confirmation or error cases, but the tool is simple enough that this is not a major 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 coverage is 100% and the agent_id parameter is already described in the schema (numeric ID from create_agent/list_agents). The description adds no additional 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?

Description states 'Get one agent's full detail' with a specific list of returned fields (status, privyWalletAddress, creditUsed, etc.), clearly identifying the verb, resource, and scope. It distinguishes itself from list_agents by focusing on a single agent's detailed data.

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 context is clear: use this when you need a single agent's detailed snapshot. It does not explicitly mention alternatives or when not to use it, but the purpose is specific enough to guide selection among many sibling tools.

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

get_agent_reputationA

Return the calling agent's unified credit reputation: a 0-100 score, an A-E band, confidence (0-1 share of the model backed by real signals), the resulting collateral-requirement multiplier (collateralMultiplierBps; 10000 = 1.0x baseline, lower score = higher multiplier), modelVersion, and computedAt. Behavioral discipline (declined spends, policy breaches, tool-call reliability, verified-settlement diversity) feeds the score alongside repayment and payment history. Use to understand how much collateral the next borrow will require. Returns 404 until the first score is computed. Requires an agent key (floe_...).

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 provided, the description carries the full burden of behavioral disclosure. It discloses the 404 response until the first score is computed, the auth requirement (agent key), the meaning of the confidence field, and the scoring basis (behavioral discipline plus repayment history). This goes well beyond a bare 'get' description. The only minor omission is an explicit statement that the operation is read-only, but the 'get' verb and the nature of the tool make that 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?

The description is information-dense but every sentence earns its place: purpose, output fields, scoring logic, use case, error condition, and auth requirement. It is well-structured, starting with the core return value, then elaborating on fields, then providing context. There is zero 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?

Since there is no output schema, the description must define the return value, and it does so thoroughly: all six fields are listed, the multiplier semantics are explained with a concrete example (10000 = 1.0x), the 404 edge case is noted, and the auth requirement is stated. For a no-parameter getter with no output schema, this is as complete as one could reasonably expect.

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 is 4. The description adds contextual meaning by explaining that the tool acts on the calling agent's identity, which is the implicit parameter derived from the API key. There are no parameter semantics to explain, and the description properly acknowledges the auth key requirement.

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 ('Return') and clearly identifies the resource ('the calling agent's unified credit reputation'). It lists the exact output fields (score, band, confidence, collateralMultiplierBps, modelVersion, computedAt), which fully disambiguates it from sibling getters like get_credit_remaining or get_loan_state. This is a model of purpose clarity.

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 states the intended use case: 'Use to understand how much collateral the next borrow will require.' This gives a clear invocation context. However, it does not mention alternatives or when not to use the tool, which would be needed for a 5. Still, the guidance is helpful and actionable.

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

get_allowlist_modeA

Return the agent's current merchant-allowlist enforcement mode (off | host | vendor | both). Requires an agent key (floe_...).

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 full responsibility. It discloses the authentication need (floe_... key) and enumerates possible return values, which gives good behavioral clarity for a zero-parameter read operation. It does not describe error behavior or side effects, but for a read-only getter the key disclosure is valuable.

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 the core purpose and then provides the return enum and auth requirement. No 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?

For a simple, parameterless getter, the description fully specifies what it returns and the required credential. No output schema or further context is necessary, and the sibling tools provide the broader context for related allowlist operations.

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 zero parameters, so the baseline is 4. The description adds no parameter-specific details because none exist; the empty schema already tells the agent no arguments are needed.

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 uses a specific verb ('Return') and names the exact resource (current merchant-allowlist enforcement mode) with the range of possible values ('off | host | vendor | both'). It clearly distinguishes itself from the sibling set_allowlist_mode by focusing on reading the current state.

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 phrase 'current' and the enumeration of modes make it clear this is for reading the enforcement state, contrasted with sibling tools like set_allowlist_mode. It also states the authentication requirement (agent key). It does not explicitly mention when to avoid using it, but the context is sufficient for a simple getter.

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

get_balancesA

Aggregate USDC balances across the developer account: developer wallet, every agent wallet, and API credits. Requires a developer key (floe_live_...).

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?

No annotations are present, so the description must carry the burden. It discloses the authentication requirement ('Requires a developer key (floe_live_...)') and the exact scope of balances included. While it doesn't explicitly state read-only, the verb 'get' and 'aggregate' imply a non-mutating operation. This adds useful behavioral context beyond an empty 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 tight sentences: the first front-loads the purpose with a clear verb and scope; the second adds the essential auth requirement. No filler words or redundant explanations.

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 tool has no params, no annotations, and no output schema, so the description must cover function and invocation requirements. It does both, though it stops short of describing the exact response structure (e.g., whether it returns a single total or per-wallet breakdown). Given the simplicity, this is reasonably complete; a small improvement would be specifying the return format.

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 no properties, so there are zero parameters to document. Per the rubric, 0 params yields a baseline of 4; the description correctly mentions no arguments are needed aside from implicit auth, so no additional parameter semantics are required.

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 function: 'Aggregate USDC balances across the developer account' with specific scope (developer wallet, every agent wallet, API credits). This distinguishes it from sibling get_wallet_balance (single wallet) and get_credit_remaining (credits only), satisfying the specific-verb+resource criterion.

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 a use case: when a complete picture of all USDC balances is wanted. It states a prerequisite (developer key) but does not explicitly contrast with alternatives like get_wallet_balance or get_credit_remaining. However, the 'aggregate' wording and listing of all sources provide clear context, warranting a 4.

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

get_credit_line_boundsA

Preview the valid deposit / LTV bounds and current funded balances for upgrading an agent to a credit line. Use BEFORE open_credit_line. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id.

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 the full burden. It discloses an authorization requirement ('Requires a developer key (floe_live_...)') and implies read-only behavior via 'Preview.' It also states what data is returned (bounds and funded balances). It doesn't describe errors or return format, but for a simple read-only preview this is reasonably 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?

Two sentences, zero filler. The first sentence front-loads the action and resource; the second provides usage order and auth requirement. Every clause 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?

With one simple parameter, no output schema, and a read-only preview purpose, the description covers the core aspects: what it does, when to use it, and what auth is needed. It doesn't explain the structure of the returned bounds, but the tool name and description are clear enough for an agent to invoke it correctly. A perfect 5 would require a bit more detail on output interpretation.

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% because agent_id has a clear description ('Numeric agent id.') in the schema. The tool description adds no extra parameter-level detail, so the baseline of 3 applies per the rubric—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 uses a specific verb ('Preview') and identifies the exact resource ('valid deposit / LTV bounds and current funded balances') and the target action ('upgrading an agent to a credit line'). It clearly distinguishes this from siblings like open_credit_line (which opens) and get_credit_remaining (which checks remaining balance).

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 the tool: 'Use BEFORE open_credit_line.' This names the direct alternative (open_credit_line) and provides a clear temporal context. While it doesn't list exclusions, the directive is sufficient and unambiguous for a pre-flight check tool.

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

get_credit_remainingA

Return how much USDC credit the calling agent has left. Use BEFORE deciding whether to make a paid call. Two distinct numbers: available (= spendable USDC right now — what the proxy actually gates on) and headroomToAutoBorrow (= operator-delegation borrowing capacity — how much MORE the agent could draw from its credit line). These differ when the agent has delegation capacity but no facility loan opened yet: headroomToAutoBorrow > 0 does NOT imply available > 0. Use available for the spend gate. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 covers behavioral nuances: the distinction between `available` and `headroomToAutoBorrow`, the condition where headroom can be positive while available is zero, and the proxy gating behavior. This is exceptionally 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 concise yet thorough, with each sentence contributing essential information: purpose, usage timing, field semantics, and authentication requirements. 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.

Completeness5/5

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

Given the tool has no parameters and no output schema, the description covers all necessary context: what it returns, the meaning of each field, how to use it, and the required agent key. It is fully self-contained for an agent to select and invoke 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?

The tool has zero parameters, so the baseline is 4. The description adds meaningful context about the return values and their interpretation, which compensates for the lack of an output 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 'Return how much USDC credit the calling agent has left' with a specific verb and resource. It distinguishes between two important numbers and explicitly differentiates this from general balance queries, making its purpose 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?

It provides explicit 'Use BEFORE deciding whether to make a paid call' guidance and clarifies which field to use for the spend gate. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

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

get_funding_instructionsA

Return machine-readable funding instructions for an agent: the USDC deposit address, chain (Base, 8453), and any minimums/warnings. Hand this to the human when welcome credit runs out — funding is the one step an agent cannot do alone. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id.

TDQS

A4.3/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 of behavioral disclosure. It clearly states the auth requirement (developer key starting with floe_live_) and describes the output as machine-readable with key fields. It does not mention side effects, but as a read-only getter this is sufficient for an agent to understand what the tool does and what to expect.

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 key output details, then the usage trigger and auth requirement. Every sentence adds value with no redundancy 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?

For a tool with one parameter, no output schema, and no annotations, the description provides the essential information: what it returns (address, chain, minimums/warnings), when to use it (welcome credit exhausted), and a critical prerequisite (developer key). This is complete enough for an agent to invoke 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 schema covers 100% of the single parameter (agent_id) with a type, pattern, and description. The tool description adds no additional parameter-specific 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?

The description opens with a clear verb ('Return') and resource ('machine-readable funding instructions'), then specifies the exact contents (USDC deposit address, chain Base/8453, minimums/warnings). This precisely distinguishes it from sibling tools, which focus on lending, borrowing, credit, and transactions.

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 states when to use the tool: 'Hand this to the human when welcome credit runs out — funding is the one step an agent cannot do alone.' This provides strong usage context and the reason why it exists. It does not mention alternatives or exclusions, but the context is unambiguous.

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

get_intent_detailsA

Get full details of a specific intent by its offer hash. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_hashYesIntent offer hash (bytes32 hex)

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 an important behavioral requirement: 'Requires any Floe API key (agent floe_... or developer floe_live_...).' However, it does not mention whether the operation is read-only (though implied by 'get'), error behavior, or response format, leaving some gaps for a simple get 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, front-loaded with the core purpose. The second sentence adds necessary authentication context without redundancy. Every word earns its place, and the structure is logical: what + how + prerequisite.

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 tool has a single parameter and no output schema, so the description covers the essential context: how to invoke it (with offer hash) and the API key requirement. It does not explain what 'full details' includes or error scenarios, but for a simple lookup tool, it is sufficiently complete for an agent to select and 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?

Schema coverage is 100%, so the baseline is 3. The description's phrase 'by its offer hash' aligns with the schema's parameter description but adds no additional format, constraints, or usage semantics beyond what the schema already provides for offer_hash.

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: 'Get full details of a specific intent by its offer hash.' The verb 'get' plus the resource 'intent details' and the identifier mechanism ('offer hash') precisely distinguish it from sibling list tools like get_open_lend_intents, 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?

The description provides clear context: use when you need details for a specific intent identified by its offer hash. It implies differentiation from listing tools, though it does not explicitly name alternatives or state when not to use it. This meets the 'clear context' bar but falls short of explicit exclusions.

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

get_loanA

Get details of a specific loan by its numeric ID. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_idYesNumeric loan 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 authentication requirement (any Floe API key), which is a useful behavioral detail. However, it does not mention whether the operation is read-only, error conditions, or return format. For a simple getter, the auth disclosure is a positive 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 two sentences, front-loaded with the purpose, and includes the essential auth note. Every word earns its place; no unnecessary detail.

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 single-parameter getter with no output schema or annotations, the description is largely complete: it explains what the tool does, the parameter, and a key requirement. It could potentially mention the shape of the returned details, but the name 'get_loan' and the word 'details' reasonably imply a full loan object. The description is adequate without being exhaustive.

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 parameter is already documented as a numeric loan ID. The description reiterates this ('numeric ID') but adds no new semantic meaning beyond the schema. 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 retrieves details of a specific loan using its numeric ID. This distinguishes it from sibling tools like get_user_loans (which lists loans) and get_loan_health/get_loan_state (which focus on specific aspects). The verb 'Get' and resource 'loan' are explicit.

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 context: when you need a single loan's details by ID. It does not explicitly mention alternatives or exclusions (e.g., 'for listing use get_user_loans'), but the specificity of 'by its numeric ID' provides clear guidance for when this tool is appropriate.

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

get_loan_healthB

Check loan health: LTV, liquidation risk, accrued interest, early repayment terms. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_idYesNumeric loan ID

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the transparency burden. It discloses the API key requirement and the specific metrics checked, which implies a read-only operation, but it does not explicitly state that it has no side effects or describe error/edge-case 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; the first front-loads the tool's purpose and scope, the second covers authentication. No filler 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 read-only check tool with a single parameter and no output schema, the description adequately communicates the returned dimensions and the auth requirement. However, it could be more complete by explicitly stating the output format or common failure conditions, so it stops short of excellent.

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, loan_id, is fully described in the schema as 'Numeric loan ID'. The description adds no additional parameter-level detail, so the schema coverage establishes the baseline of 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 checks loan health and enumerates specific dimensions (LTV, liquidation risk, accrued interest, early repayment terms). The verb+resource pairing is specific, though it does not explicitly differentiate from sibling tools like get_loan or get_accrued_interest.

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 only an authentication prerequisite ('Requires any Floe API key...') and no guidance on when to choose this tool over alternatives. No exclusions or alternative recommendations are given.

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

get_loan_stateA

Return the agent's coarse credit state-machine view: idle | borrowing | at_limit | repaying. Use to gate actions that only make sense in specific states (e.g. don't spend while at_limit). Requires an agent key (floe_...).

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?

With no annotations, the description carries the full burden. It discloses the authentication requirement (agent key floe_...) and describes the output granularity as 'coarse' while enumerating the states. This adds meaningful context beyond the empty schema, though it could be more explicit about read-only semantics or error 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?

The description is two sentences, front-loaded with the core purpose, and every sentence earns its place: the first states what it returns, the second provides usage guidance and a prerequisite. 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 nature of the tool, the description covers the return values (the four states), a key use case, and a required credential. It could be more explicit about read-only behavior or error responses, but for a state-machine getter, this is largely 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 zero parameters, so the baseline is 4. The description mentions an agent key as a requirement, but this is not a schema parameter and appears to be an authentication credential rather than a tool parameter, so it does not add parameter-level semantics beyond the baseline.

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 the agent's coarse credit state-machine view and enumerates the four possible states (idle, borrowing, at_limit, repaying). This specific verb+resource combination distinguishes it from sibling tools like get_loan_health or get_credit_remaining.

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: 'Use to gate actions that only make sense in specific states' with a concrete example ('don't spend while at_limit'). However, it does not explicitly mention alternatives or when not to use this tool, so it falls just short of the highest level.

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

get_marketsA

List all active lending markets with current rates and liquidity. No API key required.

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?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that no API key is required and restricts results to 'active' markets, which are important behavioral traits. It does not mention return format or pagination, but the read-only nature is implied by 'List' and the simplicity of the 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 exactly two short sentences, front-loaded with the primary action and outcome. There is no filler or redundancy, achieving maximum conciseness.

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 public list tool, the description is fairly complete: it states what is listed, the fields of interest (rates and liquidity), and the auth requirement. It lacks an explicit output schema or mention of pagination, but the simple scope makes it adequate for an agent to select and invoke 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?

The tool has zero parameters, so the schema already covers everything. The description does not need to add parameter details and appropriately focuses on the tool's behavior, aligning with the baseline 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 uses a specific verb 'List' with a clear resource 'active lending markets' and additional detail 'with current rates and liquidity'. This distinguishes it from other get_* tools like get_token_price or get_loan_health, which focus on different data.

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 phrase 'No API key required' provides clear context on when this tool can be used, indicating it is a public access point. However, it does not explicitly contrast with alternative tools or state when not to use it, so it falls short of offering full when/when-not guidance.

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

get_open_borrow_intentsA

Browse open borrow requests. Use create_counter_intent to lend against one. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoSkip count
limitNoMax results

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 transparency burden. It adds the authentication requirement ('Requires any Floe API key') and implies read-only behavior through 'browse', but does not explicitly state read-only status, response format, or pagination behavior. Moderate 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 composed of three short sentences: the primary purpose, a related usage hint, and the authentication requirement. It is front-loaded and concise, with no filler or 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?

For a simple paginated list tool with schema-covered parameters, the description covers the essential context: the resource, the auth prerequisite, and the connection to create_counter_intent. While it doesn't describe the response fields, the tool name and 'browse' make the return type inferable. No output schema exists, but the brevity is acceptable for this 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?

The input schema already documents both parameters (skip and limit) with descriptions, achieving 100% schema coverage. The description adds no additional parameter semantics, so the 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 tool's function with a specific verb ('browse') and resource ('open borrow requests'), and distinguishes it from sibling tools such as get_open_lend_intents. The purpose is immediately understandable.

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 clear use case: browsing open borrow requests, and explicitly points to create_counter_intent for lending, indicating a typical workflow. However, it does not explicitly contrast with get_open_lend_intents, but the context is sufficient for most agents.

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

get_open_lend_intentsA

Browse open lend offers available for borrowing against. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoSkip count
limitNoMax results

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the auth requirement and implies a read-only operation via 'browse,' but does not mention pagination, response format, or rate limits. Adds some context but lacks richer behavioral detail.

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, both valuable: the first conveys purpose, the second conveys auth requirement. No fluff, 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?

Although the tool is simple, the absence of an output schema means the description should explain what a successful response contains (e.g., list of offers with fields). It does not, and it omits any mention of default pagination or how to inspect individual intents via sibling tools.

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 skip and limit are fully documented. The description adds no extra parameter meaning, matching the baseline for high 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?

The description uses a specific verb ('browse') and resource ('open lend offers') with the purpose 'available for borrowing against.' It clearly distinguishes from siblings like get_open_borrow_intents and create_lend_intent by focusing on reading existing lend intents.

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?

States a clear prerequisite ('Requires any Floe API key') and implies usage context (to find lend offers to borrow against). Does not explicitly mention alternatives or exclusions, but the purpose is clear enough to guide tool selection.

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

get_spend_limitA

Return the agent's currently-active session spend cap, if any. Returns { active: false } when no cap is set. Requires an agent key (floe_...).

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 provided, the description carries the full burden of disclosing behavior. It discloses the return shape ({ active: false } when no cap), and the authentication requirement (agent key floe_...). It does not explicitly state that this is a read-only operation with no side effects, but 'Return' implies it. This is solid transparency 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?

The description is three short sentences, each earning its place: the first states the purpose, the second gives the absence return value, and the third provides the authentication prerequisite. It is front-loaded with the main purpose and contains no fluff or redundant details.

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 getter with no output schema and no annotations, the description is highly complete. It covers what it returns, the special case when no cap is set, and the required credential. The sibling tool context makes it clear that this is the read-only counterpart to set_spend_limit and clear_spend_limit, so the agent has enough information to use it 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?

The input schema has zero parameters, so baseline is 4 per the rubric. The description adds the context that an agent key (floe_...) is required, which is an authentication requirement rather than a parameter. No parameter information is needed, and the description does not conflict with 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 tool's purpose: to return the agent's currently-active session spend cap. It specifies the verb ('Return') and the resource ('the agent's currently-active session spend cap'), and distinguishes from sibling tools like set_spend_limit and clear_spend_limit by being read-only. The mention of returning { active: false } when no cap is set 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 Guidelines4/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: whenever you need to check the current spend cap. It implies the read-only nature and states a prerequisite (requires an agent key). However, it does not explicitly mention alternatives or exclusions, such as pointing to set_spend_limit or clear_spend_limit for modifying the cap, which would earn a 5.

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

get_token_priceA

Get current oracle price for collateral token. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
market_idNoMarket ID (bytes32). If omitted, the backend uses its configured default market (USDC/USDC on Base Mainnet).

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 of behavioral disclosure. It does add the key detail that API key authentication is required, and implies a read-only, time-sensitive operation by saying 'current'. However, it does not mention potential side effects, rate limits, or what happens if the key is invalid, which would strengthen 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 concise and front-loaded: the first sentence states the core function, and the second sentence adds the essential prerequisite. Every word earns its place, with no redundancy or irrelevant detail.

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 is nearly sufficient. It explains the API key requirement and the tool's general purpose, while the schema details the default market. It could optionally mention the return format (e.g., price representation) but that is reasonably implied for a price oracle 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 schema description covers the single parameter (market_id) with 100% coverage, including its type and default behavior. The tool description adds no additional parameter semantics beyond what the schema already provides, hence 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 a specific verb ('Get') and resource ('current oracle price for collateral token'), distinguishing it from sibling tools, none of which directly fetch token prices. The purpose is unambiguous and self-contained.

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 any Floe API key') but does not explicitly state when to use this tool versus alternatives or provide exclusions. Usage context is implied by the tool's name and purpose, but no direct comparison to other tools is given.

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

get_transaction_statusA

Check status of a submitted transaction. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_hashYesTransaction hash

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 of behavioral disclosure. It adds the auth requirement (any Floe API key) and the verb 'Check' implies a read-only operation. However, it doesn't disclose what statuses are returned or behavior on invalid hashes, which would be useful.

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 no wasted words. The first states the core purpose, the second provides essential auth context. Both sentences earn their 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 single-parameter tool without output schema, the description is adequately complete for invocation. It covers what the tool does and the auth prerequisite. It could mention the return statuses, but the tool name and simplicity make this 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 input schema fully documents the single parameter (transaction_hash with pattern and description). The tool description adds no additional semantic detail 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 uses a specific verb 'Check status' and identifies the resource as 'a submitted transaction'. It clearly distinguishes itself from sibling tools like broadcast_transaction (which submits) and simulate_transaction (which simulates). The purpose is 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 clearly states a prerequisite: requires any Floe API key, which is important for usage. It implies use after a transaction is submitted, but does not explicitly exclude alternatives or mention when not to use. Still, the context is reasonably clear.

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

get_usage_summaryA

Spend/usage analytics rollup for the account: KPIs, daily series, and top endpoints over a time window. The "how is my fleet doing" one-call view. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNoTime window (server default 7d).
agent_idNoScope to one agent (numeric 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 transparency burden. It adds the authentication requirement and the rollup nature, but does not explicitly state whether it's a read-only operation, describe side effects, or detail response behavior beyond 'KPIs, daily series, and top endpoints.' This is adequate but not rich.

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 core purpose, and every clause adds value. The metaphor 'how is my fleet doing' is efficient and memorable, and the auth requirement is a useful inclusion.

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 analytics rollup with no output schema, the description conveys the main content (KPIs, series, endpoints) and the required auth context. It could mention the optional agent_id filtering more explicitly, but given the schema covers that, the description is reasonably 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 schema already describes both parameters with 100% coverage, so the description adds little beyond the baseline. It mentions 'time window' and agent scoping implicitly, but no additional semantic detail 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?

The description clearly states this is a spend/usage analytics rollup returning KPIs, daily series, and top endpoints — a specific verb and resource. It implies a high-level 'one-call view' but does not explicitly contrast with sibling tools like get_activity, so it stops short of full 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 gives clear context for when to use it ('how is my fleet doing' one-call view) and notes a prerequisite (developer key). It does not explicitly exclude scenarios or name alternative tools, but the usage context is sufficiently clear.

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

get_user_loansA

Get all loans for a wallet address, both as borrower and lender. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
wallet_addressYesWallet address

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 must carry the burden of disclosure. It adds the authentication requirement and the dual-role (borrower/lender) behavior, which is useful. However, it does not explicitly state that it is a read-only operation (though 'Get' implies it), nor does it describe the return format, pagination behavior, or error cases. There is a clear gap but the core behavioral context is present.

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 short sentences, front-loaded with the primary function and immediately followed by the authentication requirement. Every word adds value, 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 a simple read tool with two well-described parameters and no output schema, the description is reasonably complete. It covers the key scope (all loans, dual role) and the necessary auth context. Missing details like response shape or pagination are partly implied by the parameters and the nature of the tool. For a list endpoint, this is 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?

The schema covers both parameters with descriptions (100% coverage), so the baseline is 3. The description adds value by clarifying that wallet_address is used to fetch loans for both borrower and lender roles, which is not present in the schema. This semantic enrichment justifies a 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 'Get all loans for a wallet address' with a specific verb and resource, and the 'both as borrower and lender' clause provides a scope that distinguishes it from sibling tools like get_loan or intent-specific tools. This is a precise, non-tautological statement of 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 gives clear context for when to use this tool (to fetch all loans for a wallet) and includes a prerequisite (requires any Floe API key). It does not explicitly name alternatives or say when not to use it, but the scope and requirement provide enough guidance for most users.

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

get_wallet_balanceB

Check token balances for a wallet. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
token_symbolNoToken symbol (e.g. "USDC"). Omit for all.
wallet_addressYesWallet address

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 burden of disclosing behavior. It does mention the required API key type, which is helpful. However, it does not explicitly state that the operation is read-only or describe the return format, though the word 'Check' implies a safe query.

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 that efficiently conveys both the purpose and the authentication requirement. Every word contributes value, and there is no redundant or filler 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 the tool's simplicity (2 parameters, no output schema, no annotations), the description covers the essential purpose and auth context. It could optionally note the default behavior when token_symbol is omitted, but the schema already explains that, so the description is sufficiently 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 provides full descriptions for both parameters (wallet_address and token_symbol), achieving 100% coverage. The tool description adds no additional parameter semantics beyond what the schema already offers, so the 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 ('Check token balances') and the resource ('for a wallet'), making the tool's purpose unambiguous. It does not explicitly differentiate from similar siblings like get_balances, but the scope is clear enough for selection.

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 get_balances or get_token_price. The only contextual note is the authentication requirement, which is a prerequisite rather than a usage condition.

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

liquidate_loanA

Build unsigned tx to liquidate an unhealthy loan. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_idYesLoan ID
market_idNoMarket ID
max_repaymentYesMax amount willing to pay
wallet_addressYesLiquidator wallet

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the key safety behavior: it only builds an unsigned transaction, thus no on-chain state change. It also states the API key requirement. However, it does not reveal what the output looks like, whether it performs health checks before liquidation, or any failure 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 extremely concise: two sentences, no redundant text, and the core action is front-loaded. Every phrase earns its place, including the API key requirement.

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 having no output schema, the description does not mention what the tool returns (presumably an unsigned transaction object) or how it relates to sibling tools like simulate_transaction or broadcast_transaction. It also leaves ambiguity about the optional market_id parameter and the conditions under which liquidation is attempted, making the description incomplete for a 4-parameter 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 each parameter (loan_id, market_id, max_repayment, wallet_address). The description adds no additional parameter-level semantics beyond what is in 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 action: 'Build unsigned tx to liquidate an unhealthy loan,' with a specific verb (build), resource (unsigned tx), and target (unhealthy loan). This distinguishes it from related tools like repay_loan and broadcast_transaction by emphasizing 'unsigned tx' and 'liquidate'.

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 the use case (liquidating an unhealthy loan) but does not explicitly mention when to use this tool over alternatives like repay_loan, nor does it note that the built transaction would need to be broadcast separately via broadcast_transaction. It also doesn't describe prerequisites beyond the API key requirement.

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

list_agentsA

List every agent owned by the developer account, with status, wallets, and credit limits. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the authentication requirement (developer key) and the returned fields, which is useful. But it does not mention read-only semantics, pagination, rate limits, or error behavior, leaving some behavioral traits undisclosed.

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 short sentences with no fluff. The first sentence front-loads the main action and results, and the second adds the essential auth prerequisite. Every word contributes 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?

Given the simplicity (0 params, no output schema), the description explains the core purpose and return fields, but lacks clarity on response structure (e.g., array vs. single object), pagination, or any limits. It is adequate for a basic list tool but not fully 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?

The tool has zero parameters, so the baseline is 4. The schema is empty and coverage is 100% vacuously. The description need not explain parameters; it correctly implies no input arguments are required, aside from the developer key which is an auth requirement, not a 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?

The description clearly states the tool lists every agent owned by the developer account, includes specific fields (status, wallets, credit limits), and is distinct from the singular "get_agent" sibling. The verb "List" and scope "every agent" make 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 Guidelines3/5

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

The description implies usage when you need a full list of agents, and notes the prerequisite of a developer key. However, it does not explicitly contrast with alternatives like get_agent or provide when-not-to-use guidance, so guidance 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.

list_allowlistA

List the agent's merchant-allowlist entries (host "api" and payee "vendor" policies) with their spend caps. Does not include session/task spend policies. Requires an agent key (floe_...).

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 of behavioral disclosure. It discloses the authentication requirement (agent key), the scope of entries, and that spend caps are included. It does not explicitly state the return format or error behavior, but for a read-only list operation, this is adequate 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 two sentences long, front-loaded with the action and resource, and contains no redundant or filler words. Every clause adds value (scope, exclusions, authentication requirement).

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 parameterless list tool with no output schema, this description is complete: it states the purpose, scope, exclusions, and a prerequisite. It gives enough detail for an agent to decide when to use it and what to expect.

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 is 4. The description correctly focuses on the tool's behavior rather than parameter details, which is unnecessary here.

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 the agent's merchant-allowlist entries, specifying the scope (host 'api' and payee 'vendor' policies) and explicitly mentioning spend caps. It distinguishes itself from sibling tools like get_allowlist_mode or add/remove allowlist entries by defining its exact resource and 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?

It provides usage context by stating what the tool includes and excludes (session/task spend policies are excluded) and notes the prerequisite of an agent key. However, it does not explicitly name an alternative tool for the excluded policies, so it misses the full 'when to use vs. alternatives' guidance that a 5 would require.

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

list_credit_thresholdsA

List the agent's registered credit-utilization thresholds. Each fires a credit.warning / credit.at_limit / credit.recovered webhook when crossed. Requires an agent key (floe_...).

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?

With no annotations provided, the description carries full behavioral disclosure. It adds meaningful context beyond the obvious: mentions the three webhook types (credit.warning, credit.at_limit, credit.recovered) and the authentication requirement (agent key floe_...). This goes beyond a bare 'list' statement, though it does not cover return format or error 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?

The description is two sentences, front-loaded with the primary action, followed by two concise pieces of behavioral context. No superfluous words, no repetition of the tool name beyond the necessary subject. Excellent structure.

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 list tool with no parameters, no annotations, and no output schema, the description covers the key aspects: action, associated webhook events, and authentication. It could mention what the return value looks like, but that is easily inferred for a list operation. The description is sufficiently complete for its 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?

There are zero parameters and the schema is empty, so there is nothing to document. The baseline for 0-parameter tools is 4, and the description adds no unnecessary param details. It correctly omits what does not exist.

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: 'List the agent's registered credit-utilization thresholds.' It uses a specific verb ('List') and resource ('credit-utilization thresholds'), and the added detail about webhook events distinguishes it from sibling mutation tools like register_credit_threshold and delete_credit_threshold.

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 context is clear: this is for reading registered credit thresholds. It does not explicitly mention when not to use it or name alternatives, but given the simple read-only nature and zero parameters, the intended use is obvious. No exclusions are needed, so it earns a 4.

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

list_modelsA

List the models available on Floe Inference — the keyless pay-as-you-go LLM/voice gateway. Returns OpenAI-compatible model objects (id like "openai/gpt-4o", modality: text | embedding | tts | stt | realtime, context_window). Use the id with the OpenAI-compatible /v1/chat/completions, /v1/embeddings, /v1/audio, or /v1/realtime endpoints, or price a call first with estimate_inference_cost. Requires any Floe API key (agent floe_... or developer floe_live_...).

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?

With no annotations, the description carries the full burden. It discloses the return shape (OpenAI-compatible model objects with id, modality, context_window), the keyless pay-as-you-go nature, and the authentication requirement. However, it doesn't explicitly state that the operation is read-only or describe pagination/error behavior, so it's not fully transparent but still 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 three sentences, each earning its place: purpose, return values and usage, and auth requirement. It is front-loaded with the main action, uses no filler, and is easily scannable.

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, no-output-schema tool, the description covers the necessary context: what the tool returns, how to use the returned data, and auth. It could optionally mention pagination or read-only semantics, but it is sufficiently complete for an agent to invoke and interpret results.

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 zero parameters, and the schema coverage is 100% (empty object). The baseline for 0 params is 4. The description adds context about the returned id format and how to use it, which is relevant to parameter-like behavior but not required since no params exist.

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 opens with a specific verb+resource: 'List the models available on Floe Inference'. It clearly identifies the tool's scope and distinguishes it from sibling tools by naming the specific gateway and the types of model objects returned (OpenAI-compatible with fields like id, modality, context_window).

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 usage guidance: the returned id should be used with specific endpoints, and estimate_inference_cost is suggested as an alternative for pricing calls. It also states the authentication prerequisite (any Floe API key). This clearly helps the agent decide when and how to use the tool.

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

list_webhooksA

List the account's registered webhooks with their subscribed events, scope, and active flag (secrets are never returned). Requires a developer key (floe_live_...).

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?

No annotations are provided, so the description carries the full burden. It discloses that secrets are never returned, which is an important behavioral constraint, and states the auth requirement. It omits pagination details or response format, but for a simple list operation it offers solid 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 two sentences, both purposeful. The first states exactly what is listed, and the second adds the secret-exclusion and auth requirements. There is no redundancy 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?

For a parameterless list operation with no output schema, the description covers the key aspects: the resource, the fields returned, the exclusion of secrets, and the auth requirement. This is sufficient for an agent to know what to expect.

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 schema is empty. Per rubric, the baseline is 4, and the description correctly omits parameter details since none exist.

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 'list' with the resource 'the account's registered webhooks', clearly stating the scope and returned fields (subscribed events, scope, active flag). It distinguishes this from sibling tools like create_webhook and test_webhook.

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 webhooks but does not explicitly contrast it with alternatives or provide when/when-not guidance. The only context given is the required developer key, which is a prerequisite rather than usage direction.

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

open_credit_lineA

Upgrade a pay-as-you-go agent to a managed credit line: the server signs a borrow intent collateralized from the agent's wallet (which must already hold the deposit — see get_funding_instructions). Check get_credit_line_bounds first for valid deposit/LTV ranges. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id.
deposit_rawYesCollateral deposit in raw USDC units (6 decimals), positive.
max_ltv_bpsNoOptional max LTV in bps. Omit for the server default.
max_rate_bpsNoOptional max annual rate in bps. Omit for the server default.

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 carries the full burden. It discloses a side effect ('the server signs a borrow intent collateralized from the agent's wallet'), a prerequisite (wallet must hold deposit), and an authorization requirement (developer key). However, it does not explain the return value, reversibility, or potential failure modes, leaving some behavioral 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 concise and well-structured: three sentences that front-load the core purpose, then add prerequisites and authorization. Every sentence adds necessary information, with no filler 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?

Given the moderate complexity (4 parameters, no output schema, no annotations), the description covers purpose, prerequisites, auth requirements, and references to related tools. It could benefit from stating what the response contains, but it is adequate for an agent to understand the operational context.

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 full 100% coverage of all 4 parameters. The description adds value by linking deposit_raw to collateralization from the agent's wallet, referencing get_credit_line_bounds for valid ranges, and clarifying that max_ltv_bps and max_rate_bps are optional overrides. This enriches the schema's basic 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?

The description clearly states the tool's function: 'Upgrade a pay-as-you-go agent to a managed credit line.' It distinguishes from siblings like create_borrow_intent by emphasizing the upgrade action and the managed credit line outcome, making the purpose 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 explicit prerequisites: the wallet must already hold the deposit (with a reference to get_funding_instructions) and advises checking get_credit_line_bounds first for valid deposit/LTV ranges. It also notes the developer key requirement. It lacks explicit alternative exclusions (e.g., 'use create_borrow_intent instead'), but 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.

pause_agentA

Pause (suspend) one agent — the per-agent kill-switch. Every call with the agent's keys fails auth from its next request until resume_agent. Only active agents can be paused. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent id.

TDQS

A4.3/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 and does well: it explicitly states that all calls with the agent's keys will fail auth from the next request until resume_agent, and that only active agents can be paused. It also discloses the developer key requirement. It stops short of describing idempotency or return values, but the core behavioral impact is well 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?

Three sentences front-load the core purpose, then add behavioral and prerequisite information. No wasted words, and the structure is efficient and scannable.

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 single-parameter mutation tool with no output schema, the description covers purpose, effect, prerequisites, and auth. It is complete enough for an agent to select and invoke the tool correctly, especially with sibling names like resume_agent and close_agent providing contrast.

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 single parameter agent_id is described as 'Numeric agent id.' The description itself adds no additional detail about the parameter beyond referencing 'the agent's keys,' which is context rather than parameter semantics. With high 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 opens with a specific verb and resource: 'Pause (suspend) one agent — the per-agent kill-switch.' This clearly identifies the operation and its scope, and the contrast with 'resume_agent' distinguishes it from the obvious sibling. The mention of 'per-agent kill-switch' adds precise functional identity.

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 gives clear usage context: it is used to suspend a single agent, only works on active agents, and requires a developer key. It also states the effect lasts 'until resume_agent,' implying the recovery path. However, it does not explicitly list 'when not to use' or alternative tools beyond the implicit resume_agent.

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

register_credit_thresholdA

Register a new credit-utilization threshold. When utilizationBps crosses thresholdBps from below, the agent's webhook receives credit.warning (or credit.at_limit if >= 9500). Drops below → credit.recovered. Cap of 20 thresholds per agent. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idNoOptional: pin to a specific webhook owned by this developer. Omit for fanout.
threshold_bpsYesUtilization threshold in bps (5000 = 50%, 9500 = 95% → at_limit).

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 the full burden. It discloses important behavioral traits: crossing direction triggers (from below), event names (credit.warning, credit.at_limit, credit.recovered), the 9500 bps special case, the per-agent cap, and authentication requirement. This goes well beyond a typical one-liner.

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 brief, front-loaded with the primary action, and every sentence adds meaningful detail (event triggers, recovery, cap, auth). 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 two-parameter tool with no output schema, the description covers the key aspects: purpose, event behavior, cap, and authentication. Gaps such as return value/created resource formatting and duplicate handling exist, but the description is complete enough for correct tool selection and basic 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?

Schema coverage is 100%, so baseline is 3. The description adds extra semantic value by explaining the crossing direction ('from below'), the recovery event ('Drops below'), and the 9500 bps special case, which are not fully captured in the schema parameter descriptions alone.

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 ('Register') and resource ('credit-utilization threshold'), and clearly differentiates from sibling tools list_credit_thresholds and delete_credit_threshold by focusing on creation and resulting webhook 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?

It provides clear context for when to use the tool (to create a threshold), including constraints like the cap of 20 thresholds per agent and requirement of an agent key. It does not explicitly mention alternatives or when not to use it, but the context is sufficient.

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

remove_allowlist_entryA

Remove (revoke) a merchant-allowlist entry by policy id (from list_allowlist). Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_idYesPolicy id of the allowlist entry.

TDQS

A3.8/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 of behavioral disclosure. It discloses the auth requirement (agent key) and the action (revoke), but does not mention side effects, error handling, idempotency, or response behavior. For a mutation tool, this is a notable 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 a single, well-structured sentence that front-loads the action and purpose, includes the source hint, and states the auth requirement. Every word contributes; there is 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 simple input schema (one integer param), no annotations, and no output schema, the description provides enough context for basic invocation: what to do, how to identify the entry, and what credential is needed. It does not cover error scenarios or idempotency, but for a tool of this simplicity, the overall package is reasonably 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?

The schema already describes policy_id thoroughly with a description and exclusiveMinimum, giving 100% coverage. The description adds value by specifying that the id comes from list_allowlist, which serves as a concrete source hint for the agent. This exceeds the baseline.

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 'Remove' with a parenthetical 'revoke' to make the action unambiguous, and names the target resource 'merchant-allowlist entry' along with the key identifier 'by policy id'. It also references 'list_allowlist' to distinguish from sibling tools like add_allowlist_entry, making the purpose unmistakable.

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 context by noting the entry comes from list_allowlist and that an agent key is required, but it does not explicitly state when to use this tool versus alternatives (e.g., add_allowlist_entry) or exclusion scenarios. The prerequisite is a usage guideline, but it is not fully developed.

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

repay_loanA

Build unsigned tx to repay a loan with auto-approval and slippage protection. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
loan_idYesLoan ID
slippage_bpsNoSlippage tolerance (500 = 5%)
wallet_addressYesBorrower wallet

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses the unsigned-transaction nature, auto-approval behavior, slippage protection, and auth requirements. However, it does not explain what happens with the built transaction (e.g., broadcast) or the detailed effects on the loan state, leaving gaps in behavioral understanding.

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 core purpose, no filler or redundant information. Each 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?

Given there is no output schema, the description should specify the return value and any follow-up steps. It says 'Build unsigned tx', which implies an unsigned transaction output, but does not clarify its format or how to broadcast it. With many transaction-related sibling tools, a bit more context would be helpful, but the description is minimally 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 description coverage is 100%, so the schema already documents all three parameters. The description adds 'slippage protection' which links to slippage_bps, but does not enrich understanding of wallet_address or loan_id beyond their schema definitions. 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 'Build unsigned tx to repay a loan', a specific verb and resource, distinguishing it from liquidation or collateral management siblings. The mention of 'auto-approval and slippage protection' adds further 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 notes the API key requirement but gives no explicit when/when-not guidance or alternatives to other loan transaction tools. Usage context is implied by the tool name and description, but no exclusions or comparisons are provided.

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

resume_agentA

Resume a paused (suspended) agent. Cannot resurrect closed agents or ones suspended by their own lifecycle flows (credit freeze, failed delegation). Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesNumeric agent 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 the full burden of behavioral disclosure. It discloses two key limitations (cannot resume closed agents or lifecycle-suspended ones) and the auth requirement (developer key). It does not detail success/failure behavior or side effects, but the most important constraints are surfaced.

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 action and followed by essential constraints. Every word earns its place with no repetition 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 one-parameter tool with no output schema, the description covers purpose, exclusions, and authentication. It could mention what happens if the agent is already running or the exact state transition, but the coverage is strong for 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 for the single parameter agent_id is 100%, and the schema already describes it as 'Numeric agent id.' The description adds no parameter-specific semantic information, so it remains at the baseline for high 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?

The description uses a specific verb+resource construction: 'Resume a paused (suspended) agent.' It clearly distinguishes this from siblings like pause_agent (the inverse) and close_agent by immediately noting that closed agents cannot be resurrected.

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 gives explicit when-not usage ('Cannot resurrect closed agents or ones suspended by their own lifecycle flows') and states a prerequisite (requires a developer key). However, it does not explicitly name alternative tools, leaving room for slight ambiguity about when to prefer this over other agent-management actions.

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

revoke_agent_keyA

Revoke (delete) an agent API key. Calls using it fail auth immediately. Irreversible — rotate_agent_key instead if the agent should keep running. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesKey id to revoke.
agent_idYesNumeric agent id.

TDQS

A4.7/5.0
Behavior5/5

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

Despite having no annotations, the description fully discloses the tool's behavioral traits: it is irreversible, causes immediate auth failure for calls using the key, and requires a developer key. This covers destructive nature, side effects, and prerequisites, which is more than sufficient for a tool with no structured 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?

The description is two sentences long, front-loaded with the core purpose, and every sentence adds value: the action, the immediate effect, the irreversibility, the alternative, and the required credential. No 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 simple two-parameter tool with no output schema and no annotations, the description covers all essential contextual information: what it does, the consequence, the alternative, and the permission requirement. The agent can confidently decide when to use it and what to expect.

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 100% coverage with clear descriptions for both parameters ('Key id to revoke.' and 'Numeric agent id.'). The description does not need to add parameter details, and it doesn't, 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?

The description clearly states the action ('Revoke (delete) an agent API key') with a specific verb and resource. It distinguishes itself from the sibling tool 'rotate_agent_key' by explicitly mentioning the alternative for keeping the agent running.

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 when-to-use and when-not-to-use guidance: 'Irreversible — rotate_agent_key instead if the agent should keep running.' This directly contrasts with a relevant sibling, telling the agent exactly when to choose the alternative. The immediate auth failure also conveys a practical consequence.

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

revoke_intentA

Build unsigned tx to cancel an active intent. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYesIntent side
offer_hashYesIntent offer hash

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 carries the burden of behavioral disclosure. It does disclose that the tool builds an unsigned transaction (implying no on-chain effect) and requires an API key. However, it does not explain what the transaction contains, whether it validates the intent's active status, or what the return format is. This is partial transparency, leaving important behavioral aspects unstated.

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, containing two sentences that directly state the purpose and a key prerequisite. No filler or redundant content. It is well-structured and front-loaded with the primary 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?

Given the lack of an output schema and annotations, the description should provide more context about return values and post-conditions. It explains the purpose and prerequisite but leaves gaps around expected output and the full workflow. 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?

The input schema already provides descriptions for both parameters (offer_hash and side) with 100% coverage. The description adds no additional semantic meaning beyond the schema, so the baseline score 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 clearly states the tool's action: 'Build unsigned tx to cancel an active intent.' This is a specific verb+resource combination that distinguishes it from sibling tools like create_lend_intent or broadcast_transaction. It also clarifies the tool's scope (unsigned tx, not broadcasting).

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 prerequisite (requires any Floe API key) but no explicit guidance on when to use this tool versus alternatives. It does not mention that this is the first step in a sign-and-broadcast workflow or when it should be used relative to other intent-related tools, such as create_counter_intent or cancel operations.

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

rotate_agent_keyA

Atomically revoke an agent key and mint its replacement (inherits label/permissions unless overridden). The new plaintext key is returned ONCE. Use on suspected leak or on a rotation schedule. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional new label; omit to inherit.
key_idYesKey id to rotate (from the agent's key list).
agent_idYesNumeric agent id.

TDQS

A4.4/5.0
Behavior5/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 atomicity, inheritance of label/permissions, the fact that the new plaintext key is returned only once, and the developer key requirement. This is comprehensive behavioral disclosure for a security-sensitive mutation.

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 core action. The first sentence explains what it does, the second highlights the return value caveat, and the third gives usage contexts. 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 moderate complexity, no annotations, and no output schema, the description covers the main behavioral expectations: atomic operation, result (new key returned once), and prerequisites (developer key). It doesn't detail failure cases or post-conditions, but this is sufficient for a well-scoped rotation 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 coverage is 100% with descriptions for each parameter. The description adds no additional parameter-level detail beyond noting the 'label' can be overridden, which is already implied by the schema's optional label. Baseline 3 is appropriate as the schema 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 the action: 'Atomically revoke an agent key and mint its replacement.' This uses specific verbs and identifies the resource (agent key), and distinguishes it from siblings like revoke_agent_key and create_agent_key by explicitly describing the combined rotate 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 gives explicit use cases: 'Use on suspected leak or on a rotation schedule.' It also mentions auth requirements ('Requires a developer key'), but does not explicitly state when not to use it (e.g., for permanent revocation use revoke_agent_key). This is clear context but lacks explicit exclusions, fitting a 4.

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

search_floe_docsA

Search the Floe documentation index (llms.txt) and return matching pages with titles, URLs, and descriptions. Whitespace-separated terms are matched case-insensitively against a page's section, title, URL, and description; results are ranked by how many terms hit, so pages matching every term come first. Use to answer "how do I…" questions about the Floe API, x402 vendors, spend controls, or this MCP server. No API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax matches to return.
queryYesSearch terms, e.g. "spend limit webhook".

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 full behavioral disclosure. It explains the matching semantics (whitespace-separated terms, case-insensitive, fields searched) and ranking (by number of terms hit). It lacks some details like pagination or empty-result behavior, but provides solid operational 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?

Three sentences, each packed with relevant detail: what it returns, how matching works, when to use it, and that no API key is required. No wasted words, front-loaded with the 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 low-complexity search tool with complete schema and no output schema, the description covers purpose, usage, behavior, and return values. It is entirely sufficient for an agent to select and 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%, so both parameters are documented. The description adds semantic value by clarifying how the query is processed (whitespace splitting, case-insensitivity, ranking), which goes beyond the schema's simple 'Search terms' description. The limit parameter defaults and bounds are already clear from 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 searches the Floe documentation index (llms.txt) and returns matching pages with titles, URLs, and descriptions. It uses a specific verb and resource, and distinguishes itself from the many API operation siblings by being the documentation search 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 explicitly says to use it for 'how do I…' questions about the Floe API, x402 vendors, spend controls, or this MCP server, and notes no API key is required. It does not name alternatives or exclusion scenarios, but the sibling list makes the intended use clear.

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

set_agent_key_budgetA

Set or update the rolling spend budget on one agent API key (FLO-585). Fail-closed: spend attributed to the key past the budget is refused until the window rolls. A 0 budget is invalid — revoke the key to block it entirely. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesKey id to budget.
agent_idYesNumeric agent id.
budget_rawYesBudget in raw USDC units (6 decimals), positive. e.g. "5000000" = $5.
window_secondsNoRolling window in seconds. Omit for the server default.

TDQS

A4.4/5.0
Behavior5/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 behavioral disclosure. It excellently does so by explaining the fail-closed behavior, that spend past the budget is refused until the window rolls, that a 0 budget is invalid, and that a developer key is required. This goes far beyond schema information and provides critical operational context for an 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?

The description is three dense sentences, each contributing valuable information: purpose, fail-closed behavior, and constraints/auth. There is no fluff or 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?

Given the tool has no annotations and no output schema, the description does well covering purpose, behavior, auth requirement, and invalid input handling. The only gap is that it does not describe the success response or what the tool returns after setting a budget. Since the output schema is absent, some indication of the return value would improve completeness, but the operational context is otherwise strong.

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 with descriptions for all parameters, so the baseline is 3. The description reinforces the budget constraint and rolling window concept but does not add significant new parameter-specific meaning beyond what the schema already states. It adds a little context by framing the budget as 'rolling spend' but this is already implied by the window_seconds 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?

The description uses a specific verb+resource combination: 'Set or update the rolling spend budget on one agent API key.' This clearly states the tool's function and distinguishes it from sibling key-management tools like revoke_agent_key or create_agent_key. The scope ('one agent API key') further narrows its 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 implies when to use the tool: when setting or updating a budget on a specific agent API key. It also provides an explicit exclusion for a 0 budget and directs users to revoke the key to block entirely, which serves as an alternative approach. However, it does not name specific sibling tools for comparison, though the alternative guidance is clear.

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

set_allowlist_modeA

Set the agent's merchant-allowlist enforcement mode. "off" (default) allows any vendor. "host" blocks unlisted hosts before the first fetch; "vendor" blocks unlisted payees before signing; "both" enforces both. Allowlist entries themselves are managed with add_allowlist_entry. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesEnforcement mode: off | host | vendor | both.

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 and does well: it explains what each mode does (blocks unlisted hosts before first fetch, blocks unlisted payees before signing) and requires an agent key. It does not specify immediate persistence effects or return behavior, but the core behavioral traits are disclosed, adding 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 three sentences, front-loaded with the main purpose, then explains modes, points to a related tool, and notes the auth requirement. Every sentence earns its place, with no fluff or repetition.

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 setter with one parameter, no output schema, and no annotations, the description is exceptionally complete. It covers all enum semantics, the default state, the relationship to allowlist entry management, and the required agent key. Nothing essential is missing 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?

The schema only lists the enum values without explaining them. The description enriches each value (off allows any vendor, host blocks unlisted hosts, vendor blocks unlisted payees, both enforces both), giving the agent a clear understanding of what each mode actually enforces. This is a significant addition beyond the schema's bare 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 'set' and the resource 'agent's merchant-allowlist enforcement mode', distinguishing it from sibling get_allowlist_mode and add_allowlist_entry. It also enumerates the specific modes and their effects, leaving no ambiguity about the tool's 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 clear context for when to use this tool (to change enforcement mode) and explicitly directs entry management to add_allowlist_entry. It does not explicitly mention 'use get_allowlist_mode to check current mode' but the set/get distinction is implied by the sibling context, making this a minor gap rather than a major omission.

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

set_spend_limitA

Set or update the agent's session spend cap (USDC raw, 6 decimals). Resets the session window — anything spent before this call no longer counts. Operator-defined; distinct from the on-chain creditLimit. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
limit_rawYesCap in raw USDC units (6 decimals), positive. e.g. "1000000" = $1.

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 of behavioral disclosure. It reveals that calling this tool resets the session window, so prior spending no longer counts, and that an agent key is required. This goes beyond basic semantics, though it could also mention idempotency or reversibility.

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 earning its place: the main action, the critical reset behavior, and the prerequisite. No filler or redundancy. Front-loaded with the verb and resource, making the purpose immediately 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?

For a single-parameter setter with no output schema, the description covers the essential context: purpose, distinguishing from on-chain limits, auth requirement, and side effect (session window reset). It is sufficiently complete for an agent to select and invoke the tool, though it doesn't speculate on return values.

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 already provides 100% coverage for the single parameter, including units and an example. The description adds context by framing limit_raw as the session cap and noting the reset behavior, but it doesn't significantly alter or deepen the parameter's meaning beyond what the schema already states.

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: 'Set or update the agent's session spend cap'. The verb is specific, the resource is explicit, and it distinguishes itself from the on-chain creditLimit and sibling tools like get_spend_limit and clear_spend_limit by emphasizing the session window and operator-defined nature.

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: it is for operator-defined session caps, distinct from on-chain credit limits, and requires an agent key. While it doesn't explicitly name alternative tools or say 'when not to use', it gives enough directional guidance to differentiate from related limit-setting tools.

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

simulate_transactionA

Dry-run an unsigned tx. Returns success/revert and gas estimate. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesContract address
dataYesEncoded calldata (0x hex)
fromYesSigning address (msg.sender)
valueNoETH value in hex0x0

TDQS

A4/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 transparency burden. It clearly indicates this is a dry-run (non-destructive) operation, returns success/revert and gas estimate, and requires an API key. This effectively communicates the key behavioral traits, though it could be more explicit about the lack of state changes.

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, two sentences, with the primary action front-loaded and no wasted words. It efficiently conveys purpose, output, and authentication requirements.

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 relatively simple tool with 4 parameters and no output schema, the description provides sufficient context including what the tool returns and the required authentication. Minor details like exact error formats are absent, but the overall picture is complete for practical 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%, so the baseline is 3. The description does not add additional parameter semantics beyond the schema, but the schema already documents all four parameters 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 performs a dry-run simulation of an unsigned transaction with a specific verb ('Dry-run') and resource ('unsigned tx'). It distinguishes itself from actual broadcast tools like broadcast_transaction by emphasizing the non-broadcasting nature.

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 for pre-broadcast testing, but it does not explicitly state when to use it versus alternatives such as broadcast_transaction. The context is clear, yet no explicit exclusions or alternative references are provided.

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

test_webhookA

Send a signed test delivery to one webhook endpoint so you can verify connectivity and signature handling end-to-end. Requires a developer key (floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesWebhook id (from list_webhooks).

TDQS

A3.9/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 that the delivery is signed and designed for end-to-end verification, but it does not mention what the response looks like, whether the test event is a real event, or any side effects on the webhook or system state. The lack of output schema makes this a notable 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, front-loaded with the action, and contains no filler. Every word contributes meaning about what the tool does and why.

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 one-parameter tool, the description covers the core purpose and a prerequisite. However, it omits information about the return value or expected output, which is especially important since no output schema is provided. The user is left to infer what 'verify connectivity' means in terms of the response.

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 the single parameter (webhook_id) with a description ('Webhook id (from list_webhooks)') at 100% coverage. The description adds no additional parameter information, so the 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 clearly states the action: 'Send a signed test delivery to one webhook endpoint' with the specific purpose 'so you can verify connectivity and signature handling end-to-end.' This distinguishes it from sibling tools like create_webhook and list_webhooks by focusing on testing an existing endpoint.

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 this tool: when you need to verify connectivity and signature handling for a webhook. It also provides a prerequisite ('Requires a developer key (floe_live_...)'). It doesn't explicitly state when not to use it or name alternatives, but the context is clear enough.

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

withdraw_collateralA

Build unsigned tx to withdraw excess collateral. Requires any Floe API key (agent floe_... or developer floe_live_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount to withdraw
loan_idYesLoan 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 burden. It usefully discloses that the tool 'Builds unsigned tx' (i.e., does not execute) and requires a Floe API key. However, it does not mention whether state is modified, what the return value is, or error behavior, leaving some 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?

The description is concise (two sentences) and front-loaded with the primary action. The second sentence adds essential authentication context without fluff. 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 two-parameter tool with no output schema, the description covers the core purpose and authentication. It does not explicitly mention the return value (the unsigned transaction), but given the name and 'Build unsigned tx', this is reasonably inferable. It is slightly incomplete regarding post-build steps (e.g., broadcasting).

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% for the two parameters (amount and loan_id), so the schema already provides adequate descriptions. The tool description adds no additional parameter-specific semantics beyond implying that the amount is 'excess' collateral.

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 ('Build unsigned tx') and the target ('withdraw excess collateral'). This distinguishes it from related tools like add_collateral or liquidate_loan. The phrase 'excess collateral' 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 context via 'withdraw excess collateral' and states an authentication requirement, but it does not explicitly explain when to use this tool versus alternatives such as add_collateral or repay_loan. There is no mention of exclusions or prerequisites beyond the API key.

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

x402_forecastA

Batch cost forecast + policy preflight for a PLAN of paid calls (FLO-545). Given up to 50 planned x402 calls (each with an optional repeat count), returns the aggregated USDC cost projection and a policyPreflight block listing which of the agent's policies would breach if the plan ran now. Read-only — nothing is paid or mutated. Use to validate a multi-step plan in one round-trip instead of estimating call-by-call. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesThe planned paid calls.

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 takes on the full burden. It clearly discloses read-only behavior ('Read-only — nothing is paid or mutated'), the requirement for an agent key, and the return structure (aggregated USDC cost projection and policyPreflight block). What is missing is potential error behavior or rate limits, but the key behavioral aspects 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?

The description is three sentences, front-loaded with the core purpose, followed by return details and usage guidance. Every sentence adds value with no repetition or extraneous information.

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 description explains expected outputs (aggregated cost and policyPreflight) since no output schema exists. It covers constraints (50 items, repeat count), safety (read-only), and prerequisites (agent key). For a moderately complex tool with a nested array parameter, this is fully 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 description coverage is 100%, so the baseline is 3. The description adds context by explaining the 'plan' concept and the repeat count, but these are already present in the schema (maxItems: 50, count property). It does not introduce new parameter semantics beyond what the schema already documents.

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: 'Batch cost forecast + policy preflight for a PLAN of paid calls'. It uses a specific verb and resource, and distinguishes from siblings like estimate_x402_cost by emphasizing batch processing and policy preflight. The scope is well-defined with the 50-call limit.

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: 'Use to validate a multi-step plan in one round-trip instead of estimating call-by-call.' This provides a clear alternative and context. It also mentions the prerequisite of an agent key and emphasizes read-only nature, guiding safe usage.

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

x402_payA

Execute a paid x402 call through the Floe proxy: Floe pays the vendor in USDC from the calling agent's balance/credit (subject to spend limits, budgets, and allowlist) and returns the vendor's response plus the X-Floe-* metering headers (cost, budget advisory, settled receipt). Pass idempotency_key (Stripe-style) so retries never double-pay. Use estimate_x402_cost or x402_forecast FIRST. Requires an agent key (floe_...).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe x402 vendor URL to call.
bodyNoRaw request body string (JSON-encode it yourself for JSON APIs).
methodNoHTTP method (default GET).
headersNoExtra request headers to forward to the vendor (payment/framing headers are stripped server-side).
idempotency_keyNoIdempotency key: a replayed call returns the cached response instead of paying again (FLO-548).

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries full responsibility, and it delivers: it discloses that money is spent from the agent's balance/credit, that spend limits/budgets/allowlist apply, that a settled receipt is returned, and that idempotency prevents double payment. It also notes that payment/framing headers are stripped server-side, which is important non-obvious behavior.

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 core action, followed by payment/return details, then tactical guidance and prerequisites. It is slightly dense but every sentence serves a distinct purpose: what it does, how to use it safely, what to do first, and what credential is needed. No 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?

For a complex, money-moving tool with no annotations and no output schema, the description is remarkably complete. It covers the payment mechanism, constraints, idempotency, prerequisites, return content (vendor response plus X-Floe-* metering headers), and directs users to estimation tools first. This is sufficient for an agent to safely invoke the 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?

Schema coverage is 100%, so the baseline is 3. The description adds genuine value beyond the schema by explaining the purpose of idempotency_key ('so retries never double-pay') and clarifying that headers are stripped of payment/framing headers. The body parameter's note to JSON-encode yourself is also reinforced contextually.

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 opens with a specific verb and resource: 'Execute a paid x402 call through the Floe proxy.' It clearly distinguishes this payment-execution tool from sibling estimate/check tools by stating that Floe pays the vendor in USDC and returns metering headers. It also explicitly directs users to estimate_x402_cost or x402_forecast first, reinforcing its unique role.

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: 'Use estimate_x402_cost or x402_forecast FIRST' and 'Pass idempotency_key (Stripe-style) so retries never double-pay.' It also states a hard prerequisite ('Requires an agent key (floe_...)') and mentions spend limits, budgets, and allowlist constraints, giving 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 65 tool updatesv0.3.0
    • First observedadd_allowlist_entry
    • First observedadd_collateral
    • First observedapprove_token
    • First observedbroadcast_transaction
    • First observedcalculate_risk
    • First observedcheck_compatibility
    • First observedcheck_x402_url
    • First observedclear_spend_limit
    • First observedclose_agent
    • First observedcreate_agent
    • First observedcreate_agent_key
    • First observedcreate_borrow_intent
    • First observedcreate_counter_intent
    • First observedcreate_lend_intent
    • First observedcreate_webhook
    • First observeddelete_credit_threshold
    • First observedestimate_inference_cost
    • First observedestimate_interest
    • First observedestimate_x402_cost
    • First observedget_accrued_interest
    • First observedget_activity
    • First observedget_agent
    • First observedget_agent_reputation
    • First observedget_allowlist_mode
    • First observedget_balances
    • First observedget_credit_line_bounds
    • First observedget_credit_remaining
    • First observedget_funding_instructions
    • First observedget_intent_details
    • First observedget_loan
    • First observedget_loan_health
    • First observedget_loan_state
    • First observedget_markets
    • First observedget_open_borrow_intents
    • First observedget_open_lend_intents
    • First observedget_spend_limit
    • First observedget_token_price
    • First observedget_transaction_status
    • First observedget_usage_summary
    • First observedget_user_loans
    • First observedget_wallet_balance
    • First observedliquidate_loan
    • First observedlist_agents
    • First observedlist_allowlist
    • First observedlist_credit_thresholds
    • First observedlist_models
    • First observedlist_webhooks
    • First observedopen_credit_line
    • First observedpause_agent
    • First observedregister_credit_threshold
    • First observedremove_allowlist_entry
    • First observedrepay_loan
    • First observedresume_agent
    • First observedrevoke_agent_key
    • First observedrevoke_intent
    • First observedrotate_agent_key
    • First observedsearch_floe_docs
    • First observedset_agent_key_budget
    • First observedset_allowlist_mode
    • First observedset_spend_limit
    • First observedsimulate_transaction
    • First observedtest_webhook
    • First observedwithdraw_collateral
    • First observedx402_forecast
    • First observedx402_pay

TDQS

A3.5/5.0
Disambiguation3/5

Many tools have clear and distinct purposes, but there are overlapping getters (e.g., get_loan_health vs. get_accrued_interest both report accrued interest and loan status; get_credit_remaining, get_loan_state, and get_spend_limit all concern credit state). The detailed descriptions help, but an agent could still select the wrong tool without reading carefully.

Naming Consistency4/5

The vast majority of tool names follow a consistent verb_noun pattern (get_markets, create_borrow_intent, revoke_intent, set_allowlist_mode). Minor deviations include x402_pay and x402_forecast placing the prefix first, while estimate_x402_cost and check_x402_url embed it in the middle, and search_floe_docs includes the server name.

Tool Count1/5

With 65 tools, the server far exceeds the 50+ threshold that signals an extreme mismatch. While the platform is broad (lending, payments, agent management, webhooks, inference), the sheer number is overwhelming and likely causes navigation and selection hurdles.

Completeness4/5

The tool surface covers the full lifecycle for most entities: agents (create, read, pause/resume, close), keys (create, rotate, revoke), intents (create, revoke, match), loans (repay, add/withdraw collateral, liquidate). Minor gaps exist: no webhook deletion or update, and no direct update endpoint for credit thresholds (only delete and re-register).

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
    MCP server for AgentPay — the payment gateway for autonomous AI agents. Fund a wallet once, give your agent the key, and it discovers, provisions, and pays for tool APIs on its own. One key, every tool.
    112
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Keyless crypto payments for AI agents. One MCP call turns any wallet address into a non-custodial crypto payment link or tip jar, no API key and no account, with funds settling straight to your wallet at a 0% platform fee (USDC/USDT, BTC, LTC, DASH, DOGE, ZCASH).
    3
    67
    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/Floe-Labs/floe-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server