@radsoft/markbase-mcp 2026.11.1 → 2026.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/index.js +21 -0
- package/package.json +9 -5
- package/server.json +31 -0
package/README.md
CHANGED
|
@@ -40,12 +40,18 @@ claude mcp add markbase --env MARKBASE_API_KEY=mb_your_key -- npx -y @radsoft/ma
|
|
|
40
40
|
| Tool | What it does |
|
|
41
41
|
|------|--------------|
|
|
42
42
|
| `check_trademark_availability` | Screen a proposed name against the register, ranked by similarity with a risk level |
|
|
43
|
+
| `screen_trademark_names` | Screen 1–25 names in input order, with a shared optional class; Launch or Scale required |
|
|
43
44
|
| `search_trademarks` | Typo-tolerant search across 14M+ marks, filterable by class and status |
|
|
44
45
|
| `get_trademark` | Full record for one mark by serial number |
|
|
45
46
|
| `get_trademark_timeline` | Prosecution history — filing, publication, office actions, registration |
|
|
46
47
|
| `search_by_owner` | Every mark held by a company or person |
|
|
47
48
|
| `list_trademark_classes` | All 45 Nice classes, so the model can pick the right one before screening |
|
|
48
49
|
|
|
50
|
+
Bulk screening counts every submitted name toward monthly and per-minute limits,
|
|
51
|
+
including duplicates. Invalid or rejected batches do not consume monthly quota.
|
|
52
|
+
Accepted batches consume their full name count even if a search fails; the tool
|
|
53
|
+
does not retry automatically.
|
|
54
|
+
|
|
49
55
|
## Why the class matters
|
|
50
56
|
|
|
51
57
|
Trademark rights are scoped to goods and services. DELTA coexists as an airline, a
|
|
@@ -70,6 +76,23 @@ a trademark attorney for any name a user intends to actually adopt.
|
|
|
70
76
|
| `MARKBASE_API_KEY` | yes | — |
|
|
71
77
|
| `MARKBASE_API_URL` | no | `https://api.markbase.co` |
|
|
72
78
|
|
|
79
|
+
## Registry publishing
|
|
80
|
+
|
|
81
|
+
The official MCP registry name is `io.github.Rad-Soft/markbase`. Its metadata is in
|
|
82
|
+
`server.json`; the npm package declares the same name in `mcpName` to prove package
|
|
83
|
+
ownership. The release workflow keeps both versions aligned and publishes the
|
|
84
|
+
registry entry after npm and the release tag succeed. Both publishers use GitHub
|
|
85
|
+
OIDC, so no registry token needs to be configured.
|
|
86
|
+
|
|
87
|
+
After changing `package.json`'s version, run `bun run registry:sync`. The build
|
|
88
|
+
checks that the npm and registry names and versions agree. Validate the complete
|
|
89
|
+
manifest with the official CLI: `mcp-publisher validate server.json`.
|
|
90
|
+
|
|
91
|
+
If registry publishing fails after npm succeeds, manually run **Publish MCP** on
|
|
92
|
+
`main` with `registry_version` set to that published version. It checks out the
|
|
93
|
+
existing `mcp-v` tag and retries only the registry job. Confirm the listing at the
|
|
94
|
+
[official registry API](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.Rad-Soft%2Fmarkbase).
|
|
95
|
+
|
|
73
96
|
## License
|
|
74
97
|
|
|
75
98
|
MIT — a product of [Rad Soft](https://radsoftinc.com).
|
package/dist/index.js
CHANGED
|
@@ -87,6 +87,27 @@ server.registerTool("check_trademark_availability", {
|
|
|
87
87
|
return fail(err);
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
|
+
server.registerTool("screen_trademark_names", {
|
|
91
|
+
title: "Screen a batch of proposed names",
|
|
92
|
+
description: "Screen 1–25 proposed names against the US register using a Launch or Scale key. Each submitted name consumes one monthly request, including duplicate names. An admitted batch consumes quota even if a search fails; do not retry automatically. Results keep input order. This is preliminary screening, not legal advice or a registration guarantee.",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
names: z.array(z.string().trim().min(1).max(200)).min(1).max(25).describe("Proposed names in the order to screen"),
|
|
95
|
+
trademark_class: z.string().regex(/^\d{1,3}$/).refine((value) => Number(value) >= 1 && Number(value) <= 45).optional()
|
|
96
|
+
.describe("Shared Nice class 1–45 for the goods or services"),
|
|
97
|
+
limit: z.number().int().min(1).max(50).optional().describe("Maximum matches per name; default 20"),
|
|
98
|
+
},
|
|
99
|
+
}, async ({ names, trademark_class, limit }) => {
|
|
100
|
+
try {
|
|
101
|
+
const data = await request("/clearance/batch", {
|
|
102
|
+
method: "POST",
|
|
103
|
+
body: JSON.stringify({ marks: names, class: trademark_class ? padClass(trademark_class) : undefined, limit }),
|
|
104
|
+
});
|
|
105
|
+
return ok({ ...data, disclaimer: "Screening signal only. Consult a trademark attorney before adopting a name." });
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return fail(error);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
90
111
|
server.registerTool("get_trademark", {
|
|
91
112
|
title: "Get a trademark by serial number",
|
|
92
113
|
description: "Fetch the complete record for one US trademark by its USPTO serial number, including owner, status, classes, and goods/services.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radsoft/markbase-mcp",
|
|
3
|
-
"version": "2026.11.
|
|
3
|
+
"version": "2026.11.3",
|
|
4
4
|
"description": "MCP server for the Markbase USPTO trademark API — search, screen, and look up US trademarks from any MCP client.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"markbase-mcp": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist"
|
|
11
|
+
"dist",
|
|
12
|
+
"server.json"
|
|
12
13
|
],
|
|
13
14
|
"keywords": [
|
|
14
15
|
"mcp",
|
|
@@ -26,9 +27,11 @@
|
|
|
26
27
|
"directory": "mcp"
|
|
27
28
|
},
|
|
28
29
|
"scripts": {
|
|
29
|
-
"build": "tsc",
|
|
30
|
+
"build": "bun run registry:check && tsc",
|
|
30
31
|
"dev": "tsc --watch",
|
|
31
|
-
"prepublishOnly": "bun run build"
|
|
32
|
+
"prepublishOnly": "bun run build",
|
|
33
|
+
"registry:check": "node scripts/registry-metadata.mjs",
|
|
34
|
+
"registry:sync": "node scripts/registry-metadata.mjs --write"
|
|
32
35
|
},
|
|
33
36
|
"dependencies": {
|
|
34
37
|
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
@@ -40,5 +43,6 @@
|
|
|
40
43
|
},
|
|
41
44
|
"publishConfig": {
|
|
42
45
|
"access": "public"
|
|
43
|
-
}
|
|
46
|
+
},
|
|
47
|
+
"mcpName": "io.github.Rad-Soft/markbase"
|
|
44
48
|
}
|
package/server.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.Rad-Soft/markbase",
|
|
4
|
+
"title": "Markbase Trademark Search",
|
|
5
|
+
"description": "Search US trademarks, screen proposed names for conflicts, and look up USPTO registration records.",
|
|
6
|
+
"websiteUrl": "https://markbase.co",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/Rad-Soft/marked-api",
|
|
9
|
+
"source": "github",
|
|
10
|
+
"subfolder": "mcp"
|
|
11
|
+
},
|
|
12
|
+
"version": "2026.11.3",
|
|
13
|
+
"packages": [
|
|
14
|
+
{
|
|
15
|
+
"registryType": "npm",
|
|
16
|
+
"identifier": "@radsoft/markbase-mcp",
|
|
17
|
+
"version": "2026.11.3",
|
|
18
|
+
"transport": {
|
|
19
|
+
"type": "stdio"
|
|
20
|
+
},
|
|
21
|
+
"environmentVariables": [
|
|
22
|
+
{
|
|
23
|
+
"name": "MARKBASE_API_KEY",
|
|
24
|
+
"description": "Free Markbase API key from https://markbase.co/login (5,000 requests per month).",
|
|
25
|
+
"isRequired": true,
|
|
26
|
+
"isSecret": true
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|