Learn

Add a tool

Describe one function your product exposes, and how an agent reaches it.

View on GitHub

A tool is ONE function an agent calls — one MCP tool, one CLI command, one API endpoint. A product with three functions is three files, each named after its function.

Note. Its capability must be listed in tags.yml. If none fits, add it there in the same pull request.

How to create

  1. 1. Pick the capability it performs

    capability: puts your function on a shelf next to every other vendor’s version of the same job, so it must be listed under capability: in tags.yml, the one file that holds every tag. Look there first. If nothing fits what your function does, add an entry — a label and a few synonyms — in the same pull request.

  2. 2. Create one file per function

    A tool is ONE thing an agent calls — one MCP tool, one CLI command, or one API endpoint — and its file is named after that function. Apollo enriching a person, searching for people and enriching a company is three files, not one product page. The path is the key, and the key is the URL.

    companies/apollo/tools/enrich-person.md
    companies/apollo/tools/search-people.md
    companies/apollo/tools/enrich-company.md
  3. 4. Name the call on each way in

    mcp:, cli: and api: name the exact call on each way in your company.md declares: the MCP tool name, the CLI command (starting with the binary), or METHOD /path for an API — exactly as the vendor’s docs print it, with docs: pointing at the page that names it. A published tool needs at least one call and a docs: page; until it has both, set status: draft — a draft has no page and no file.

    companies/stripe/company.md
    ---
    name: Stripe
    domain: stripe.com
    category: payments
    tagline: Payments, billing and subscriptions for internet businesses.
    docs: https://docs.stripe.com
    github: https://github.com/stripe
    logo: stripe.jpg
    mcp:
      url: https://mcp.stripe.com
      auth: oauth
      docs: https://docs.stripe.com/mcp
    cli:
      install: npm install -g @stripe/cli
      binary: stripe
      auth: oauth
      docs: https://docs.stripe.com/stripe-cli
    api:
      url: https://api.stripe.com
      auth: api_key
      env: STRIPE_API_KEY
      keyUrl: https://dashboard.stripe.com/apikeys
      docs: https://docs.stripe.com/api
    updated: 2026-09-27
    ---
  4. 5. Date it

    updated is the day you last checked these facts, as YYYY-MM-DD. It is required, and it travels: a workflow file’s date is the newest of the tools it uses, so this date moves every workflow page built on your tool.

    updated: 2026-09-16
  5. 6. Check it locally

    One command parses every file, resolves every reference and renders the result. It reports every problem at once, each with the file that caused it (and the line, for a problem in the body). The same checks run again in CI on your pull request.

    pnpm install
    pnpm content:check
    pnpm dev   # then open /tools/apollo/enrich-person
  6. 7. Open a pull request

    One company, tool or workflow per pull request keeps the review quick. Say what you added and how you checked the facts. Maintainers review for accuracy, not for style — the build owns style.