Koskamo

Pareil au même MCP

This MCP server allows AI agents to check if a proposed name resembles existing French trademarks by spelling and sound. It provides a risk signal by searching the INPI database for identical, phonetically similar, or visually similar marks, and helps identify relevant Nice classification classes for the user's activities.

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.

Pareil au même MCP logo, by Pareil au mêmeVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Pareil au même
MCP endpoint (Streamable HTTP)
https://pareil-au-meme.fr/mcp
Vendor documentation

What you can do with it

  • Check if a name is already registered as a trademark in France
  • Find similar trademarks by sound or spelling
  • Identify relevant Nice classification classes for products

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
pareil-au-meme 1.1.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

Pareil au même compare un nom aux marques françaises en vigueur, à l'écrit et à l'oral, d'après les données publiques de l'Institut national de la propriété industrielle (INPI). - Quand la personne décrit son activité, appelez list_nice_classes pour choisir les classes de ce qu'elle vend vraiment, puis passez leurs numéros à search_trademarks. Ces libellés sont simplifiés : ne les citez pas comme les intitulés officiels. - Avec chaque réponse de search_trademarks, donnez la date des données et la phrase de limites (champ limits) : marques françaises seulement, sans les logos, et ce n'est pas un avis juridique. - Une recherche sans marque proche ne prouve pas qu'un nom peut être déposé ou utilisé. Pour un cas précis, orientez la personne vers un conseil en propriété industrielle ou un avocat. - Présentez chaque lien inpiUrl tel quel, en entier. - Ce serveur lit et n'écrit jamais : il ne garde ni le nom ni les classes reçus. Pareil au même compares a name with the French trademarks in force, in writing and in sound, from the public data of INPI, the French patent and trademark office. - When the person describes their business, call list_nice_classes to choose the classes of what they actually sell, then pass their numbers to search_trademarks. The labels are simplified: do not quote them as the official headings. - With every answer of search_trademarks, give the data's date and the limits sentence (field limits): French trademarks only, no logos, and this is not legal advice. - A search with no close trademark does not prove that a name can be filed or used. For a specific case, point the person to a trademark attorney or a lawyer. - Present each inpiUrl link as is, in full. - This server reads and never writes: it keeps neither the name nor the classes it receives.

Tools

2 advertised

search_trademarks — Rechercher un nom parmi les marques françaises
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare un nom aux marques françaises en vigueur, à l'écrit et à l'oral, d'après les données publiques de l'INPI, et rend les marques proches par niveau de similarité, du plus au moins grave : identique, se prononce pareil, ressemble, contient le nom, partage un élément. Des classes de Nice facultatives (list_nice_classes les donne) font passer en tête les marques de ces classes, sans écarter les autres. Chaque niveau liste au plus 25 marques, avec leur total. La réponse donne la date des données et une phrase sur les limites de la recherche : ce n'est pas un avis juridique.

