{
  "markdown": "# MarkMesh MCP — trademark data your agent can cite\n\nConnect Claude (Desktop or Code), or any [Model Context\nProtocol](https://modelcontextprotocol.io) client, to **MarkMesh**: a\nnormalised trademark corpus across 30+ national and regional registers.\n\nThree things this gives an agent that a wrapper around office APIs cannot:\n\n- **Provenance on every record.** Which register it came from, when we fetched\n  it, and a link to that office's own entry where the office publishes one.\n  Your agent cites us, we cite the register.\n- **Monitoring, not just search.** Register a watch and poll what changed.\n  Monitoring needs something persistent to compare against, and a pass-through\n  proxy holds nothing between calls.\n- **Predictable lookups.** Most registers are served from our own store, so a\n  lookup doesn't wait on an office API. Where we do query an office live, the\n  response says so. See the [live coverage table](https://markmesh.com/data).\n\n> For trademark lawyers and IP teams who want their portfolio one question\n> away, and for builders putting trademark data underneath their own product.\n\n## Quickstart\n\n1. **Get an API key** — in MarkMesh, go to *Developers → API keys*\n   (`mm_test_…` to experiment, `mm_live_…` for a real portfolio).\n2. **Add the connector** — point your client at\n   `https://markmesh.com/api/v1/mcp` with header\n   `Authorization: Bearer <your-key>`. Full steps in **[SETUP.md](SETUP.md)**.\n3. **Ask** — restart your client and try one of the questions below.\n\n## Thirty seconds in\n\nOnce connected, this is the shape of a real exchange:\n\n```\nYou:  Is \"Kestrel\" already taken in software, in the EU and UK?\n\nClaude: I checked EUIPO and UKIPO for classes 9 and 42.\n\n        Three candidates, closest first:\n\n        KESTREL      EUIPO  018745231  registered\n          text similarity 1.00 · shares classes 9, 42 · same territory\n          https://euipo.europa.eu/eSearch/#details/trademarks/018745231\n          (from our corpus, fetched 30 Jul 2026)\n\n        KESTRAL      UKIPO  UK00003891234  registered\n          text similarity 0.94 · shares class 9 · same territory\n          https://trademarks.ipo.gov.uk/...\n\n        KESTREL LABS EUIPO  018991002  pending\n          text similarity 0.72 · shares class 42 · same territory\n\n        Both offices answered, so nothing is missing from this run.\n\n        I can't tell you whether the name is clear to use. That turns on\n        how the goods and services are worded and whether these marks are\n        actually in use, which needs a qualified professional. Want me to\n        watch the pending one for status changes?\n```\n\nNote what it does **not** say. There's no risk score and no verdict, because\nthe API deliberately returns neither.\n\n## What you can ask\n\n| You say | It uses |\n|---|---|\n| \"List my trademarks for client Acme.\" | `list_trademarks`, `list_clients` |\n| \"What's expiring in the next 90 days?\" | `list_filings` (deadline fields) |\n| \"Search USPTO and EUIPO for 'orbital'.\" | `search_office` |\n| \"Does 'Kestrel' conflict with anything in class 9?\" | `search_conflicts` |\n| \"Import EU trademark 018xxxxxx for Acme.\" | `import_filing_from_office` |\n| \"Tell me if that filing's status changes.\" | `create_watch` |\n| \"What changed since Monday?\" | `watch_changes_since` |\n\n## Build on it\n\n- **[examples/watch_bot.py](examples/watch_bot.py)** — a complete monitoring\n  bot in one file, standard library only. Fork it.\n- **[SKILL.md](SKILL.md)** — the agent skill: drop it in a Claude Code skills\n  dir, or use it as guidance for any MCP client.\n- **[reference/tools.md](reference/tools.md)** — full tool + argument\n  reference, including what every response guarantees.\n- **[SETUP.md](SETUP.md)** — get a key and wire up Claude Desktop / Claude Code.\n- **[llms.txt](https://markmesh.com/llms.txt)** — machine-readable summary of\n  the whole surface.\n\n## Capabilities & limits\n\n- **Read** trademarks, filings (with renewal/expiry deadlines), clients and\n  organisations.\n- **Search** registers for marks, and run **conflict research** against a\n  shortlist of names, scoped by Nice class.\n- **Import** a filing into the portfolio, and **refresh** an existing one.\n- **Watch** a filing and poll what changed.\n- **Scoped & safe**: every request is limited to the key's organisation and\n  gated by the same permissions as the app. There are **no delete tools** over\n  MCP; destructive edits stay in the web app.\n- **Not legal advice.** MarkMesh returns trademark data with its provenance.\n  Whether a mark is available to use is a legal judgement for a qualified\n  professional, and the conflict tool returns no verdict by design.\n- **Sandbox**: a `mm_test_*` key gets its own isolated **portfolio** —\n  trademarks, filings, clients and watches are separate from any live\n  organisation. **Office search is not sandboxed**: `search_office` and\n  `search_conflicts` read the same public register corpus a live key does,\n  so a sandbox search returns real marks, not fixtures. That is deliberate\n  (registers are public data, not tenant data) and it means you can\n  evaluate real cross-office coverage before you pay. Only calls that go\n  out to a live office adapter are routed to test endpoints.\n\n## Support\n\nQuestions or a key that won't connect → your MarkMesh administrator, or the\n*Developers* section of the app. Found a bug in this skill or these docs →\nopen an issue on this repo.\n\n---\n\nMIT licensed. © MarkMesh LTD.\n",
  "bytes": 5421,
  "sha": "9a404c62cfe3a5f6b369e57d90b127a32242602aac16aca5c6d5b3fceba9391b",
  "repo_slug": "team-markmesh/mark_mesh_skill",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_markmesh_trademarks_c93dbb93/readme"
}