Skip to main content
Glama
Digilac

simap MCP Server

by Digilac

simap MCP Server

GitHub License NPM Version GitHub Actions Workflow Status NPM Downloads Ask DeepWiki

An MCP (Model Context Protocol) server for interacting with simap.ch, Switzerland's public procurement platform.

Enables Claude and other AI assistants to search and view public tenders in Switzerland.

Developed by Digilac.

Features

Tool

Description

search_tenders

Search tenders with filters (text, dates, types, cantons, CPV)

get_tender_details

Get full details of a specific tender

search_cpv_codes

Search CPV codes (Common Procurement Vocabulary)

browse_cpv_tree

Navigate CPV code hierarchy

list_cantons

List all Swiss cantons

list_institutions

List Swiss public institutions

get_publication_history

Get publication history for a project

search_proc_offices

Search public procurement offices

search_bkp_codes

Search BKP codes (construction)

browse_bkp_tree

Navigate BKP code hierarchy

search_npk_codes

Search NPK codes (standardized positions)

browse_npk_tree

Navigate NPK code hierarchy

search_oag_codes

Search OAG codes (object types)

browse_oag_tree

Navigate OAG code hierarchy

Related MCP server: Taiwan Tender MCP

Prerequisites

  • Node.js ≥ 22 (LTS or newer).

  • An MCP-compatible client (Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Cline, Zed, …).

  • No simap account or API key required — the simap API is public and read-only.

Installation & Configuration

The recommended way is npx — no global install needed. Pick your client below and copy the snippet.

Claude Desktop

Edit the Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Restart Claude Desktop for the change to take effect.

Other clients

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Global config at ~/.cursor/mcp.json (all projects) or project-level .cursor/mcp.json:

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Fully quit and reopen Cursor — MCP servers are only loaded at startup.

Workspace config at .vscode/mcp.json (or open the user-level file via the MCP: Open User Configuration command):

{
  "servers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

VS Code uses servers as the top-level key (not mcpServers).

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Open Cline's MCP Servers panel → Configure tab, then paste:

{
  "mcpServers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"],
      "disabled": false
    }
  }
}

Edit the user settings.json (~/.config/zed/settings.json on macOS/Linux, %APPDATA%\Zed\settings.json on Windows) or a project-level .zed/settings.json:

{
  "context_servers": {
    "simap": {
      "command": "npx",
      "args": ["-y", "@digilac/simap-mcp"]
    }
  }
}

Zed uses context_servers as the top-level key.

npm install -g @digilac/simap-mcp

Then configure your client with the direct command:

{
  "mcpServers": {
    "simap": {
      "command": "simap-mcp"
    }
  }
}
git clone https://github.com/Digilac/simap-mcp.git
cd simap-mcp
npm install
npm run build

Then configure your client with the absolute path:

{
  "mcpServers": {
    "simap": {
      "command": "node",
      "args": ["/absolute/path/to/simap-mcp/dist/index.js"]
    }
  }
}

Usage

Once configured, just ask your AI assistant in natural language. Mention "in simap" to make sure the assistant routes the request through the MCP server:

  • "Show me new tenders published today in simap"

  • "Find construction tenders in canton Vaud in simap"

  • "Give me the details of this tender in simap" (after a search)

  • "Search CPV codes for IT services in simap"

Listed on

Contributing

Contributions are welcome! See CONTRIBUTING.md for development setup and commands, and ARCHITECTURE.md for architecture, internal patterns, and the full tool parameter reference.

simap API

This server uses the public API from simap.ch.

License

MIT

Available Tools

14 tools
browse_bkp_treeA

Browse the BKP code hierarchy (Swiss construction cost plan)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoDisplay languageen
parentCodeNoParent BKP code. If omitted, shows root categories

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It only states 'Browse', which implies a read-only operation, but offers no details on behavior (e.g., tree depth, pagination, or output format).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that is front-loaded with the key action and resource. No unnecessary words or details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple browsing tool with 2 parameters and no output schema, the description covers the core purpose but lacks details about the hierarchy presentation (e.g., depth, recursion). Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter already described in the input schema. The description adds no additional meaning beyond what's in the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Browse') and the resource ('BKP code hierarchy') with context ('Swiss construction cost plan'). This distinguishes it from sibling tools for other code hierarchies (CPV, NPK, OAG).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for navigating the BKP hierarchy, and sibling tool names make the alternative contexts clear. However, no explicit when-to-use or when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_cpv_treeB

