Taiwan Tender MCP
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation5/5
Each tool has a clearly distinct purpose: get_tender_detail retrieves a single tender's full details, list_categories lists classification codes, list_tenders_by_date and list_tenders_by_unit filter by date and unit respectively, search_by_category filters by classification code, and search_tenders performs keyword searches. There is no overlap in functionality.
Naming Consistency5/5All tools follow a consistent verb_noun pattern with snake_case: get_tender_detail, list_categories, list_tenders_by_date, list_tenders_by_unit, search_by_category, and search_tenders. The naming is predictable and uniform throughout.
Tool Count5/5With 6 tools, the server is well-scoped for its purpose of accessing Taiwan government tenders. Each tool serves a specific querying or filtering role, and the count is neither too sparse nor bloated for the domain.
Completeness4/5The tool set provides comprehensive querying capabilities (by detail, date, unit, category, and keyword) and classification listing, covering most search and retrieval needs. A minor gap is the lack of tools for actions like subscribing to updates or managing saved searches, but core workflows are well-covered.
Average 3.1/5 across 6 of 6 tools scored.
See the Tool Scores section below for per-tool breakdowns.
Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.
If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.
MCP servers without a LICENSE cannot be installed.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what information is returned but doesn't address key behavioral aspects: it doesn't state whether this is a read-only operation (though implied by '取得'), mention error conditions (e.g., invalid unit_id or job_number), discuss performance or rate limits, or describe the response format. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('取得單一標案的詳細資訊') and then elaborates on the content included. There's no wasted text, and it's appropriately sized for a simple lookup tool. However, it could be slightly more structured (e.g., by explicitly noting it's for single tenders vs. lists).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple lookup with 2 required parameters), 100% schema coverage, and no output schema, the description is minimally adequate. It states what the tool does and what information it returns, but lacks behavioral details (e.g., error handling, response structure) that would be helpful for an agent. Without annotations or output schema, the description should do more to compensate, but it only meets the baseline for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters (unit_id and job_number) clearly documented in the schema. The description adds no parameter-specific information beyond implying that these are used to identify a single tender. Since the schema already provides full coverage, the baseline score of 3 is appropriate—the description doesn't add value but doesn't detract either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '取得單一標案的詳細資訊' (get detailed information for a single tender). It specifies the verb (取得/get) and resource (標案/tender), and lists the types of information included (機關資料、採購資料、招標資料、領投開標資訊等完整內容). However, it doesn't explicitly differentiate from sibling tools like 'list_tenders_by_date' or 'search_tenders', which likely return multiple or filtered results rather than single 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/5Does 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. It doesn't mention that this is for single tender details (as opposed to listing or searching multiple tenders), nor does it specify prerequisites or exclusions. The agent must infer usage from the description's focus on '單一標案' (single tender) and the required parameters, but this is implicit rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior (beyond the limit parameter), or what the return format looks like (especially since there's no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose and required parameter. There's no wasted text or redundancy, making it appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the return values, error conditions, or behavioral traits, leaving significant gaps for an AI agent to understand how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 (unit_id and limit) adequately. The description adds no additional parameter semantics beyond what's in the schema, such as format examples for unit_id or constraints on limit values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('列出' - list) and resource ('標案' - tenders) with the scope '指定機關' (specified unit). It distinguishes from siblings like list_tenders_by_date (by date) and search_tenders (general search), but doesn't explicitly contrast with get_tender_detail (detail view) or search_by_category (category-based).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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 like list_tenders_by_date or search_tenders. It only states the basic requirement (unit_id), without mentioning prerequisites, typical use cases, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a search operation but doesn't mention whether this is read-only, if it requires authentication, rate limits, pagination behavior, or what the output format looks like. The examples add some context but don't cover key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The example codes are helpful but could be slightly more integrated; overall, it's efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list of tenders, error conditions) or behavioral aspects like safety or performance. For a search tool with 3 parameters, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description provides example category codes (e.g., 5174, 8672, 452) which add semantic context beyond the schema, but doesn't explain parameter interactions or usage nuances. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: '依標的分類代碼搜尋標案' (search for tenders by category code). It specifies the verb '搜尋' (search) and resource '標案' (tenders), though it doesn't explicitly differentiate from sibling tools like 'search_tenders' or 'list_tenders_by_date'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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. It includes example category codes but doesn't mention sibling tools or contexts where this tool is preferred, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool lists categories with filtering options, but doesn't disclose behavioral traits such as whether it's read-only, requires authentication, has rate limits, returns paginated results, or what the output format looks like. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the main purpose and includes key usage details. There's no wasted text, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list format, data structure), behavioral aspects like safety or performance, or how it differs from siblings. For a tool with 2 parameters and no structured output documentation, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('type' and 'search') well-documented in the schema. The description adds minimal value by mentioning the same filtering options without providing additional syntax or format details beyond what the schema already covers. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('列出' meaning 'list') and resource ('政府採購標的分類代碼' meaning 'government procurement category codes'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'search_by_category' or 'search_tenders', which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning filtering options ('可指定類型' meaning 'can specify type' and '搜尋關鍵字' meaning 'search keyword'), but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'search_by_category'. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions returning '招標中的標案列表' (active tender lists) and specific fields, but doesn't disclose important behavioral traits like whether this is a read-only operation (implied but not stated), pagination behavior beyond the limit parameter, rate limits, authentication requirements, error conditions, or what happens when no results are found. The description adds minimal context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first states the core functionality (search Taiwan government tenders by keyword), and the second specifies the return (active tenders with listed fields). There's no wasted language, though it could be slightly more front-loaded by mentioning 'active tenders' earlier. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a search tool with 3 parameters. It doesn't explain the return format beyond listing field names, doesn't describe error handling, doesn't mention sorting or ordering of results, and provides no context about data freshness or source limitations. For a tool that returns lists of government tenders, more behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all three parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions keyword searching but doesn't elaborate on search behavior (exact match, partial match, etc.) or provide additional context about the only_active or limit parameters. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for Taiwan government tenders by keyword in tender names and returns active tender lists with specific fields (name, agency, budget, deadline). It specifies '招標中的標案' (active tenders) which distinguishes it from some siblings like list_tenders_by_date that might show all tenders. However, it doesn't explicitly differentiate from search_by_category which also searches but by category rather than keyword.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for keyword-based searches of active tenders, but provides no explicit guidance on when to use this tool versus alternatives like search_by_category, list_tenders_by_date, or list_tenders_by_unit. There's no mention of prerequisites, exclusions, or comparative advantages with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the date format and a limit parameter, but does not disclose critical behavioral traits such as whether this is a read-only operation, potential rate limits, authentication requirements, or what happens if no tenders exist for the date. For a tool with no annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and includes a necessary example for date format. There is zero waste, and every part of the sentence earns its place by clarifying the action and format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 3 parameters, the description is incomplete. It covers the basic purpose and date format but lacks information on behavioral aspects (e.g., read-only status, error handling), output format, or detailed parameter guidance. For a tool with this complexity and no structured support, it should do more to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (date, type_filter, limit) with descriptions. The description adds minimal value beyond the schema by mentioning the date format example, but does not provide additional semantic context for parameters like 'type_filter' usage or 'limit' implications. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('列出' meaning 'list') and resource ('標案公告' meaning 'tender announcements') with a precise scope ('指定日期' meaning 'specified date'). It distinguishes from siblings like 'list_tenders_by_unit' (by unit) and 'search_tenders' (general search) by emphasizing date-based listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing tender announcements by date, but does not explicitly state when to use this tool versus alternatives like 'list_tenders_by_unit' (by unit) or 'search_tenders' (keyword search). It provides context (date-based listing) but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jameslai-sparkofy/taiwan-tender-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server