Koskamo

Antevo Trademark MCP

This MCP server provides public trademark screening tools, allowing agents to check name availability and access opposition deadlines. Signed-in tools enable watchlist management and holder investigations for authenticated users.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Antevo Trademark MCP logo, by AntevoVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Antevo
MCP endpoint (Streamable HTTP)
https://trademark.antevo.ch/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 0 of 11 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to antevo.ch ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Check if a trademark name is available
  • View opposition deadlines
  • Manage trademark watchlists
  • Investigate trademark holders

Source and maintenance

Vendor evidenceRegistry 1.0.2
Maintenance checked

Protocol and capabilities

Server
antevo-trademark 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
16 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Antevo Trademark watches the trademark registers for conflicts, copycats and lookalike filings. Use these tools to screen a name, read who holds a mark, see what is closing, and follow an adversary. Everything is read from public registers: it is intelligence, not legal advice, and the user's counsel acts on it. Never present a deadline as certain — always say their counsel confirms it. It does not advise whether to sue, oppose or settle — that is for their counsel. It cannot file, oppose or renew a mark on anyone's behalf: say so, and point to the office or counsel. It covers trademarks, plus company-register names and domain registrations when screening a shortlist; not share prices, company financials or other markets. When a result carries `attribution`, keep its text with any company identity you quote (organisation, HQ, PermID). When someone describes a business rather than naming a class, run suggest_classes before screen_mark or check_names, and relay its reasoning and closing caveat. Where check_names is available, use it for several candidate names at once, with the classes suggest_classes returned, and screen_mark for the detail on one name. In its answer, not_checked means a source did not answer and appears_free means a domain registry had no record that day: neither means the name is free. Say what is on file: never call a name clear, free to use or safe, and say their counsel confirms before they rely on one. Present a holder read as evidence, never as a label: do not call anyone a squatter, which is a legal conclusion. Some tools need the user's Antevo account; their client asks them to sign in the first time one is called. run_investigation spends a credit: say so and get their go-ahead before calling it, and never call a tool that spends unless the user asked. More credits are bought on their Antevo desk, not here. Filing counts from filing_landscape are of Antevo's copy of each register: for an office named in `do_not_quote`, a low count means filings not yet ingested, never a quiet market. Relay each deadline's `kind` as it is, and treat `window_unknown` as urgent. When watching a name and the user has not named classes, watch every class. Clear a conflict with dismiss_conflict only when the user says the hit is not a threat. For the register facts on a holder, holder_read and company_file spend no credits.

Tools

16 advertised

screen_mark — Screen a brand name
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Screens one brand name against trademark registers. No account needed. Returns the registered and pending marks closest to the name (up to 25), each with a similarity tier, and the registers those marks are filed in. EU marks come from EUIPO's search; the other registers are read from Antevo's copy, refreshed from each office, so a filing from the last few days can be missing. It is a screen, not clearance.

