mcp-mantis
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-mantislist open issues assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-mantis
An MCP stdio server that gives an AI assistant direct access to a MantisBT tracker, oriented to issue resolvers: read issues (with images), change status, resolve, assign, comment and link — plus local semantic search over issues.
REST, not SOAP. This server uses the MantisBT REST API (Mantis 2.27+), the supported and non-deprecated integration path. The legacy SOAP API is not used and does not need to be enabled.
Setup
Requires Node.js 22+ (uses the built-in global fetch).
npm install
cp .env.example .envThen edit .env:
Variable | Required | Notes |
| yes | Must include |
| yes | API token from Mantis: My Account → API Tokens → Create. No username/password; the token is the |
| no |
|
| no |
|
| no | Embedding model, index directory, ONNX threads. |
| no | Tuning. |
Related MCP server: Redmine MCP Server
Register with Claude Code
From npm (published package), no local checkout needed — the token is supplied here, never stored in the repo:
claude mcp add mantis \
-e MANTIS_REST_BASE_URL=https://mantis.example.com/api/rest/index.php \
-e MANTIS_TOKEN=your-token-here \
-- npx -y @grec0/mcp-mantisOr from a local build:
npm run build
claude mcp add mantis -- node /path/to/mcp-mantis/dist/mcp.jsEquivalent .mcp.json (the env block is where MANTIS_TOKEN belongs):
{
"mcpServers": {
"mantis": {
"command": "npx",
"args": ["-y", "@grec0/mcp-mantis"],
"env": {
"MANTIS_REST_BASE_URL": "https://mantis.example.com/api/rest/index.php",
"MANTIS_TOKEN": "your-token-here",
"MANTIS_READONLY": "false"
}
}
}
}Tools
Read
Tool | Purpose |
| Authenticated user + accessible projects. |
| Projects with versions, categories, custom fields. |
| Project members (valid handler names for assignment). |
| Paginated issues, lightweight summary by default (use |
| One issue (complete) / batch fetch by ids. |
| Download an attachment; images come back viewable. |
| Enumerations ({id,name,label}) / raw config options. |
| Stored filters (feed a |
Resolve / write (registered when MANTIS_READONLY=false)
Tool | Purpose |
| Partial update: status, resolution, handler, priority, fields… Accepts localized/canonical enum names. Optional |
| Sets both status and resolution (defaults |
| Assign to a handler by login name (or id), optional status change + note. |
| Add a public/private note. |
| Link issues (related, duplicate, blocks, depends…). |
Semantic search (registered when MANTIS_SEARCH_ENABLED=true)
Tool | Purpose |
| Build/update the local vector index from issues (first run downloads the model). |
| Natural-language search (multilingual). Optional |
| Index fill level and last sync. |
Enum names accept the instance's localized names and the canonical English labels (e.g. asignada
or confirmed). mantis_list_issues status="open" uses the live bug_resolved_status_threshold.
Ad-hoc free-text search is not a server-side REST filter — use mantis_search_issues or a stored filter_id.
Commands
Command | Purpose |
| Run the MCP stdio server (reload / built). |
| Compile TypeScript into |
| Type-check, lint and format-check. |
| Express health server ( |
Project structure
src/
├── config.ts # Validated environment configuration
├── constants.ts # Enum aliases, relationship types
├── date-filter.ts # Shared date-range filtering
├── mantis.ts # MantisBT REST client (fetch, enum/handler resolution, caching)
├── tools/ # meta, issues, notes, relationships, shared helpers
├── search/ # embedder (Transformers.js), vector store, sync, search tools
├── server.ts # Tool registration
├── mcp.ts # MCP stdio executable
└── index.ts # Express health endpointsSecurity
.env is git-ignored (only .env.example is committed) — never commit the token. Write access is
scoped to the token owner's Mantis permissions; set MANTIS_READONLY=true to disable all mutations.
Health endpoints expose no credentials or user data. Run npm run check before committing.
Available Tools
20 toolsmantis_add_noteAdd note to issueA
Adds a note (comment) to an issue. Use private=true for an internal note visible only to developers/managers. To change a field and comment in one call, use mantis_update_issue with its "note" parameter instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Note body (plain text or Markdown). | |
| private | No | Create as a private note (default false). | |
| issue_id | Yes | Numeric issue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation; description adds useful context about visibility of private notes to developers/managers, going beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words, front-loading the main purpose and efficiently guiding usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers purpose, parameter semantics, usage alternatives, and behavioral traits, making it complete for a simple note-adding tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters fully; description adds meaning by explaining the effect of the private parameter, enhancing understanding beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'adds' and resource 'note to an issue', clearly differentiating from sibling mantis_update_issue by noting that tool can change fields and comment in one call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use private=true for internal notes and when to prefer mantis_update_issue for combined field change and comment, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_add_relationshipAdd issue relationshipA
Links two issues. type is one of: related_to, duplicate_of, has_duplicate, depends_on (parent_of), blocks (child_of) — or a numeric type id.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Relationship type name or numeric id. | |
| issue_id | Yes | Source issue id. | |
| target_id | Yes | Target (other) issue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only, not idempotent, and not destructive. The description adds no further behavioral context (e.g., whether duplicate relationships are allowed, or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the action, the second lists types. No redundant information, front-loaded purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not mention return values, success/failure indicators, or error handling. For a simple creation tool, this is a gap but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds value by listing the exact string values for the 'type' parameter, which the schema only describes as 'name or numeric id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb ('Links') and resource ('two issues'), and explicitly lists the valid relationship types, which distinguishes it from the sibling 'mantis_remove_relationship'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly differentiates from removal by stating it adds a relationship, but does not explicitly state when to use this vs. siblings or provide alternatives. The list of types provides some guidance on valid inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_assign_issueAssign issueA
Assigns an issue to a handler (by login name or user id) and optionally changes its status in the same call. Optionally append a note.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric issue id. | |
| note | No | Optional note. | |
| status | No | Optional new status name (e.g. "asignada"). | |
| dry_run | No | Preview without applying. | |
| handler | Yes | Handler login name (resolved via project members) or numeric user id. | |
| note_private | No | Make the note private (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-idempotent, non-destructive. Description adds that it changes handler and optionally status/note, but does not disclose overwrite behavior, permission requirements, or side effects (e.g., what happens if issue already assigned). Adequate but missing depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences covering main functionality and optional features. Front-loaded with key action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (2 required), no output schema, and moderate complexity, the description covers the primary operation and key options. Lacks details on return value or post-condition, but adequate for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description adds marginal value. It rephrases optional status and note, but does not clarify meaning beyond schema. No additional parameter semantics like format constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool assigns an issue to a handler by login name or user id, optionally changes status, and appends a note. It distinguishes from siblings like mantis_add_note (only adds note) and mantis_resolve_issue (resolves issue). The verb 'assigns' and resource 'issue' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for assigning issues and optionally updating status/note, but does not explicitly state when to use this tool over alternatives like mantis_add_note for just notes or mantis_update_issue for other changes. No 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_configGet config optionsARead-onlyIdempotent
Reads arbitrary Mantis configuration options exposed to the REST API, e.g. ["status_enum_string","bug_resolved_status_threshold"].
| Name | Required | Description | Default |
|---|---|---|---|
| options | Yes | Config option names to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds example config options but no critical behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and example, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, clear purpose, thorough annotations), the description is fully adequate and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with parameter description 'Config option names to read.' The description adds example values but does not add significant semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads Mantis configuration options, uses a specific verb 'Reads', and distinguishes from siblings like mantis_get_enums or mantis_get_issue by focusing on config options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an example but lacks explicit guidance on when to use this tool vs alternatives, no when-not-to-use or context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_enumsGet enumerationsARead-onlyIdempotent
Returns the common Mantis enumerations (status, priority, severity, resolution, reproducibility, etc.) as {id,name,label} lists. This instance is localized (Spanish names) — use it to map issue status/priority codes and to learn valid names for status changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds behavioral context: the instance is localized (Spanish names) and the return format ({id,name,label} lists), which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and scope, second provides usage guidance. No redundant words, efficiently packed with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with no parameters and no output schema, the description fully covers what it returns (with format), its localization, and use cases. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, schema coverage is 100%. Baseline for 0 params is 4. Description adds no parameter info, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns Mantis enumerations with specific verb 'Returns', resource 'common Mantis enumerations', and lists examples (status, priority, etc.). Distinguishes from siblings by noting localization (Spanish names).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'to map issue status/priority codes and to learn valid names for status changes.' No explicit exclusions, but the purpose is clear enough to differentiate from sibling tools like mantis_get_config or mantis_get_issue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_issueGet issueARead-onlyIdempotent
Returns one issue by id with every field: description, steps to reproduce, notes, attachments, relationships, custom fields and history. Notes are always included.
| Name | Required | Description | Default |
|---|---|---|---|
| select | No | Comma-separated fields to include (server-side projection), e.g. "id,summary,status,notes". | |
| issue_id | Yes | Numeric issue id, e.g. 1239. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the response includes every field and notes are always included, which aligns with annotations. However, it does not disclose additional behavioral traits beyond what annotations capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose, and contains no redundant or extraneous information. Every word serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (get by ID, no output schema), the description fully explains what is returned (all fields, notes always included). No further detail is necessary for an agent to correctly invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters have descriptions). The description adds minimal value beyond the schema—only that 'every field' is returned and notes are always included, which clarifies the default behavior for the 'select' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns one issue by its numeric ID and lists all included fields (description, steps to reproduce, notes, etc.), distinguishing it from sibling tools like mantis_get_issues (multiple issues) or mantis_get_issue_attachment (specific attachment).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when full details of a single issue are needed, but does not provide explicit guidance on when to use alternatives or exclusion criteria. No 'when not to use' or sibling naming is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_issue_attachmentGet issue attachmentARead-onlyIdempotent
Downloads an attachment of an issue. Image attachments are returned as a viewable image; other files as base64 with metadata. Find file ids in an issue's "attachments" array.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | Attachment id from the issue "attachments" array. | |
| issue_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, but the description adds important behavioral details: images are returned viewable, other files as base64 with metadata. This informs the agent about the return format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence states the primary action, and the second adds critical detail about return types. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema) and the presence of annotations describing safety, the description covers the key usage guidance and return behavior. It could add error handling or size limits but remains adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 50% with description for file_id. The tool description adds context by explaining where to find file ids, complementing the schema. issue_id lacks schema description but the tool context implies it is straightforward (numeric ID). Overall, the description adds value beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads an attachment of an issue, using a specific verb and resource. It also distinguishes the return format for images vs other files, adding clarity beyond the title. No sibling tool serves the same purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises finding file IDs in an issue's attachments array, which is helpful context for using the tool. However, it does not explicitly state when to use this tool over alternatives or when not to use it, though no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_issuesGet multiple issuesARead-onlyIdempotent
Fetch several issues by id in one call (max 5 concurrent). Missing/inaccessible ids return null at their position instead of failing the whole call. Includes requested/found/failed counters.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Issue ids to fetch (1–50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses concurrency limit, null-for-missing behavior, and counters, adding significant value beyond annotations (readOnly, idempotent, not destructive). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff. Front-loaded with purpose, conveys all necessary information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key behaviors (concurrency, null handling, counters) for a read-only batch fetch. No output schema, but counters suffice. Could specify return format, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter 'ids' with description. Tool description adds concurrency limit and error handling details, enhancing meaning beyond schema. Baseline 3 raised due to additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Fetch several issues by id in one call', using specific verb and resource. Distinguishes from sibling 'mantis_get_issue' by indicating batch operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates max 5 concurrent calls and tolerant behavior for missing IDs, guiding when to use this batch fetch. Could explicitly contrast with search or single get, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_get_projectGet projectARead-onlyIdempotent
Returns a single project by id with its versions, categories and custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context about included data (versions, categories, custom fields) but does not disclose additional behaviors like auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the main action, and contains no unnecessary words. It is highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description is adequate. It explains what the tool returns, and annotations cover behavioral aspects. However, it could mention the return format or any prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'project_id' is self-explanatory from the schema, but the schema itself has 0% description coverage. The description does not add any meaning beyond 'by id', and fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns', the resource 'a single project', and the included data ('versions, categories and custom fields'). It distinguishes from sibling tools like mantis_list_projects and mantis_get_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need a single project by ID, but provides no explicit guidance on when not to use it or alternatives among siblings like mantis_list_projects or mantis_get_config.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_list_filtersList stored filtersARead-onlyIdempotent
Lists stored filters, optionally scoped to a project. Pass a filter id to mantis_list_issues to run it.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's statement about listing filters is consistent and adds minimal extra context (e.g., 'stored', 'optionally scoped'). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no redundant information, and front-loaded with the core purpose. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, no output schema, and many siblings, the description covers the essential use (list filters, optionally scoped) and links to the related tool. Lacks detail on output format or default behavior, but sufficient for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one optional parameter (project_id) with 0% description coverage. The description mentions 'optionally scoped to a project', which adds meaning to the parameter, but does not elaborate on constraints or behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists stored filters, optionally scoped to a project. It uses a specific verb ('Lists') and resource ('stored filters'), and distinguishes from siblings by mentioning how to run a filter with mantis_list_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to list filters, optionally per project) and what to do with the filter id (pass to mantis_list_issues). It does not explicitly state when not to use it or list alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_list_issuesList issuesARead-onlyIdempotent
List issues (newest id first). Returns a LIGHTWEIGHT summary per issue by default (id, summary, status, handler, reporter, priority, dates…) — call mantis_get_issue for notes/attachments/history. Filter server-side by project_id / stored filter_id. The status, assigned_to, reporter_id and date filters are applied client-side (the REST API lacks them); when active, multiple pages are scanned (up to 500 issues). Use status="open" for all not-yet-resolved issues. Omit project_id to span all projects.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| select | No | Comma-separated fields to include. Defaults to a lightweight summary set. Fields needed by the active filters are always fetched even if omitted here. | |
| status | No | Status name (localized or canonical) or "open" for all not-yet-resolved issues (client-side). | |
| filter_id | No | Stored Mantis filter id (see mantis_list_filters). | |
| page_size | No | Issues per page (default 50). | |
| project_id | No | ||
| assigned_to | No | Handler/assignee user id (client-side filter). | |
| reporter_id | No | Reporter user id (client-side filter). | |
| created_after | No | ISO-8601 timestamp — only issues created strictly after this. | |
| updated_after | No | ISO-8601 timestamp — only issues updated strictly after this. Example: "2026-03-25T00:00:00Z" | |
| created_before | No | ISO-8601 timestamp — only issues created strictly before this. | |
| updated_before | No | ISO-8601 timestamp — only issues updated strictly before this. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive), description reveals client-side scanning up to 500 issues, default fields, and automatic inclusion of filter-required fields. Adds significant transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph of ~5 sentences covers all key points without being verbose. Could benefit from slight structural improvements (e.g., separating filter types), but is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, high schema coverage, and no output schema, description covers usage patterns, limitations, and alternatives. Could mention pagination behavior explicitly, but overall provides sufficient context for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 92%, so baseline is 3. Description adds context: status='open' resolves to not-yet-resolved, client-side filters trigger multi-page scans, select defaults described. Enriches understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies action (list issues), order (newest id first), and lightweight summary by default. Clearly distinguishes from mantis_get_issue for full details, making it easy for an AI agent to select correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use this tool vs mantis_get_issue, and mentions client-side vs server-side filtering limitations. Also advises using status='open' for unresolved issues and omitting project_id to span all projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_list_projectsList projectsARead-onlyIdempotent
Lists all projects accessible to the token owner, including nested versions, categories and custom field definitions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds value by specifying that the output includes nested versions, categories, and custom field definitions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action ('lists all projects'), efficient and covers scope without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter list tool with no output schema, description sufficiently conveys what is returned (nested data). No gaps for intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. Description correctly reflects that no parameters are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists all projects accessible to the token owner, with nested versions, categories, and custom field definitions. Distinguishes from sibling 'mantis_get_project' by implying a list vs. single project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context suggests use for listing all projects, but no explicit when-not-to-use or comparison with siblings like 'mantis_get_project' for single project retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_list_project_usersList project membersARead-onlyIdempotent
Lists the members of a project (id, login name, access level). Use it to find valid handler names for assignment.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about returned fields but does not disclose any additional behavioral traits such as authentication requirements or potential errors, which is acceptable given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the action and result, with no unnecessary words. It efficiently conveys the tool's purpose and a key use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and annotations, the description is mostly complete. It specifies output fields and a use case, though it does not mention pagination or list format, which is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fails to compensate by explaining the required 'project_id' parameter. It only describes the action, leaving the agent to infer parameter meaning solely from the schema's type and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'lists', the resource 'members of a project', and the returned fields (id, login name, access level), distinguishing it from sibling tools like mantis_get_project or mantis_list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool to 'find valid handler names for assignment', providing a specific use case. It does not list exclusions or alternatives, but the context is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_rebuild_search_indexRebuild semantic search indexAIdempotent
Builds/updates the semantic search index from Mantis issues. Use full=true to clear and rebuild from scratch. First run downloads the embedding model (may take a minute).
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Clear the index and rebuild (default false). | |
| project_id | No | Only index issues from this project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds useful behavioral context: first run downloads the embedding model (known side effect), and full=true behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has simple 2-parameter schema with no output schema. Description covers main action, parameter usage, and an important side effect. Could mention if rebuild is asynchronous, but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 no extra semantic detail beyond the schema, but it does mention the implication of full=true.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'builds/updates' and the resource 'semantic search index from Mantis issues'. It distinguishes from sibling tools like mantis_search_index_status (checks status) and mantis_search_issues (performs searches).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use full=true ('clear and rebuild from scratch') and notes first-run behavior. It does not explicitly discuss when to use this tool versus alternatives, but the purpose is inherently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_remove_relationshipRemove issue relationshipADestructiveIdempotent
Removes a relationship from an issue by relationship id.
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | Issue id owning the relationship. | |
| relationship_id | Yes | Relationship id to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint: true and idempotentHint: true. The description merely repeats the removal action, adding no extra behavioral context beyond what annotations state. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, efficiently conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with two well-described parameters and no output schema, the description is complete and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; both parameters have descriptions. The tool description adds no further meaning beyond the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Removes a relationship'), the target resource ('from an issue'), and the identifier ('by relationship id'). This is specific and distinct from sibling tools like mantis_add_relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention prerequisites, use cases, or contrast with other relationship operations like mantis_add_relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_resolve_issueResolve issueA
Marks an issue as resolved by setting BOTH status and resolution in one call (avoids leaving resolution as "open"). Defaults: status="resuelta", resolution="fixed" — override with names valid on this instance (see mantis_get_enums). Optionally append a note.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric issue id to resolve. | |
| note | No | Optional note explaining the resolution. | |
| status | No | Target status name (default "resuelta"). | |
| dry_run | No | Preview without applying. | |
| resolution | No | Resolution name (default "fixed"). | |
| note_private | No | Make the note private (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool sets both status and resolution in one call and avoids leaving resolution as 'open', adding value beyond the annotations. It does not contradict annotations and gives meaningful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and key details without redundancy. It is highly efficient and all content is valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers essential aspects: purpose, defaults, optional note, and enum validation. It does not explain dry_run or note_private, but these are covered in the schema. For a tool with 6 parameters and no output schema, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds context by stating default values for status and resolution, and the optional nature of note. It also references mantis_get_enums for valid overrides, enhancing parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Marks an issue as resolved by setting BOTH status and resolution in one call', specifying the exact action and resource. It distinguishes from sibling tools like mantis_update_issue or mantis_assign_issue by focusing on the resolution process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the default behavior and references mantis_get_enums for valid values, advising when to use this tool for resolution. It lacks explicit exclusion of alternatives but provides sufficient context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_search_index_statusSearch index statusARead-onlyIdempotent
Fill level of the semantic index: indexed vs. total issues, plus last sync timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds specific details about the output (indexed vs. total issues, last sync timestamp) beyond the annotations which only indicate safe, idempotent, non-destructive behavior. However, it does not disclose any additional behavioral traits such as latency or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the key information about what the tool returns. Every word is necessary and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple with no parameters and no output schema, the description fully covers what the tool does and what it returns. It mentions all relevant outputs (indexed/total issues, last sync timestamp), making it complete for an AI agent to understand the tool's purpose and result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so no parameter documentation is needed. The baseline for zero parameters is 4, and the description does not add anything about parameters because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the fill level of the semantic index with specific metrics (indexed vs. total issues, last sync timestamp). It distinguishes from sibling tools like mantis_rebuild_search_index which performs a different action, and all other siblings are unrelated to index status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. While it is clear from context that this is for checking index status, no guidance on when to use it before searching or other activities is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_search_issuesSemantic issue searchARead-onlyIdempotent
Search issues by natural-language meaning (not keywords), useful to find similar/duplicate incidents. The index must be built first with mantis_rebuild_search_index. Without "select" only id+score are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language query. | |
| top_n | No | Results to return (default 10, max 50). | |
| select | No | Comma-separated fields to fetch per result, e.g. "id,summary,status,handler". | |
| highlight | No | If true, add a "highlights" field with query terms bolded. | |
| created_after | No | ISO-8601 timestamp — only issues created strictly after this. | |
| updated_after | No | ISO-8601 timestamp — only issues updated strictly after this. Example: "2026-03-25T00:00:00Z" | |
| created_before | No | ISO-8601 timestamp — only issues created strictly before this. | |
| updated_before | No | ISO-8601 timestamp — only issues updated strictly before this. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds value beyond annotations by noting the index dependency and default output behavior (only id+score without 'select'). No contradictions with annotations (readOnly, idempotent, not destructive). Could mention error handling for missing index.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and immediately follow with critical usage details. No wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains prerequisite and default returns. For an 8-parameter tool without output schema, this covers key context. Lacks details on result format or pagination, but acceptable given the tool's nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context: natural-language query interpretation, default output constraints, and the 'select' parameter's effect. This extra information justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies verb ('Search'), resource ('issues'), and method ('by natural-language meaning'), differentiating from keyword-based siblings like mantis_get_issues or mantis_list_issues. It also highlights the use case ('find similar/duplicate incidents').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use (natural-language meaning, duplicates) and prerequisite (index must be built first). Does not explicitly list when not to use, but the context implies it's not for exact keyword searches. Could be improved with direct comparison to sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_update_issueUpdate issueA
Partial update of an issue (PATCH). The "fields" object accepts any of:
summary, description, steps_to_reproduce, additional_information (strings)
status, resolution, priority, severity, reproducibility: { name } (localized or canonical) or { id }
handler: { name: "" } or { id }
category, version, target_version, fixed_in_version, view_state: { name }
custom_fields: [{ field: {id|name}, value: "" }]
When resolving an issue set BOTH status and resolution (or use mantis_resolve_issue). Use "note" to append a comment (e.g. the reason for the change) in the same call. Use dry_run to preview the payload.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric issue id to update. | |
| note | No | Optional note appended after a successful update. | |
| fields | Yes | ||
| dry_run | No | If true, return the patch that would be sent without applying it. | |
| note_private | No | Make the appended note private (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it's a mutation (readOnlyHint=false) and not destructive. Description adds context about partial update semantics and the ability to preview via dry_run, which helps the agent understand 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single well-organized paragraph with no redundancy. Front-loaded with main purpose, then field details, then usage tips. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of nested fields and no output schema, the description covers input fields and usage (dry_run, note). It doesn't describe the return value, but that is partially mitigated by the lack of output schema requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%). The description adds value by explaining how to specify fields like status with {name} or {id} and handler with {name: '<login>'}, and clarifying custom_fields structure. This goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a partial update (PATCH) of an issue. It lists all updatable fields and distinguishes from sibling tools like mantis_resolve_issue, establishing a specific resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides when to use this tool: sets both status and resolution for resolving issues (or use mantis_resolve_issue), optionally appends a note, and uses dry_run for preview. Provides clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mantis_whoamiWhoamiARead-onlyIdempotent
Returns the authenticated Mantis user (id, name, access level, accessible projects). Use it to verify the API token works.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by detailing the returned attributes (id, name, access level, projects), which goes beyond annotation scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 25 words, no unnecessary detail. Every word contributes to purpose and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists the major return fields and the use case. For a simple identity tool with zero parameters and full annotations, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters with 100% coverage. Baseline of 4 applies as there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Returns' and the resource 'authenticated Mantis user', listing specific fields. It distinguishes from sibling tools like mantis_get_issue which return different objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use it to verify the API token works', providing a clear use case. No alternatives are needed since no sibling tool serves the same purpose.
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.
20 tool updates
v0.3.0- First observed
mantis_add_note - First observed
mantis_add_relationship - First observed
mantis_assign_issue - First observed
mantis_get_config - First observed
mantis_get_enums - First observed
mantis_get_issue - First observed
mantis_get_issue_attachment - First observed
mantis_get_issues - First observed
mantis_get_project - First observed
mantis_list_filters - First observed
mantis_list_issues - First observed
mantis_list_project_users - First observed
mantis_list_projects - First observed
mantis_rebuild_search_index - First observed
mantis_remove_relationship - First observed
mantis_resolve_issue - First observed
mantis_search_index_status - First observed
mantis_search_issues - First observed
mantis_update_issue - First observed
mantis_whoami
TDQS
Each tool has a clearly distinct purpose. Even similar tools like `get_issue` vs `get_issues` and `update_issue` vs `resolve_issue` have well-defined differences explained in descriptions, so an agent can reliably choose the correct one.
All tools start with 'mantis_' and follow a verb_noun pattern (e.g., mantis_add_note, mantis_list_issues). The only slight deviation is mantis_whoami, but that's a common convention. Overall, naming is highly consistent and predictable.
20 tools cover a wide range of operations for a bug tracker: reading, updating, searching, relationships, attachments, enumerations, etc. The count is appropriate for the domain without being overwhelming.
The tool set lacks fundamental CRUD operations. There is no create_issue or delete_issue, and no tools to create/update/delete projects or filters. This creates significant gaps that will cause agent failures when these operations are needed.
Maintenance
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
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
130Create and manage MeisterTask projects, tasks, and notes from your AI assistant.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with MantisBT bug tracking systems through the REST API. Supports issue management, project access, user information, and note creation with type-safe operations.2-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Redmine instances to manage issues, projects, and users. It provides comprehensive tools for issue tracking, project oversight, and user management through the Redmine REST API.25MIT
- AlicenseAqualityAmaintenanceIntegrates MantisBT bug tracker into Claude and other MCP clients via the REST API. Read and manage issues, notes, file attachments, tags, relationships, and monitors — with optional offline semantic search across all issues.343406MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Redmine instances, managing issues, projects, and metadata through natural language commands.25MIT
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/gcorroto/mcp-mantis'
If you have feedback or need assistance with the MCP directory API, please join our Discord server