search_trademarks input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "nom"
  ],
  "properties": {
    "nom": {
      "type": "string",
      "maxLength": 100,
      "description": "Le nom à chercher parmi les marques, tel que la personne l'écrit, avec au moins une lettre ou un chiffre."
    },
    "classes": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 45,
        "minimum": 1
      },
      "description": "Classes de Nice de l'activité (1 à 45, données par list_nice_classes), facultatives : leurs marques passent en tête, les autres restent listées."
    }
  }
}
search_trademarks output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "levels",
    "dataDates",
    "partial",
    "limits"
  ],
  "properties": {
    "levels": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "level",
          "title",
          "explanation",
          "total",
          "truncated",
          "trademarks"
        ],
        "properties": {
          "level": {
            "enum": [
              "identique",
              "sonnePareil",
              "ressemble",
              "contient",
              "partageElement"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Nombre de marques trouvées à ce niveau ; incomplet pour ressemble, contient et partageElement quand partial est vrai."
          },
          "truncated": {
            "type": "boolean",
            "description": "La liste ne montre qu'une partie des marques du niveau."
          },
          "trademarks": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "number",
                "name",
                "status",
                "classes",
                "filingDate",
                "inpiUrl",
                "sameClass"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Nom de la marque."
                },
                "number": {
                  "type": "string",
                  "description": "Numéro de la marque à l'INPI."
                },
                "status": {
                  "type": "string",
                  "description": "Statut de la marque à l'INPI."
                },
                "classes": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991
                  },
                  "description": "Classes de Nice de la marque."
                },
                "inpiUrl": {
                  "type": "string",
                  "description": "Fiche de la marque sur data.inpi.fr."
                },
                "sameClass": {
                  "type": "boolean",
                  "description": "La marque partage au moins une des classes demandées."
                },
                "filingDate": {
                  "type": "string",
                  "description": "Date de dépôt, AAAA-MM-JJ, ou vide si inconnue."
                }
              },
              "additionalProperties": false
            }
          },
          "explanation": {
            "type": "string"
          },
          "inYourClasses": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Parmi elles, les marques d'au moins une des classes demandées ; absent sans classes."
          }
        },
        "additionalProperties": false
      },
      "description": "Les cinq niveaux de similarité, du plus au moins grave."
    },
    "limits": {
      "type": "string",
      "description": "Les limites de la recherche, en une phrase fixe."
    },
    "partial": {
      "type": "boolean",
      "description": "Trop de marques ressemblent au nom : les niveaux ressemble, contient et partageElement sont incomplets."
    },
    "dataDates": {
      "type": "object",
      "required": [
        "sourceDate"
      ],
      "properties": {
        "sourceDate": {
          "type": "string",
          "description": "Dernier jour de dépôt couvert par les données, AAAA-MM-JJ."
        },
        "inpiUpdatedOn": {
          "type": "string",
          "description": "Date de la mise à jour hebdomadaire de l'INPI lue, AAAA-MM-JJ."
        }
      },
      "description": "Date des données de marques.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
search_trademarks annotations
{
  "title": "Rechercher un nom parmi les marques françaises",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_nice_classes — Lister les classes de Nice
Advertised by the server during the last successful anonymous check.
Advertised read-only

Donne les 45 classes de Nice (la classification des produits et services des marques), chacune avec un libellé court. search_trademarks prend ces numéros de classes et fait passer en tête les marques de ces classes.

list_nice_classes input schema
{
  "type": "object",
  "properties": {}
}
list_nice_classes output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "classes",
    "note"
  ],
  "properties": {
    "note": {
      "type": "string",
      "description": "Une précision sur ces libellés et sur la portée des classes d'une marque."
    },
    "classes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "number",
          "label"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "Libellé court de la classe."
          },
          "number": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Numéro de la classe, de 1 à 45."
          }
        },
        "additionalProperties": false
      },
      "description": "Les 45 classes de Nice, dans l'ordre."
    }
  },
  "additionalProperties": false
}
list_nice_classes annotations
{
  "title": "Lister les classes de Nice",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
736 ms
95th percentile latency
736 ms

Maintenance history

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

  • · probe · passed · 736 ms · metadata changed · 2 tool(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 pareil-au-me-me-mcp https://pareil-au-meme.fr/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 pareil-au-me-me-mcp --url https://pareil-au-meme.fr/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable pareil-au-me-me-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "pareil-au-me-me-mcp": {
      "url": "https://pareil-au-meme.fr/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "pareil-au-me-me-mcp": {
      "type": "streamableHttp",
      "url": "https://pareil-au-meme.fr/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start pareil-au-me-me-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "pareil-au-me-me-mcp": {
      "type": "http",
      "url": "https://pareil-au-meme.fr/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 pareil-au-me-me-mcp https://pareil-au-meme.fr/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "pareil-au-me-me-mcp": {
      "url": "https://pareil-au-meme.fr/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": {
    "pareil-au-me-me-mcp": {
      "serverUrl": "https://pareil-au-meme.fr/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Pareil au même 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 Pareil au même 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