Docs
How to ask for an application, how to flag a path that is wrong, and how to pull the catalogue into a script, a shell, or an agent instead of a browser.
Raising a request
There is no account and no form to sign into. Every request is a public GitHub issue, filed against the tracker rather than the site itself. The Request an app link in the header and footer opens a prefilled issue for exactly that - add the application’s name and it becomes the issue title.
You can also open the tracker directly and pick a template by hand - useful if what you need does not fit “add this application”, or if you want to check whether someone already asked. Browse the issue tracker.
Issues here are public. Do not paste real hostnames, usernames, tenant identifiers or customer names into one - describe the application, not the machine you found it on.
Reporting a wrong path, or adding an adjustment
Every path on a result card carries a Wrong path? Add a variant link at the foot of its plate. It opens a correction issue prefilled with the application and the platform you were looking at, so the report already carries the context a maintainer needs - you only have to say what is actually wrong: a stale path, a missing installer variant, a scope that needs confirming.
An “adjustment” is the same mechanism as a correction. There is no separate channel for small edits versus wrong entries - both go through the same issue, and both get triaged the same way.
The API
The catalogue is also a read-only JSON API, anonymous, under /api. It is the same data the site searches - nothing held back, nothing requiring a key.
| Route | Returns |
|---|---|
| GET /api/search?q=&platform=&type=&limit= | Matching applications, each qualified by platform and installer type |
| GET /api/summary | Catalogue totals and the most recently updated applications |
| GET /api/vendors | Every vendor, by name |
| GET /api/apps/{slug} | One application, or a 404 |
A search, filtered to Windows MSI installs:
curl "https://wherethemlogs.app/api/search?q=teams&platform=windows&type=msi"Paths come back exactly as stored - environment variables such as %LOCALAPPDATA% and $XDG_STATE_HOME are never expanded, and a label carrying several files is a paths array rather than one string. Read responses send cache-control: public, max-age=60, so a script polling this on a schedule can cache it for a minute without missing anything real.
A failure is always the same shape - { "error": "...", "message": "..." } - with a status of 400 for a bad query and 404 for a slug that does not exist. There is no rate limit beyond ordinary abuse protection; there is also no bulk export endpoint for anonymous callers; a search with no q returns the whole catalogue, alphabetically.
Curation - adding vendors, applications and log paths - is a separate, signed-in admin API. It is not covered here because it is not something a visitor calls; requests and corrections both go through the issue tracker above instead.
The MCP server
The same catalogue is available as an MCP server at /api/mcp, for agents rather than browsers. It speaks Streamable HTTP and is stateless - every call stands alone, there is no session to open first, and a response is plain JSON rather than an event stream.
| Tool | Arguments | Returns |
|---|---|---|
| search_log_locations | query, platform?, limit? | Matching applications, each with its log paths by platform |
| get_app_log_locations | slug | One application’s log paths |
Point a client at it:
claude mcp add --transport http wherethemlogs https://wherethemlogs.app/api/mcpOr call a tool directly, without a client:
curl https://wherethemlogs.app/api/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_log_locations","arguments":{"query":"teams"}}}'Results leave out ids, icons and timestamps to keep an agent’s context small, and search matches names and aliases the same way /api/search does. Requests over 64 KB get a 413; GET and DELETE get the standard 405, since there is no session to fetch or close.