Before an AI agent can use a tool, it has to know the tool exists, what it accepts, and how to call it. A JSON manifest is how that knowledge is exchanged. Instead of scraping HTML, the agent fetches one structured file and gets the whole catalogue.
The anatomy of a manifest entry
Take a typical entry on this site (145 tools across 13 categories, all in one manifest):
Going deeper on this theme: How to Remain Valuable When Intelligence Becomes Cheap — the scarce human, economic, and strategic advantages that stay valuable when AI does the cognitive work. A 224-page practical book, $3.84. Read it on Gumroad →
apiName— the stable identifier an agent uses to refer to the tool.description— what the tool does, written for a machine reader. This is the text an LLM actually uses to decide whether the tool fits the task.clientModuleandexecFunction— where to load the code and which exported function to call.inputSchema— the parameters the tool accepts, with types and defaults.execution.mode— how the tool runs: as an importable module (frontend-api), through a server executor (server), or in the browser (browser).
Why agents prefer this
A manifest removes ambiguity. The agent does not guess; it reads. It can validate its input against the schema before calling, inspect the module before importing it, and fall back gracefully when a tool is unavailable. For the site publishing the manifest, the benefit is symmetry: humans and agents see exactly the same catalogue, so there is no gap between what is advertised and what works.
A minimal reading pattern
const manifest = await fetch('https://itsfully.online/api/manifest.json').then(r => r.json());
const tool = manifest.categories
.flatMap(c => c.tools)
.find(t => t.apiName === 'text-to-slug-converter');
From there, the agent either imports the module and calls execFunction, or — for server-executed tools — posts to the connector API. One file, one contract, no scraping.