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.
Note. Its capability must be listed in tags.yml. If none fits, add it there in the same pull request.
How to create
1. Pick the capability
capabilitylists your function next to every other vendor’s version of the same job, so it must be one of the capabilities intags.yml, the one file that holds every tag. Look there first. If none fits, add an entry — a label and a few synonyms — in the same pull request.2. Create one file per function
Name the file after the function it calls. Apollo enriching a person, searching for people and enriching a company is three files, not one product page. The path is the tool’s key, and the key is its URL.
companies/apollo/tools/ enrich-person.md search-people.md enrich-company.md3. Write the header
A tool file is a YAML header between
---lines and nothing else. Unknown fields are rejected, so a typo fails the check with the file path instead of silently vanishing.namesays what the function does (“Enrich a person”), and thesummaryis one sentence about what the call returns or changes.companies/apollo/tools/enrich-person.md --- name: Enrich a person summary: Returns one person's title, employer, employment history and work email, matched from an email, a LinkedIn URL, or a name plus company. capability: enrich-contacts docs: https://docs.apollo.io/reference/people-enrichment mcp: apollo_people_match cli: apollo people enrich api: POST /people/match updated: 2026-09-26 ---4. Name the call on each way in
mcp,cliandapiname the exact call on each way in that yourcompany.mddeclares: the MCP tool name, the CLI command (starting with the binary), orMETHOD /pathfor an API — exactly as the vendor’s docs print it, withdocspointing at the page that names it. A published tool needs at least one call and adocspage; until it has both, setstatus: 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 ---5. Date it
Set
updatedto the day you last checked the facts, asYYYY-MM-DD. A workflow’s date is the newest of its own and its tools’ dates, so this date also moves every workflow that uses the tool.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.
Terminal pnpm install pnpm content:check pnpm dev # then open /tools/apollo/enrich-person7. Open a pull request
Send one company, tool or workflow per pull request. Say what you added and how you checked the facts. Reviewers check accuracy; the build handles formatting.