Browse the CPV code hierarchy (shows subcategories of a parent code)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoDisplay languageen
parentCodeNoParent code (8 digits). If omitted, shows root categories

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It states the tool shows subcategories but does not disclose output structure, return format, or any behavioral traits like read-only nature. The lack of output schema exacerbates the gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 12 words with no fluff. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with two optional parameters and no output schema, the description adequately conveys purpose but does not compensate for missing output details. It leaves the agent uncertain about the result format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description does not add meaning beyond the schema beyond implying the parentCode role, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'browse' and the resource 'CPV code hierarchy', and specifies it shows subcategories. The tool name itself distinguishes it from siblings like browse_bkp_tree, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus the sibling browse tools (e.g., browse_bkp_tree, browse_npk_tree). The description assumes the agent knows CPV context, but lacks explicit differentiation or when-not-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_npk_treeB

Browse the NPK code hierarchy (standardized positions catalog)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoDisplay languageen
parentCodeNoParent NPK code. If omitted, shows root categories

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only mentions 'Browse', implying a read-only operation, but lacks details on pagination, error handling, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence with no redundancy. However, it could benefit from additional structured information like usage hints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple browsing tool, but lacks details on output format or return value. No output schema exists, so the description should ideally clarify what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with clear parameter descriptions. The description adds no new meaning beyond the schema, earning the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Browse') and the specific resource ('NPK code hierarchy'), distinguishing it from siblings like browse_bkp_tree or browse_cpv_tree.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., search_npk_codes). The description implies use for browsing the hierarchy but does not specify scenarios or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browse_oag_treeB

Browse the OAG code hierarchy (object type classification)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoDisplay languageen
parentCodeNoParent OAG code. If omitted, shows root categories

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'Browse the OAG code hierarchy' without stating that the tool is read-only, if it requires authentication, how it handles missing codes, or any rate limits. Users cannot assess side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded. It conveys the essence without extra words. However, it could be slightly expanded with a hint about the hierarchy structure without becoming verbose, so it is not a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and the hierarchical nature of the tool, the description is incomplete. It does not describe what the tool returns (e.g., a list of codes with names), whether the hierarchy is multi-level, or how to traverse deeper. Users must infer behavior from the name and parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters have descriptions). The description adds value by explaining that omitting parentCode shows root categories, which is not stated in the schema alone. The lang parameter is simply 'Display language', which is clear. The added hint for parentCode earns a score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Browse' and the resource 'OAG code hierarchy', which distinguishes it from sibling browse tools for other code systems (BKP, CPV, NPK). It specifies the domain (object type classification), leaving no ambiguity about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Among siblings, there are multiple browse tools, but the description does not explain when to choose this one or mention any prerequisites or limitations. Users are left to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_publication_historyA

Get the publication history for a project (corrections, awards, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
lotIdNoLot ID (optional, to filter by lot)
publicationIdYesCurrent publication ID (UUID)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explicitly describes a read operation ('Get') and gives examples of what the history includes (corrections, awards), indicating it is a retrieval without side effects. However, it does not detail potential errors or response complexity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 13 words, no filler, efficiently communicates the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so description should compensate. It gives examples of what the history includes, but lacks details on response structure (e.g., list, pagination, ordering). For a simple retrieval it is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with 100% description coverage (publicationId and lotId are well-described). The description adds minimal extra meaning beyond the schema examples; thus baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it 'Get' the 'publication history for a project' with specific examples (corrections, awards). This verb+resource combination distinguishes it from sibling tools that focus on browsing trees or searching for tender details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Does not mention that publicationId is required or that lotId is optional for filtering. Lacks any context about prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tender_detailsC

Get detailed information about a specific tender

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred languageen
fullRawNoInclude the complete unmodified API response as JSON at the end of the output. Verbose — only enable when the structured fields are insufficient.
projectIdYesProject ID (UUID)
publicationIdYesPublication ID (UUID)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'get detailed information', implying a read operation, but does not mention side effects, authentication needs, rate limits, or response details. The lack of disclosures leaves significant ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that is front-loaded. It is concise, but could be expanded with relevant context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description is insufficient. It does not explain what 'detailed information' includes, how to interpret parameters like fullRaw, or the expected output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having a description. The tool description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and resource 'detailed information about a specific tender'. However, it does not differentiate from sibling tools like get_publication_history which might also retrieve details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as search_tenders or get_publication_history. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cantonsA

List all Swiss cantons with their codes (useful for search filters)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It describes a simple list operation without detailing any behavioral traits such as authentication needs, rate limits, or side effects, which is adequate but does not add value beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's purpose. No unnecessary words or extraneous details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is complete. It tells what the tool does and hints at its utility, which is sufficient for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100%. The description does not need to explain parameters, and it adds no parameter information, but this is acceptable given there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: listing Swiss cantons with their codes. It uses a specific verb ('list') and resource ('Swiss cantons'), and it is distinct from sibling tools which involve browsing trees, searching codes, or listing institutions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is 'useful for search filters', providing implied context for when to use it. However, it does not explicitly state when not to use it or mention alternatives among siblings, so guidance is limited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_institutionsA

List Swiss public institutions (Confederation, cantons, municipalities) that publish tenders

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for namesen
searchNoFilter by name (min 3 characters)

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states what the tool lists, with no details about pagination, ordering, or whether results are filtered by language or search. This is insufficient for a simple list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, clear sentence (13 words) that front-loads the essential purpose. No redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 optional params, no output schema), the description adequately covers the core purpose. It could mention that it returns a list, but overall it is sufficient for a filtered list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described (search with minLength, lang with enum). The description adds no new semantic information beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists Swiss public institutions (Confederation, cantons, municipalities) that publish tenders. This specific verb-resource combination with scope ('that publish tenders') distinguishes it from siblings like list_cantons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for listing institutions that publish tenders, but provides no explicit guidance on when to use vs. alternatives like list_cantons, which may overlap. No when-not or exclusion criteria are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_bkp_codesC

