The server's 26 tool definitions cost ~18,511 tokens (tiktoken cl100k) at tools/list — paid by every session up front. The bulk is long-form description sections (firecrawl_scrape ~1201 tokens of description; "Usage Example", "CRITICAL - Format Selection", "Common mistakes"...). That's documentation, and models are good at reading docs on demand — but it's being paid per-session as selection metadata. At the same time, 24 of 26 tools declare parameters with no description, so the layer models use for argument semantics is empty.
Measured what-if: trimming each description to its first paragraph alone puts the menu at ~9,218 tokens (50% less); a realistic middle (keep "Best for" lines, move format guidance into the relevant parameters' descriptions) lands close to that while improving argument-level clarity. Method + script: https://github.com/lCrazyblindl/lap/blob/main/docs/UPSTREAM-ISSUES.md.
Happy to draft the restructuring as a PR. (Disclosure: I maintain lap, the measurement tool; MIT, no product.)
The server's 26 tool definitions cost ~18,511 tokens (tiktoken cl100k) at
tools/list— paid by every session up front. The bulk is long-form description sections (firecrawl_scrape~1201 tokens of description; "Usage Example", "CRITICAL - Format Selection", "Common mistakes"...). That's documentation, and models are good at reading docs on demand — but it's being paid per-session as selection metadata. At the same time, 24 of 26 tools declare parameters with nodescription, so the layer models use for argument semantics is empty.Measured what-if: trimming each description to its first paragraph alone puts the menu at ~9,218 tokens (50% less); a realistic middle (keep "Best for" lines, move format guidance into the relevant parameters' descriptions) lands close to that while improving argument-level clarity. Method + script: https://github.com/lCrazyblindl/lap/blob/main/docs/UPSTREAM-ISSUES.md.
Happy to draft the restructuring as a PR. (Disclosure: I maintain
lap, the measurement tool; MIT, no product.)