No key, no signup, no rate limit, no tracking. The same file the site is generated from, the same file the MCP server reads, published as it is. If you are an agent, start here. If you are a person building something, this is the fastest path to it.
| File | Bytes | What it is |
|---|---|---|
| data/directory.json | 1,165,729 | Every entry with every field, the 15 category blocks, the closed 55 job vocabulary with its per job counts, the duplicate groups, and the counts block the whole site renders from. |
| data/build_report.json | 45,904 | The counting authority's report: per file reconciliation, field coverage, every place this build is thin, and the 28 entries the tagging pass flagged for human review. |
| search-index.json | 281,781 | One compact record per unique product, which is what the on page search runs over. |
| llms.txt | text | The map, for agents and crawlers. Every section of the site with a one line description. |
| Field | What it holds |
|---|---|
| id | the entry id, stable across builds, prefixed with its category number |
| name / vendor_url / vendor_domain | the product and where it lives |
| what_it_does | one plain sentence, rewritten. Vendor copy never ships as the description |
| ai_features | what the AI actually does, separated from automation with an AI label on it |
| mcp_status / mcp_status_bucket | the verbatim field and the normalised bucket |
| mcp_url / mcp_urls | verbatim, and every URL parsed out of it |
| mcp_auth | verbatim. The sentence that decides your security review |
| api_gate / api_gate_bucket | verbatim, and the normalised bucket |
| jobs / jobs_tagged_by / jobs_tagged_on | tags from the closed 55 job vocabulary, and who tagged them when |
| tier / last_checked | RESEARCHED or BENCH-TESTED, and the date the facts were pulled |
| sources / source_urls / source_annotations | verbatim, and the URLs parsed out of it |
| canonical / canonical_id / also_listed_in | the 16 deliberate cross listings and where each one belongs |
| source_file / source_line | the exact line of the source markdown this entry came from |
| github_* / docs_digest / submission | present on every entry, null on every entry. Nothing has been measured for them |
Two counts exist and both are correct. 293 entries,
277 unique products. The difference is 16
products deliberately listed in two categories. Filter on canonical for products, count
everything for entries.
Buckets are normalised, verbatim fields are not. Every bucket has a matching raw field beside it. When they disagree, the raw field is the fact.
Every date means something different. last_checked is
when a human pulled that entry's facts. generated_on is only when this file was baked.
jobs_tagged_on is when the tags were written. Do not use one for another.
A job tag is not a test. A job tag means the vendor says the tool does this. It is not a test result, not proof the capability is reachable through the tool's MCP server, and not proof it is available on the gate this entry records.
Null means unmeasured, not zero. Every github_* field and docs_digest is null on all 293 entries because the rail that would fill them has not run.
Use it. Attribution to The GTM MCP Directory with a link is the only ask, and it is an ask rather than a licence trap. The data is free because it is more useful when other operators correct it, and a correction is the most valuable thing anyone can send. There is no key to request, no quota, and nothing about you is logged by this site because there is no backend to log it.
Facts about third party products are recorded from those vendors' own public sources with URLs, and every entry names them. If you are a vendor and something here is wrong, the correction path is the same one everybody else uses.
The canonical base URL used by the sitemap, the canonical tags and llms.txt is https://andrewcmcguire.com/gtm-directory, which is the site's intended home and not yet routed. See the methodology page.