# Topics (`mttr_topics`)

Updated October 24, 2026.

## What does mttr_topics do?

What a site covers: its subjects and the pages under each, pages competing for the same search, and places a subject is missing from. Any key may make this call, on any public site.

Who may call it: Any key.

## When to use it

- You plan new pages and want to know what is covered.
- Two pages may be competing for one search.

## What you ask

You might say: “What does example.com cover, and what competes?”

```
mttr_topics({ site: "example.com" })
```

| Argument | Type | Needed | What it is |
| --- | --- | --- | --- |
| `site` | Text | Yes | The site, as a domain such as example.com. |

## What comes back

- Each subject with its pages.
- Pages competing for one search.
- Subject names come from a model and are marked as quoted.

A sample, with made-up sites and figures:

| Subject | Pages | Note |
| --- | --- | --- |
| Drain cleaning | 9 | Two pages compete |
| Septic care | 6 |  |
| Water heaters | 1 | Missing from /towns |

## Over HTTP

```
curl "https://mttr.si/api/v1/sites/example.com/topics" \
  -H "Authorization: Bearer $MTTR_KEY"
```

## When it fails

| When | Status | What to do |
| --- | --- | --- |
| Your assistant has no key yet | 401 over MCP | Sign up with `mttr_signup`, then connect again with the key it gives. |
| mttr has no public report of the site yet | 404 | Ask for a read with `mttr_rescan`, then watch it with `mttr_job`. |

## Sources

- [Model Context Protocol: tools](https://modelcontextprotocol.io/specification/2025-06-18/server/tools), Model Context Protocol: How an assistant calls a tool.

The call in full: [mttr_topics in the API reference](https://mttr.si/docs/reference#mttr_topics).

## Goes with

- [Pages that read alike](https://mttr.si/docs/tools/similar.md)
- [Content gaps](https://mttr.si/docs/tools/gaps.md)