Search BKP (Swiss construction cost plan) codes by keyword or number

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSearch languageen
queryYesSearch term (keyword or code number)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'search' without revealing if the operation is read-only, what the output format is, or any constraints like authentication or rate limits. The minimal description lacks necessary behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, no wasted words, and front-loaded with the verb 'Search' and resource 'BKP codes'. It efficiently conveys the core purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should hint at return values or behavior, but it does not. The tool is a search with two parameters, yet the description lacks information about result format, pagination, or number of results. This deficiency leaves the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('query', 'lang') with descriptions. The description adds no new information about parameter semantics; it simply paraphrases the schema's 'Search term (keyword or code number)' for query. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool searches BKP codes by keyword or number, clearly identifying the resource and action. It distinguishes from siblings like browse_bkp_tree (browsing) and search_cpv_codes (different domain). However, it does not explain what BKP codes are, which could further clarify the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool compared to alternatives such as browse_bkp_tree or other search tools. There is no explicit 'when to use' or 'when not to use' information, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cpv_codesA

Search CPV (Common Procurement Vocabulary) codes by keyword or partial code number

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSearch languageen
queryYesSearch term (keyword or code prefix)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states basic search functionality; lacks disclosure of results behavior, pagination, limits, or error handling. Minimal for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 9 words, front-loaded with action and resource. No unnecessary text; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple search tool with 2 parameters but no output schema. Lacks details on result format, limits, and error conditions. Gaps exist but tool simplicity reduces burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage; description adds that query can be 'keyword or partial code number', slightly enriching the schema's 'Search term (keyword or code prefix)'. Lang parameter already fully described by schema. Baseline 3 with minor added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (search) and resource (CPV codes), and specifies input types (keyword or partial code number). Distinguishes from sibling tools like browse_cpv_tree and other code search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for searching CPV codes but provides no explicit guidance on when to use search vs browse alternatives (e.g., browse_cpv_tree). No when-not-to-use or alternative conditions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_npk_codesB

Search NPK (standardized positions catalog) codes by keyword or number

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSearch languageen
queryYesSearch term (keyword or code number)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but it only states the basic action. It omits critical behavioral details such as pagination, result limits, ordering, error handling, or what happens when no results are found. This leaves the agent with insufficient information to predict tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core purpose without extraneous words. It is appropriately sized for a simple search tool, though it lacks structured breakdowns (e.g., front-loading key terms).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description should explain return values or behavior. It does not mention what the search returns (e.g., list of codes, details), pagination, or result count. For a search tool with two parameters, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds 'by keyword or number', which reinforces the schema's 'Search term (keyword or code number)' but does not provide new meaning or clarify format or constraints beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Search', the resource 'NPK (standardized positions catalog) codes', and the method 'by keyword or number', making it easy for an agent to understand the tool's purpose. It effectively distinguishes from sibling tools like browse_npk_tree (navigation) and other search tools targeting different code systems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description implies usage for searching NPK codes, it provides no explicit guidance on when to use this tool versus alternatives (e.g., browse_npk_tree for browsing hierarchy). No when-not-to-use or alternative recommendations are given, leaving the agent to infer from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_oag_codesB

