The APIVerve MCP server can hand an agent every endpoint in the catalog, over three hundred tools, in one line of config. That is the right setup for exploring in a desktop assistant, where a person is watching and the question changes every minute. It is the wrong setup for a production agent with a job. A support bot that books meetings does not need a maze generator, and every tool it can see is a tool it can pick by mistake.
Tool design is the part of agent building with the biggest payoff per line of code, and it is mostly about saying no.
Why fewer tools work better
Three costs grow with the size of the tool list, and none of them is obvious from a demo.
Selection errors. The model chooses a tool by reading names and descriptions. With five tools, each with a distinct job, it rarely picks wrong. With three hundred, there are dozens of near-neighbours: World Time and Timezone Lookup both return the time in a city, Exchange Rate and Currency Converter both return a rate. When two tools could plausibly answer, the model will sometimes pick the one you did not test, with parameters you did not expect.
Tokens on every request. Tool definitions are sent with every request in the loop, and they count as input. A long list is paid for on turn one and again on every later turn, whether or not any of those tools gets called. Some model APIs can defer loading or search tool definitions, which helps, but the cheapest definition is the one you never send.
A wider blast radius. An agent can only misuse tools it has. If a prompt injection in a scraped page tells it to render a thousand screenshots, the agent that only has a time tool and a currency tool cannot comply.
The rule of thumb: start from the agent's job, list the questions it must answer, and give it exactly the tools those questions need. Add one when a real conversation shows a gap, not when it seems like it might be handy.
Pick one tool per job
Near-duplicates are the most common source of wrong choices, so resolve them before the model has to. Here are two pairs from the catalog that overlap:
| Job | Option A | Option B | Pick when |
|---|---|---|---|
| Time in a place | World Time (city) | Timezone Lookup (city or timezone) | A when users name cities; B when you already hold an IANA zone |
| Money between currencies | Exchange Rate (rate only) | Currency Converter (amount, rate, trend) | B when users talk in amounts; A for a bare rate |
curl "https://api.apiverve.com/v1/timezonelookup?city=Chicago" \
-H "x-api-key: YOUR_API_KEY"One object rather than a list of matches, with timezone_offset in minutes.
Timezone Lookup returns a single object with timezone and timezone_offset (we got America/Chicago and -300 for Chicago in October) plus the local date and time24. It also accepts an IANA zone name instead of a city (timezone=America/New_York gave -240), which makes it the better tool when the agent is scheduling across offices whose zones you already store. When users type city names into a chat box and you want to see every match, World Time is.
curl "https://api.apiverve.com/v1/currencyconverter?value=250&from=USD&to=JPY" \
-H "x-api-key: YOUR_API_KEY"convertedValue does the multiplication for you. change24h and the high/low fields are premium.
For a travel or invoicing assistant, Currency Converter answers in the user's terms: value, convertedValue, rate, plus date and lastUpdated for provenance. The arithmetic happens in the API rather than in the model, which removes a class of errors entirely. Expose one of the two, not both.
Your agent has both Exchange Rate and Currency Converter as tools. Users report it sometimes multiplies amounts itself and gets the decimals wrong. What is the best fix?
Answer the check above to continue.
Scope access, not just the tool list
Choosing tools is half of scoping. The other half is making sure the credentials behind them cannot do more than the tools need, because a bug or an injected instruction can reach anything the key can.
If your agent runs through MCP rather than your own loop, you can narrow the server itself. Appending an endpoint id gives you a server with exactly one tool, for example https://api.apiverve.com/v1/mcp/emailvalidator, with the same key and billing. That is the right shape for a single-purpose agent; see the MCP setup guide.
Either way, give the agent a sub-key rather than your primary key, so you can revoke it without touching anything else, and block the endpoints it has no business calling with key scoping. Scoping is a deny-list, so new catalog endpoints are reachable by default; revisit it when you change what the agent does.
Next: Handle tool errors in agents, where these wrappers learn to fail in ways the model can recover from, and the loop learns when to stop.