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.
  • clientModule and execFunction — 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.