Search OAG (object type classification) codes by keyword or number

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoSearch languageen
queryYesSearch term (keyword or code number)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It does not disclose behavioral traits such as whether results are limited, if matching is exact or partial, or if any side effects occur. Only states the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with action, resource, and method. No wasted words, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema and no annotations, the description lacks detail on return format, result limits, and matching behavior. Insufficient for an agent to understand full usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline 3. The tool description adds no new information about parameters beyond what is in the schema (query and lang descriptions).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action 'Search', the resource 'OAG codes', and the method 'by keyword or number'. It distinguishes from sibling tools like browse_oag_tree (browsing hierarchy) and other search codes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like browse_oag_tree or other search_* tools. The description does not provide when-not or context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_proc_officesB

Search public procurement offices by name or institution

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoName to search (min 3 characters)
institutionIdNoFilter by parent institution (UUID)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states basic search operation; no mention of read-only nature, authentication, rate limits, or result behavior. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence with no unnecessary words. Front-loaded with key action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, description lacks details on return values, pagination, or result structure. Incomplete for an effective search tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions for 'search' and 'institutionId'. Tool description adds no extra meaning beyond the schema, so baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Search', resource 'public procurement offices', and criteria 'by name or institution'. Distinguishes from sibling tools like search_tenders or search_cpv_codes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for searching offices, but no explicit guidance on when to choose this tool over alternatives (e.g., browse_* trees) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tendersB

Search public tenders on simap.ch with filters by date, canton, CPV codes, and other criteria

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred language for resultsen
searchNoSearch text (min 3 characters)
cantonsNoSwiss cantons (e.g., BE, VD, GE, ZH)
bkpCodesNoBKP codes for construction (e.g., 211 for masonry)
cpvCodesNoCPV codes (8 digits, e.g., 72000000 for IT services)
lastItemNoPagination token (format: date|projectNumber) to retrieve the next page
pubTypesNoPublication types (tender, award_tender, correction, etc.)
processTypesNoProcess types (open, selective, invitation, direct, no_process)
projectSubTypesNoProject types to filter
publicationFromNoPublication start date (format YYYY-MM-DD)
publicationUntilNoPublication end date (format YYYY-MM-DD)
issuedByOrganizationsNoUUIDs of issuing organizations

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description only covers basic purpose without disclosing behavioral traits such as pagination (though the lastItem parameter hints at it), result count limits, or authentication requirements. The description falls short for a search tool with 12 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence (14 words) that front-loads the core purpose with key filter categories, earning its place with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (12 optional parameters, no output schema, no annotations), the description omits crucial context like return format, pagination behavior, and how to combine filters effectively, making it incomplete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description mentions filter types (date, canton, CPV) but adds no new meaning beyond the schema's parameter descriptions. It does not elaborate on how to use them effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool searches public tenders on simap.ch with filters by date, canton, CPV codes, and other criteria, clearly distinguishing it from sibling tools like browse_bkp_tree or get_tender_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching tenders with filters but provides no explicit guidance on when to use this tool versus alternatives like search_cpv_codes or get_tender_details, nor when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv1.3.0
    • First observedbrowse_bkp_tree
    • First observedbrowse_cpv_tree
    • First observedbrowse_npk_tree
    • First observedbrowse_oag_tree
    • First observedget_publication_history
    • First observedget_tender_details
    • First observedlist_cantons
    • First observedlist_institutions
    • First observedsearch_bkp_codes
    • First observedsearch_cpv_codes
    • First observedsearch_npk_codes
    • First observedsearch_oag_codes
    • First observedsearch_proc_offices
    • First observedsearch_tenders

TDQS

A3.7/5.0
Disambiguation5/5

Each tool serves a distinct purpose: browsing code hierarchies, searching codes, listing entities, retrieving tender info, and searching tenders. No two tools overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using underscores, such as browse_*, search_*, list_*, and get_*. No naming clashes or mixed conventions.

Tool Count5/5

With 14 tools, the set covers the main operations for Swiss public procurement data without being overly large or sparse. Each tool earns its place.

Completeness5/5

The tool set comprehensively covers browsing/searching all code hierarchies, listing cantons/institutions, and retrieving tender details and history. For a read-only informational server, no obvious gaps exist.

Maintenance

ActivityActive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables users to search and retrieve detailed information about Taiwan government procurement tenders through the Government Electronic Procurement System API. It supports searching tenders by keyword, category code, date, and government unit.
    6
    -
  • A
    license
    A
    quality
    B
    maintenance
    Exposes French and EU public procurement data (BOAMP + TED) as MCP tools for AI agents, enabling search for tenders, awards, and winner intelligence via typed filters.
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Finnish public procurement notices (Hilma). Enables searching and retrieving procurement notices directly from Claude without a separate browser.
    4
    76
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Digilac/simap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server