Antevo Trademark

Is that name taken? Trademark, company and domain checks, and opposition windows. No account.

Should I use this

Quality & Safety

B
Description quality
91%
Schema completeness
64%
Naming quality
84%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'my_conflicts' description lacks action verbin my_conflicts
  • LOWTool 'my_watches' description lacks action verbin my_watches
  • LOWTool 'company_file' description lacks action verbin company_file
  • LOWTool 'filer_activity' description lacks action verbin filer_activity

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,881Tokens (tool definitions)
~452 BTypical response size
Significant attention impact (2.25% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "trademark": {
      "url": "https://trademark.antevo.ch/mcp"
    }
  }
}

Remote endpoints

https://trademark.antevo.ch/mcpstreamable-http

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢screen_mark(mark)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "mark": {
      "title": "Mark",
      "type": "string"
    }
  },
  "required": [
    "mark"
  ],
  "title": "screen_markArguments"
}
🟢check_names(names, classes, countries)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "names": {
      "items": {
        "type": "string"
      },
      "title": "Names",
      "type": "array"
    },
    "classes": {
      "anyOf": [
        {
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Classes"
    },
    "countries": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Countries"
    }
  },
  "required": [
    "names"
  ],
  "title": "check_namesArguments"
}
🟢suggest_classes(description)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "description": {
      "title": "Description",
      "type": "string"
    }
  },
  "required": [
    "description"
  ],
  "title": "suggest_classesArguments"
}
🟢holder_read(name)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "holder_readArguments"
}
🟢opposition_window(office)

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').

Input Schema

{
  "type": "object",
  "properties": {
    "office": {
      "title": "Office",
      "type": "string"
    }
  },
  "required": [
    "office"
  ],
  "title": "opposition_windowArguments"
}
🟢filing_landscape(nice_class, jurisdiction, months)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "nice_class": {
      "title": "Nice Class",
      "type": "integer"
    },
    "jurisdiction": {
      "default": "",
      "title": "Jurisdiction",
      "type": "string"
    },
    "months": {
      "default": 12,
      "title": "Months",
      "type": "integer"
    }
  },
  "required": [
    "nice_class"
  ],
  "title": "filing_landscapeArguments"
}
🟢my_conflicts

Everything currently near the names this user watches.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "my_conflictsArguments"
}
🟢my_deadlines

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "my_deadlinesArguments"
}
🟢my_watches

The names this user is watching.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "my_watchesArguments"
}
🟢company_file(name)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "company_fileArguments"
}
⚪follow_filer(filer)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "filer": {
      "title": "Filer",
      "type": "string"
    }
  },
  "required": [
    "filer"
  ],
  "title": "follow_filerArguments"
}
🟢watch_mark(mark, classes)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "mark": {
      "title": "Mark",
      "type": "string"
    },
    "classes": {
      "default": "",
      "title": "Classes",
      "type": "string"
    }
  },
  "required": [
    "mark"
  ],
  "title": "watch_markArguments"
}
🔴dismiss_conflict(jurisdiction, app_no, mark_text, applicant)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "title": "Jurisdiction",
      "type": "string"
    },
    "app_no": {
      "title": "App No",
      "type": "string"
    },
    "mark_text": {
      "default": "",
      "title": "Mark Text",
      "type": "string"
    },
    "applicant": {
      "default": "",
      "title": "Applicant",
      "type": "string"
    }
  },
  "required": [
    "jurisdiction",
    "app_no"
  ],
  "title": "dismiss_conflictArguments"
}
🟢filer_activity

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

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "filer_activityArguments"
}
🔴run_investigation(name)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "run_investigationArguments"
}
🟢get_credit_balance

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_credit_balanceArguments"
}

Recommended Prompts

retrieve_data
Get details about [item] from Antevo Trademark
Expected tools: holder_read
fetch_info
Fetch [information type] using Antevo Trademark
Expected tools: holder_read

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools
verifiedversion not recorded15 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools