Output, tokens and failures
Scraping MCP tool count after tool search: what still costs
Re-weight the tool-surface row of a scraping MCP rubric per client: deferred loading in Claude Code, a 128-tool cap in VS Code, no stated rule in Cursor.
Published
This article was drafted with AI assistance from the sources listed below and edited and published by Teneo Labs. Disclosure: this site is run by Teneo Labs, the company behind Live Web Data API, which this article mentions.
| Criterion | How tools load | Weight of raw tool count |
|---|---|---|
| Claude Code | Tool search on by default: names and server instructions load at start | Low; weight findable names high |
| VS Code | At most 128 tools per chat request | High; Firecrawl's full profile of 29 is about 23% of the cap |
| Cursor | The MCP docs page states no tool limit and no loading rule | High, as if every definition loads |
The pillar on scraping MCP token usage scores tool count as one row: more registered tools, more context spent before the first call. That row assumed one client behavior. Clients now differ. One defers definitions, one caps the count per request, one documents neither. The same 29-tool server is cheap in the first, tight in the second and unknown in the third.
This post re-weights the tool-surface row per client. All counts and client rules were checked on 2026-11-09. Client setup and troubleshooting are out of scope here.
The server side: counts as of 2026-11-09
| Server and surface | Tools | Narrowing documented |
|---|---|---|
| Firecrawl MCP, full profile | 29 per README | Smaller endpoints; FIRECRAWL_NO_SEARCH_FEEDBACK=1 and FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 each remove one feedback tool |
Firecrawl MCP, keyless /v2/mcp | 3 (firecrawl_scrape, firecrawl_search, firecrawl_parse) | Fixed |
Firecrawl MCP, /v2/mcp-search | 11, a fixed set | Fixed |
Jina MCP, mcp.jina.ai/v1 | 12 | include_tools, exclude_tools, include_tags, exclude_tags as query parameters |
| Live Web Data API | 2 | Not needed |
Two notes on the rows.
- Firecrawl's full-profile count is higher than the pillar's 2026-10-27 figure of 25+. A rubric row quotes the count with its check date, or it goes stale within weeks.
- Jina's filters run before registration, so the client never sees the excluded tools. Its README states the cost plainly: each registered tool costs context tokens for its name, description and schema whether or not it is called. The tags are
search,read,utilityandrerank. The README's example:
https://mcp.jina.ai/v1?exclude_tags=rerank,utility
Claude Code: names load, definitions wait
Tool search is on by default. Only tool names and server instructions load at session start; a definition loads when Claude needs it. The docs state no fixed per-server tool cap. The practical limit is the context window.
What changes for the row:
- Count weighs less. 29 Firecrawl tools cost 29 names at start, not 29 schemas.
- Findability weighs more. Tool search reads descriptions, and only up to the shorter limit. Default cuts: 4,096 characters for server instructions and for tools that load upfront, 16,384 for a tool loaded through tool search. A server whose key words sit late in a long description is harder to find.
- Exceptions put the count back.
ENABLE_TOOL_SEARCH=falseloads every tool upfront.autoloads deferred tools upfront while their definitions stay under 10% of the context window. A server set toalwaysLoad: trueloads all its tools every session. A tool can also ask for upfront loading throughanthropic/alwaysLoadin its_meta. - Model and platform matter. Models earlier than Opus 4 and Sonnet 4, earlier models on Google Cloud's Agent Platform, and Microsoft Foundry deployments hosted on Azure load MCP tools upfront.
Rubric weight in Claude Code with defaults: low for count, high for clear names and server instructions.
VS Code: a hard cap of 128 per request
The VS Code docs state that a chat request can have at most 128 tools enabled at a time. Above that, the request fails with "Cannot have more than 128 tools per request." The documented remedy is the github.copilot.chat.virtualTools.threshold setting. The page does not explain how virtual tools work and says nothing about deferred loading.
What changes for the row:
- Count is a share of a fixed budget. Firecrawl's full profile of 29 is about 23% of 128. Firecrawl plus Jina unfiltered is 41.
- Narrowing options weigh more. Jina's query filters and Firecrawl's smaller endpoints matter here in a way they do not under tool search.
Cursor: no stated rule
As of 2026-11-09, Cursor's MCP docs page states no tool limit and does not say whether tool definitions load upfront or on demand. It says tools listed under Available Tools are used when relevant. It documents disabling whole servers ("Disabled servers won't load or appear in chat") and admin tool allowlists. It does not describe toggling single tools on that page.
Not documented as of 2026-11-09. A rubric does not guess. The row is weighted as in a client that loads every definition, until Cursor's docs say otherwise. Older tool-cap figures for Cursor circulate in forum threads from 2025; they are not used here.
The re-weighted row
| Client (2026-11-09) | Weight of raw tool count | What to score instead or as well |
|---|---|---|
| Claude Code, defaults | Low | Names and server instructions that tool search can match |
Claude Code, alwaysLoad or ENABLE_TOOL_SEARCH=false | High | Count and description length |
| VS Code | High, against a 128 cap | Narrowing options per server |
| Cursor | High, no rule stated | Narrowing options; server-level toggles |
For the full scoring frame, see the rubric guide. For client-side limits on tool output rather than tool definitions, fetchmcp.net covers the MCP fetch token budget.
Where the small end of the table fits
Teneo Labs makes Live Web Data API, which appears in this table. The MCP server registers 2 tools. That keeps it near the bottom of the count row in every client above. It also does less: its MCP server reads one public page per call and does not render JavaScript, crawl sites, run searches or extract structured fields. A job that needs crawling, search or interaction needs one of the larger servers, and the per-client weights above then decide how much its count costs. The tool parameters are in the MCP docs.
Frequently asked questions
Does tool search make the number of MCP tools irrelevant?
No. In Claude Code with tool search on, only tool names and server instructions load at session start, so 29 tools cost 29 names instead of 29 full definitions. The count still matters in clients that send every definition, and in VS Code, which allows at most 128 tools per chat request.
How many tools does the Firecrawl MCP server register?
As of 2026-11-09 its README says 29 tools for the full profile with default settings. The keyless hosted endpoint exposes 3 tools and the search-only endpoint a fixed set of 11. Recount on the day, because the count changes between releases.
Can I cut the tool list of a scraping MCP server?
Some servers document it. Jina's remote server takes include_tools, exclude_tools, include_tags and exclude_tags as URL query parameters and drops the excluded tools before registration. Firecrawl offers smaller endpoints and two environment variables that each remove one feedback tool.
What does Claude Code do with a long tool description?
It cuts it. The defaults are 4,096 characters for server instructions and for tools that load upfront, and 16,384 characters for a tool loaded through tool search. Tool search matches only the part within the shorter limit.
Sources
- Claude Code docs: Connect Claude Code to tools via MCP (Documentation)
- VS Code docs: Use tools with agents (Documentation)
- Cursor docs: Model Context Protocol (Documentation)
- firecrawl-mcp-server README (GitHub) (Documentation)
- Jina AI MCP server README (Documentation)