Design Registration Research
Design Similarity Search
Find similar design-registration candidates from a product image.
MCP tool name
nexscope_design_similarity_searchMCP endpoint
https://api.nexscope.ai/mcpJSON-RPC method
tools/callAuthentication
Use OAuth 2.1 Authorization Code with PKCE and the mcp:tools scope. API keys remain supported as a compatibility option.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication fails, ask the user to open API Access and copy a valid key.
Call this MCP tool
Initialize an MCP 2025-11-25 Streamable HTTP session at https://api.nexscope.ai/mcp, then use tools/call.
{
"jsonrpc": "2.0",
"id": "design-similarity-search-1",
"method": "tools/call",
"params": {
"name": "nexscope_design_similarity_search",
"arguments": {
"imageUrl": "https://example.com/product.png",
"title": "Bottle",
"topK": 20
}
}
}MCP 2025-11-25 · Streamable HTTPProgress is delivered on the original POST SSE response. GET SSE carries notifications; reconnecting must query existing asynchronous work rather than submit again.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
imageBase64 | string | optional | Pure Base64 image bytes, 16–12582912 characters; omit imageUrl. Pattern: ^[A-Za-z0-9+/]+={0,2}$ Minimum length: 16 Maximum length: 12582912 |
imageUrl | string | optional | Public HTTP(S) image URL, 8–4096 characters; exactly one image source. Format: uri Pattern: ^https?:// Minimum length: 8 Maximum length: 4096 |
jurisdictionCodes | array | optional | Up to 32 distinct source codes of 2–8 letters; intersects regions when both are supplied. Maximum items: 32 |
jurisdictionCodes[] | string | required | Up to 32 distinct source codes of 2–8 letters; intersects regions when both are supplied. Pattern: ^[A-Za-z]{2,8}$ |
locarnoClasses | array | optional | Up to 64 distinct NN-NN Locarno classes. Maximum items: 64 |
locarnoClasses[] | string | required | Up to 64 distinct NN-NN Locarno classes. Pattern: ^[0-9]{2}-[0-9]{2}$ |
patentStatus | array | optional | One or two distinct integers: 0 inactive, 1 active; omit for no status preference. Minimum items: 1 Maximum items: 2 |
patentStatus[] | integer | required | One or two distinct integers: 0 inactive, 1 active; omit for no status preference. Allowed: 0, 1 |
regions | array | optional | Up to 64 distinct two-letter region codes, e.g. US or EM; use EM for EU. Maximum items: 64 |
regions[] | string | required | Up to 64 distinct two-letter region codes, e.g. US or EM; use EM for EU. Pattern: ^[A-Za-z]{2}$ |
title | string | optional | Optional image context, 1–4096 trimmed characters; not a standalone text query. Minimum length: 1 Maximum length: 4096 |
topK | integer | optional | Candidate limit, 1–200; default 20. Default: 20 Minimum: 1 Maximum: 200 |
topLoc | array | optional | Up to 32 distinct two-digit Locarno prefixes; preserve leading zeros. Maximum items: 32 |
topLoc[] | string | required | Up to 32 distinct two-digit Locarno prefixes; preserve leading zeros. Pattern: ^[0-9]{2}$ |
One of option 1 — requires imageUrl
One of option 2 — requires imageBase64
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 means accepted or successful; nonzero is a platform error. |
cost | string | required | Elapsed milliseconds, never credits; -1 outside web requests. |
data | any | required | Data value used by this API operation. |
msg | string | null | required | Msg value used by this API operation. |
time | string | required | Server local time: yyyy-MM-dd HH:mm:ss. |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds. |
Any of option 1 — requires data
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.costTime | any | optional | Execution time reported by the upstream provider. |
data.costToken | any | optional | Token cost reported by the upstream provider. |
data.data | object | required | Source envelope retained within the gateway payload. Example: {} |
data.data.code | string | required | Source status; successful retrieval is OK. Example: OK |
data.data.data | object | required | Candidate retrieval result; retain order, coverage and warnings. Example: {} |
data.data.data.candidates | array | required | Design-registration candidates; empty does not establish freedom to operate. Example: [{"design_registration_id":"example-design-id","holder_names":["Example holder"],"image_available":true,"locarno_classes":["09-01"],"primary_identifier":"example-registration","similarity":85.97,"simple_legal_status":"inactive","title_en":"Bottle"}] |
data.data.data.coverage | any | optional | Source coverage metadata; ratios may exceed one and are not guaranteed coverage percentages. |
data.data.data.warnings | any | optional | Source limitations and warnings. |
data.data.request_id | any | optional | Source request identifier. |
data.dataSnapshotMonth | any | optional | Data snapshot month returned by the upstream provider. |
data.page | any | optional | Current page returned by the upstream provider. |
data.pageItemCount | any | optional | Item count on the current page returned by the upstream provider. |
data.pageSize | any | optional | Page size returned by the upstream provider. |
data.sourceTool | any | optional | Provider-specific source tool name. |
data.sourceType | any | optional | Provider-specific source platform type. |
data.title | any | optional | Provider-specific response title. |
data.totalPage | any | optional | Total page count returned by the upstream provider. |
data.type | any | optional | Provider-specific render or payload type. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.costTime | integer | optional | Execution time reported by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.costTime | null | optional | Execution time reported by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.costToken | integer | optional | Token cost reported by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.costToken | null | optional | Token cost reported by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.data.data.coverage | object | optional | Source coverage metadata; ratios may exceed one and are not guaranteed coverage percentages. Example: {} |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.data.data.coverage | null | optional | Source coverage metadata; ratios may exceed one and are not guaranteed coverage percentages. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.data.data.warnings | array | optional | Source limitations and warnings. Example: ["metadata_incomplete"] |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.data.data.warnings | null | optional | Source limitations and warnings. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.data.request_id | string | optional | Source request identifier. Example: example-request |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.data.request_id | null | optional | Source request identifier. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.dataSnapshotMonth | string | optional | Data snapshot month returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.dataSnapshotMonth | null | optional | Data snapshot month returned by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.page | integer | optional | Current page returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.page | null | optional | Current page returned by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.pageItemCount | integer | optional | Item count on the current page returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.pageItemCount | null | optional | Item count on the current page returned by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.pageSize | integer | optional | Page size returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.pageSize | null | optional | Page size returned by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.sourceTool | string | optional | Provider-specific source tool name. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.sourceTool | null | optional | Provider-specific source tool name. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.sourceType | string | optional | Provider-specific source platform type. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.sourceType | null | optional | Provider-specific source platform type. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.title | string | optional | Provider-specific response title. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.title | null | optional | Provider-specific response title. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.totalPage | integer | optional | Total page count returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.totalPage | null | optional | Total page count returned by the upstream provider. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.type | string | optional | Provider-specific render or payload type. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.type | null | optional | Provider-specific render or payload type. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data | null | required | Data value used by this API operation. |
Examples
Example arguments
{
"imageUrl": "https://example.com/product.png",
"title": "Bottle",
"topK": 20
}Example structuredContent
{
"code": 0,
"cost": "-1",
"data": {
"data": {
"code": "OK",
"data": {
"candidates": [
{
"design_registration_id": "example-design-id",
"holder_names": [
"Example holder"
],
"image_available": true,
"locarno_classes": [
"09-01"
],
"primary_identifier": "example-registration",
"similarity": 85.97,
"simple_legal_status": "inactive",
"title_en": "Bottle"
}
],
"coverage": {
"metadata_unknown": {
"legal_status": 1
}
},
"warnings": [
"metadata_incomplete"
]
},
"request_id": "example-request"
}
},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": null,
"ts": "0"
}