screen_mark input schema
{
  "type": "object",
  "title": "screen_markArguments",
  "required": [
    "mark"
  ],
  "properties": {
    "mark": {
      "type": "string",
      "title": "Mark"
    }
  }
}
screen_mark annotations
{
  "title": "Screen a brand name",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_names — Screen a shortlist of names
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Screens a shortlist of up to 15 candidate names in one call: the trademarks on file near each name, the companies registered under it, and whether its domains are registered. Ranks them fewest conflicts first: by how close the nearest mark is, then by companies registered under the name and domains taken, then by how many near marks there are. No account needed. Optional `classes` (Nice class numbers) make marks filed only in unrelated classes weigh less; without them, a mark in any class counts. The Swiss company register and the .ch and .com domains are always checked; `countries` ("UK", "SG") adds those company registers, and .sg for Singapore. Returns, for each name, a trademark verdict on what is on file (none_found, similar, close or identical), how many near marks were found, where they are filed and the closest three; per country, the companies registered under the same or a similar name (name and legal form only); and whether each domain is registered or appears unregistered. A source that did not answer says not_checked, never that nothing is on file, and names whose trademark screen did not finish are listed under not_checked. none_found means none were found, not that the name is free to use, and an unregistered domain can be taken at any time: it is a screen, not clearance, and a filing from the last few days can be missing.

check_names input schema
{
  "type": "object",
  "title": "check_namesArguments",
  "required": [
    "names"
  ],
  "properties": {
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Names"
    },
    "classes": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Classes",
      "default": null
    },
    "countries": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Countries",
      "default": null
    }
  }
}
check_names annotations
{
  "title": "Screen a shortlist of names",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
suggest_classes — Which classes to file in
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Which Nice classes a business like this files in. No account needed, and no register is searched: it maps the description onto the Nice classification. The question people cannot answer for themselves: not "is my name taken" but "taken in WHAT". Nice has 45 classes and the numbering is opaque — software you download is class 9, software you log into is class 42, and selling other people's goods is class 35 whatever the goods are. Filing in one and not the other is the most expensive routine mistake in the process. Takes a description of the business and returns the classes similar businesses file in, with the reasoning for each and a closing caveat: this reports how similar businesses file, not what this one should file.

suggest_classes input schema
{
  "type": "object",
  "title": "suggest_classesArguments",
  "required": [
    "description"
  ],
  "properties": {
    "description": {
      "type": "string",
      "title": "Description"
    }
  }
}
suggest_classes annotations
{
  "title": "Which classes to file in",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
holder_read — Read a trademark holder
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Who a holder is and how they file — the read on an adversary. Free. Computed from their whole register book: how much of it they let lapse, whether their marks cluster where they trade or spray across unrelated classes, and the leverage that gives counsel. Returns the evidence behind each finding; it draws no legal conclusions about the holder. Corporate identity from PermID comes with `attribution`, its CC BY 4.0 credit.

holder_read input schema
{
  "type": "object",
  "title": "holder_readArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    }
  }
}
holder_read annotations
{
  "title": "Read a trademark holder",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
opposition_window — Opposition window for an office
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

How long you have to oppose a filing in a given trademark office, and from when. Twenty registers, each with the provision the window comes from. The trap this answers: most offices run opposition BEFORE registration, from publication of the application, but a minority — Switzerland, Germany, Japan, Sweden — register the mark first and run the window from publication of the REGISTRATION. Applying one office's rule to another invents a deadline that never existed. Accepts a country name, an office name or a two-letter code ('japan', 'JP', 'EU').

opposition_window input schema
{
  "type": "object",
  "title": "opposition_windowArguments",
  "required": [
    "office"
  ],
  "properties": {
    "office": {
      "type": "string",
      "title": "Office"
    }
  }
}
opposition_window annotations
{
  "title": "Opposition window for an office",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
filing_landscape — How busy a class is
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Filing activity in a Nice class — volume by month and the busiest filers. Signed-in. Answers "how crowded is my space" and "who keeps filing near me". Pass a Nice class (9, 42, 36…), optionally an office code ('EM', 'US', 'GB', 'CH'), and a window in months. EVERY COUNT IS OF OUR MIRROR, NOT OF THE OFFICE, and the two differ by a lot for some offices right now. Each office carries its own `coverage`, and any office whose mirror is behind is named in `do_not_quote`: for those offices a low count means filings not yet ingested, not filings that were never made.

filing_landscape input schema
{
  "type": "object",
  "title": "filing_landscapeArguments",
  "required": [
    "nice_class"
  ],
  "properties": {
    "months": {
      "type": "integer",
      "title": "Months",
      "default": 12
    },
    "nice_class": {
      "type": "integer",
      "title": "Nice Class"
    },
    "jurisdiction": {
      "type": "string",
      "title": "Jurisdiction",
      "default": ""
    }
  }
}
filing_landscape annotations
{
  "title": "How busy a class is",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
my_conflicts — Conflicts on my watched names
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Everything currently near the names this user watches.

my_conflicts input schema
{
  "type": "object",
  "title": "my_conflictsArguments",
  "properties": {}
}
my_conflicts annotations
{
  "title": "Conflicts on my watched names",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
my_deadlines — My upcoming deadlines
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Renewals and closing opposition windows for this user. Each deadline has a `kind`: `opposition` carries a real date; `window_pending` means a filing is still in examination and nothing is running yet; `window_unknown` means a live threat whose deadline cannot be dated; `window_closed` means opposition is gone and the route is cancellation.

my_deadlines input schema
{
  "type": "object",
  "title": "my_deadlinesArguments",
  "properties": {}
}
my_deadlines annotations
{
  "title": "My upcoming deadlines",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
my_watches — Names I am watching
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

The names this user is watching.

my_watches input schema
{
  "type": "object",
  "title": "my_watchesArguments",
  "properties": {}
}
my_watches annotations
{
  "title": "Names I am watching",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
company_file — A holder's whole book
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

A holder's WHOLE book across every office. Founder and up. Corporate identity from PermID (organisation, HQ, PermID) comes with `company.attribution`, its CC BY 4.0 credit.

company_file input schema
{
  "type": "object",
  "title": "company_fileArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    }
  }
}
company_file annotations
{
  "title": "A holder's whole book",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
follow_filer — Follow a filer
Advertised by the server during the last successful anonymous check.
Open-world

Follow an adversary — every filing they make, anywhere. Studio and up. Different from watching a name: this catches what they do NEXT, which is usually a different name in a class the user doesn't hold.

follow_filer input schema
{
  "type": "object",
  "title": "follow_filerArguments",
  "required": [
    "filer"
  ],
  "properties": {
    "filer": {
      "type": "string",
      "title": "Filer"
    }
  }
}
follow_filer annotations
{
  "title": "Follow a filer",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
watch_mark — Watch a name
Advertised by the server during the last successful anonymous check.

Start watching a brand name: new filings near it show up as conflicts. Optionally takes Nice classes as a comma-separated list ('9,42'); blank watches every class.

watch_mark input schema
{
  "type": "object",
  "title": "watch_markArguments",
  "required": [
    "mark"
  ],
  "properties": {
    "mark": {
      "type": "string",
      "title": "Mark"
    },
    "classes": {
      "type": "string",
      "title": "Classes",
      "default": ""
    }
  }
}
watch_mark annotations
{
  "title": "Watch a name",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
dismiss_conflict — Clear a conflict as not a threat
Advertised by the server during the last successful anonymous check.

Clear one hit as not-a-threat. Reversible — it moves to the Cleared list. Takes `jurisdiction` and `app_no` exactly as they appear on a conflict in the user's conflict list. A cleared hit, such as an unrelated business or the user's own filing, stops being surfaced.

dismiss_conflict input schema
{
  "type": "object",
  "title": "dismiss_conflictArguments",
  "required": [
    "jurisdiction",
    "app_no"
  ],
  "properties": {
    "app_no": {
      "type": "string",
      "title": "App No"
    },
    "applicant": {
      "type": "string",
      "title": "Applicant",
      "default": ""
    },
    "mark_text": {
      "type": "string",
      "title": "Mark Text",
      "default": ""
    },
    "jurisdiction": {
      "type": "string",
      "title": "Jurisdiction"
    }
  }
}
dismiss_conflict annotations
{
  "title": "Clear a conflict as not a threat",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
filer_activity — Activity from filers I follow
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

What the filers this user follows have filed lately. Studio and up.

filer_activity input schema
{
  "type": "object",
  "title": "filer_activityArguments",
  "properties": {}
}
filer_activity annotations
{
  "title": "Activity from filers I follow",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
run_investigation — Investigate a holder (spends a credit)
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Research a trademark holder on the open web and return a cited dossier: who they really are (an operating company, a shell, a known squatter), their notable trademark activity or disputes, and any red flags. Signed-in. Spends one credit — included credits first, then purchased ones. A failed run costs nothing, and calling again for the same holder within 30 minutes returns that dossier at no charge (`reused: true`). The dossier is AI-written from cited web sources: research to check, not register fact.

run_investigation input schema
{
  "type": "object",
  "title": "run_investigationArguments",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    }
  }
}
run_investigation annotations
{
  "title": "Investigate a holder (spends a credit)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
get_credit_balance — My credit balance
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

How many credits this user can spend and what each paid tool costs, in credits. Free to call. `remaining` is what can be spent now: `monthly_left` (included with their plan, resets each month) plus `topup_balance` (bought, never expires). `prices` is credits per call, by tool.

get_credit_balance input schema
{
  "type": "object",
  "title": "get_credit_balanceArguments",
  "properties": {}
}
get_credit_balance annotations
{
  "title": "My credit balance",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1150 ms
95th percentile latency
1150 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1150 ms · metadata changed · 16 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http antevo-trademark-mcp https://trademark.antevo.ch/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add antevo-trademark-mcp --url https://trademark.antevo.ch/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable antevo-trademark-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "antevo-trademark-mcp": {
      "url": "https://trademark.antevo.ch/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "antevo-trademark-mcp": {
      "type": "streamableHttp",
      "url": "https://trademark.antevo.ch/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start antevo-trademark-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "antevo-trademark-mcp": {
      "type": "http",
      "url": "https://trademark.antevo.ch/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http antevo-trademark-mcp https://trademark.antevo.ch/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://trademark.antevo.ch/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "antevo-trademark-mcp": {
      "serverUrl": "https://trademark.antevo.ch/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Antevo Trademark MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Antevo Trademark MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing