Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • > zero information lost

    You're just returning the name of the tool, the rest of the information (description/input schema) is definitely lost. Cut to the LLM making mistakes in calling the tool with incorrect schema or calling the wrong tools altogether, recovering, wasting tokens and cycles.

  • I think that some of these choices (as others have commented) show that the author has not investigated how tokenization works.

    Tokenization is not some black box, you can run tokenizers and check them.

  • OP, I'm very interested in seeing an actual comparison ran through a common tokenizer of tool calls. I think you'll find different results than what you intended for this tool to be. You've mixed up tokens with characters on your screen.
  • How do unresearched, vibe-coded projects like this reach the front page?
  • I made an MCP proxy with a similar idea in the past: replace a ton of tools that consume tokens with just two (get_tool_schema, invoke_tool) - https://github.com/ameshkov/mcp-compress-router

    One thing that I noticed is that it’s often better to return tool names with argument names, i.e. return “search_web(query)” instead of just “search_web” when listing tools. Otherwise models often tend to hallucinate argument names and an extra turn is required to correct the mistake.

    One additional advantage that such tools provide is that when you use different coding agents you don’t have to set up all the MCP servers in every agent, you just set up one (or point the agent to the cli like in this project).

  • I spent more than one week, as a side project, to add an MCP server to my Cheméo website. Only 4 tools.

    It took me way more time than expected, I was thinking: "Just wrap the REST API, 2h, done".

    The MCP payload has nothing to do with the REST API one. Because you need to make it interpretable and context efficient even so it is structured data.

    It was really interesting work and I suppose very little people are taking the time to rethink what is sent over the wire while creating a MCP server. If so, we would not have MCPs with the minimal payload being 500kB of JSON soup.

    If you send my MCP through your "save token filter", I can guarantee you, that you will have trash down the line.

    by Loic
  • I don’t think the Show Me section makes sense, the TOON variant clearly doesn’t have the same information. And the examples in the “How TOON works” section focuses on number of characters instead of tokens. I would think “null” is a single token anyway, why bother replacing it with an uncommon character?
    by Zinu
  • Why is it replacing true/false with T/F? true/false is already 1 token in all tokenizer I've seen. Even worse is replacing null with ∅. ∅ is a special unicode symbol that takes up 2 tokens compared to the 1 token for null...

Explore Birbla archives