
Is that name taken? Trademark, company and domain checks, and opposition windows. No account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Tool list last changed Oct 25, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| names* | array | |
| classes | any | |
| countries | any |
{
"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
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"title": "company_fileArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| app_no* | string | |
| applicant | string | |
| mark_text | string | |
| jurisdiction* | string |
{
"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"
}
}
}What the filers this user follows have filed lately. Studio and up.
No arguments.
{
"type": "object",
"title": "filer_activityArguments",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| months | integer | |
| nice_class* | integer | |
| jurisdiction | string |
{
"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": ""
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| filer* | string |
{
"type": "object",
"title": "follow_filerArguments",
"required": [
"filer"
],
"properties": {
"filer": {
"type": "string",
"title": "Filer"
}
}
}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.
No arguments.
{
"type": "object",
"title": "get_credit_balanceArguments",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"title": "holder_readArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
}
}
}Everything currently near the names this user watches.
No arguments.
{
"type": "object",
"title": "my_conflictsArguments",
"properties": {}
}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.
No arguments.
{
"type": "object",
"title": "my_deadlinesArguments",
"properties": {}
}The names this user is watching.
No arguments.
{
"type": "object",
"title": "my_watchesArguments",
"properties": {}
}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').
| Argument | Type | Description |
|---|---|---|
| office* | string |
{
"type": "object",
"title": "opposition_windowArguments",
"required": [
"office"
],
"properties": {
"office": {
"type": "string",
"title": "Office"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"title": "run_investigationArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| mark* | string |
{
"type": "object",
"title": "screen_markArguments",
"required": [
"mark"
],
"properties": {
"mark": {
"type": "string",
"title": "Mark"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| description* | string |
{
"type": "object",
"title": "suggest_classesArguments",
"required": [
"description"
],
"properties": {
"description": {
"type": "string",
"title": "Description"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| mark* | string | |
| classes | string |
{
"type": "object",
"title": "watch_markArguments",
"required": [
"mark"
],
"properties": {
"mark": {
"type": "string",
"title": "Mark"
},
"classes": {
"type": "string",
"title": "Classes",
"default": ""
}
}
}