Testing Platform — MCP server
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., "@Testing Platform — MCP serverShow me open high-priority issues in Panda Eats."
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.
Testing Platform — MCP server
A small Model Context Protocol server that gives Claude Code read+write access to the Testing Platform's issues. Lets you say things like:
"Go to the Panda Eats project and check the critical new issues."
"Show me everything in In Review reported by tanya."
"Create a high-priority bug in Panda Eats titled 'Login throws 500'."
"Move issue 35 back to In Progress and post a comment that it's being reworked."
Runs on your machine, talks to the production HTTP API
(https://testing.r-ruiz.com/api) using a long-lived API token tied to your
developer account.
Setup
Mint an access token in the app. Sign in as a developer → click the key icon in the header (next to the bell) → Generate token. The token is shown exactly once — copy it before closing the modal.
Build the package.
cd mcp npm install npm run buildRegister with Claude Code (user scope — available in every session on this machine).
claude mcp add \ -e TP_API_BASE=https://testing.r-ruiz.com/api \ -e TP_API_TOKEN=<paste-token> \ -s user testing-platform \ -- node "<absolute path to mcp/dist/index.js>"The
-sflag must come after the-eenv vars so the variadic env parser terminates cleanly.--separates the server name from the launch command.Verify:
claude mcp list # should show ✓ Connected next to testing-platform claude mcp get testing-platform # shows full config + scopeThen in any Claude Code session: "list my testing-platform projects" — the server resolves and returns them.
Alternative: project scope. If you'd rather pin the server to this repo only (e.g. to share with a teammate who clones it), commit a
.mcp.jsonat the repo root pointing at./mcp/dist/index.js. Don't do both — Claude Code warns about scope conflicts and picks the project one..env(optional fallback). If you also run the server outside Claude Code (e.g.node dist/index.jsdirectly), copy.env.exampleto.envand paste the token there. Not needed when-eis set in the registration.
Related MCP server: GitLab MCP
Tools
All tools take the configured developer token's privileges — i.e., the same access you have as the user that minted the token in the app.
Tool | What it does |
| Every project the token's user can see. |
| Resolve a name (e.g. "panda eats") to its project. Returns an error listing candidates when ambiguous. |
| Filter the active board or the archive. |
| Full detail including attachments + comment count. |
| Comments on an issue, oldest first. |
| New issue, lands in the New column. |
| Post a comment. Visible immediately to anyone on the board. |
| Patch fields. Note: |
No delete_issue — that lives in the app's UI, on purpose.
Giving an outside developer access to ONE board
You don't have to hand someone a developer-level token (which reaches every board you can see) to let them work a single project. Mint a board-developer token scoped to just that board and give them only that — they never get the keys, the whitelist, or any other board.
In the app, open the project's Tokens button (developer-only).
Pick Access → Full board access, give it a label that names the source (e.g.
Acme Dev (Cursor)), and Generate. Copy thetp_…value — shown once.Hand that token to the developer. They register it in their own Claude Code / VS Code session exactly like the setup above, but with your value:
claude mcp add -e TP_API_BASE=https://testing.r-ruiz.com/api \ -e TP_API_TOKEN=tp_… -s user testing-platform \ -- node "<path to mcp/dist/index.js>"
What that token can do, on that one board only: list/read issues, create issues, comment, and move/update cards (including the same in-review close bypass the MCP service account has). What it can't: see or touch any other board, the whitelist, project settings, members, secrets, or mint more tokens — all of that stays developer-only.
Provenance. Everything the token does shows up on the board under its label as a distinct, non-human source (it files and acts as a service identity named after the label), so it's always clear an action came from that outside session and not from you. Revoke any time from the same Tokens modal — the credential and its board access die immediately.
Notes
Rotation. Lost or leaked? Open the same modal in the app and regenerate; the previous token stops working immediately. Update
mcp/.envwith the new one and restart Claude Code.Revoke. The same modal has a Revoke button that clears the token entirely. Any MCP request afterwards returns 401.
Token scope. A user token (minted from the header key icon) grants the same access as that user in-app — for a developer, every visible project. To confine a session to a single board, use a board-developer token instead (see "Giving an outside developer access to ONE board" above). Neither is yet scoped to individual operations within a board.
Available Tools
9 toolsadd_commentA
Post a comment on an issue. Real-time, visible to anyone watching the board.
AUDIENCE: testers and project owners (restaurant staff, not developers) often read these. Write in plain English. Avoid stack traces, code, error codes, framework names, and acronyms unless the conversation is already deep in technical territory. Prefer 'I checked the login page; the button still doesn't respond on first tap. I think it's because the page hasn't finished loading yet.' over 'Confirmed: event handler is racing the React hydration boundary.' If you must mention something technical (an error message, a file path), put it in a single short line at the end so non-technical readers can stop earlier without losing the gist. Be specific (what you checked, what you found) but concise. These threads can get long.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Plain-English comment body. Keep it readable to non-developers; tuck any technical detail at the bottom. | |
| card_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description mentions 'Real-time' and visibility, but does not disclose side effects, permissions, or error behavior. It adds moderate behavioral context beyond the schema.
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 lengthy with detailed writing style guidelines. While valuable, it could be more concise. The first sentence effectively states the purpose, but the rest adds bulk.
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 is simple with two parameters and no output schema. The description covers purpose and usage style well, but omits error handling, success response, and prerequisites. Adequate but not 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 coverage is 50% (body is described, card_id is not). The description elaborates on body content (plain English, audience) but offers no additional meaning for card_id. It partially compensates for the coverage gap.
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 'Post a comment on an issue' and adds 'Real-time, visible to anyone watching the board.' This distinguishes it from sibling tools like list_comments and create_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 provides audience guidelines (testers and project owners) and writing style tips, but does not explicitly state when to use this tool versus alternatives or when not to use it. No alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueA
Create a new issue in a project. Lands in the New column by default. Use to file bugs you've found, follow-ups from a conversation, etc.
AUDIENCE: titles and descriptions are read by non-developer testers (restaurant staff, project owners). Write them in plain English. Describe what the user sees and what's wrong, not the underlying mechanism. Skip jargon like 'NullReferenceException', 'CORS', 'state hydration', 'race condition', stack traces, or code snippets unless the reporter literally pasted them. Prefer 'The order screen freezes when you tap Add Item twice quickly' over 'POST /orders 500: race in optimistic update'. If technical detail is essential, put it at the bottom under a 'Technical notes' heading so the lay reader can skim past it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional page URL the issue references. | |
| type | No | Defaults to bug. | |
| title | Yes | Short plain-language title (max 255 chars). E.g. 'Printer skips first item on big orders', not 'POS-1742 buffer overflow on order.items[0]'. | |
| project | Yes | Project id or name. | |
| priority | No | Defaults to medium. | |
| description | Yes | Plain-English explanation: what the user did, what they saw, what they expected. Newlines preserved. Save jargon for a 'Technical notes' section at the end if truly needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It reveals that issues land in the 'New column by default', but does not mention authentication, rate limits, or other side effects. The detailed writing guidance is helpful but not behavioral.
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 somewhat long but well-structured with two paragraphs. The first sentence states the main purpose, and the second paragraph adds valuable guidance. Every sentence earns its place, though it could be slightly more 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?
Given 6 parameters (3 required) and no output schema, the description covers the main action, default column, audience, and examples. It does not explain return values, but that's acceptable without an output schema.
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. The description adds value by explaining the audience and writing style for title and description, but does not enumerate or clarify each parameter beyond what the schema already provides.
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 ('Create a new issue') and the resource ('in a project'), and distinguishes from siblings like update_issue and list_issues. It also provides example use cases.
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 tells when to use the tool ('file bugs you've found, follow-ups from a conversation'), and provides extensive audience guidance. However, it does not explicitly exclude alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_projectA
Resolve a free-text project name (e.g. "panda eats") to its id. Use before any other tool that takes a project, unless you already have the numeric id.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Case-insensitive project name or fragment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It communicates the basic function but omits important details such as behavior on no matches or multiple matches, and whether it returns a single id or could return multiple. These gaps reduce 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?
The description is concise with two sentences, each serving a distinct purpose: stating the action and providing usage guidance. There is no extraneous 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 tool with one parameter and no output schema, the description covers the core functionality and usage context adequately. However, it lacks detail on edge cases (e.g., no match, multiple matches) and the return format, which would improve completeness.
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. The description adds minimal value beyond the schema: it provides an example and context ('free-text'), but the schema already describes the parameter as 'Case-insensitive project name or fragment.' Thus, the description does not significantly enhance parameter understanding.
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's purpose: 'Resolve a free-text project name to its id.' It provides a concrete example ('panda eats') and specifies the output (id), making the function immediately understandable. It is distinct from sibling tools, which focus on other operations like adding comments or creating 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 explicitly tells when to use the tool ('Use before any other tool that takes a project') and when not to ('unless you already have the numeric id'). This provides clear decision guidance, which is crucial for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attachmentA
Fetch a screenshot or image attachment uploaded to an issue and return it inline so you can actually SEE the picture. Call this after get_issue whenever the reporter said 'see screenshot', the description references a visual problem, or you need to confirm a UI bug visually before commenting.
Pass the url exactly as it came back in get_issue's attachments array. Only attachments served by this testing platform are allowed; arbitrary external URLs are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Attachment URL from get_issue (absolute https://... or relative /uploads/...). Must point to this platform's uploads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the attachment is returned inline for visual inspection and that external URLs are refused. It could be improved by mentioning error handling or what happens with non-image attachments, but it adequately covers 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs, front-loaded with purpose, and efficiently conveys usage guidance. It is clear and well-structured, though slightly informal in one phrase, but overall 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?
Given the tool's simplicity (one parameter, no output schema), the description is fully complete. It explains when to use, the exact parameter usage, and constraints, leaving no ambiguity for an AI agent to invoke it 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 coverage is 100%, so baseline is 3. The description adds value by instructing to pass the URL exactly as received from get_issue's attachments array, reinforcing the schema's requirement and providing practical 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?
The description clearly states the tool fetches a screenshot or image attachment and returns it inline, with a specific verb and resource. It distinguishes itself from sibling tools, as no other tool deals with fetching attachments.
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 says when to use this tool: after get_issue when the reporter mentions a screenshot, the description references a visual problem, or to confirm a UI bug visually. It also specifies constraints (only platform-served URLs allowed), providing clear guidance on when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issueA
Read a single issue's full detail (description, status, priority, reporter, attachments, counts).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Issue id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The term 'Read' indicates idempotency, and the description lists what information is returned. However, it omits details on error handling, authentication requirements, or rate limits, which a fully transparent description would include.
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, concise sentence that efficiently conveys the purpose with no filler. It is well-structured and to the point, though slightly more detail could be added without harming conciseness.
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 tool with one parameter and no output schema, the description partially explains the return value but does not specify the format or whether it returns the full issue object. It also does not address possible errors or permissions.
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 input schema already covers the single parameter 'id' with 100% coverage. The description adds no additional meaning for the parameter, only stating it reads full details for that issue. Baseline of 3 is appropriate.
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 reads a single issue's full detail, listing key attributes. It distinguishes itself from siblings like 'list_issues' (which lists summaries) and 'get_attachment' (which retrieves attachments specifically).
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 for reading details of one issue, but provides no explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commentsC
List comments on an issue, oldest-first.
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the full burden. It only discloses ordering ('oldest-first') but omits details like whether results are paginated, read-only status, or side effects. The behavioral profile is incomplete.
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, which is concise, but it lacks necessary detail. It is not overly verbose, but it earns its place only partially due to under-specification.
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 of the tool (1 param, no output schema), the description is too sparse. It fails to describe the output format, whether all comments are returned, or any limits. Context is insufficient for confident selection.
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 input schema has 1 parameter (card_id) with 0% description coverage. The description does not explain card_id (e.g., that it is the issue ID) or add any meaning beyond the schema. This is a critical gap.
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: 'List comments on an issue, oldest-first.' It specifies the resource (comments on an issue) and ordering, distinguishing it from sibling tools like add_comment or 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?
No usage guidelines are provided. The description does not mention when to use this tool versus alternatives, nor does it include prerequisites or exclusions. Context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesA
List issues (cards) in a project, optionally filtered. By default returns ACTIVE issues only (new / in_progress / in_review). Set include_archived=true (or status=done/wont_fix) to look at the Archive. Result is paginated; use limit/offset to walk it.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text filter over title + description (applied client-side after fetch). | |
| type | No | ||
| limit | No | Max rows. Default 25, capped at 100. Only honored in archive mode. | |
| offset | No | Pagination offset. Default 0. Only honored in archive mode. | |
| status | No | ||
| project | Yes | Project id (number) or name (string). | |
| priority | No | ||
| reporter | No | Email or display name to match against the card's reporter. | |
| include_archived | No | Include Done / Won't Fix issues. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the free-text filter is applied client-side, pagination is only honored in archive mode, and limit has a cap of 100. This adds significant value beyond the schema.
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, no filler, front-loaded with main action. Every word adds information, making it highly efficient.
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?
Lacks output schema, so return shape is not described. However, pagination and defaults are covered. Given 9 parameters and client-side behavior, the description is mostly complete for a list 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 coverage is 67% with basic descriptions. The description adds value for include_archived/status relationship and client-side filter, but does not elaborate on parameters like type, priority, or reporter 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?
The description explicitly states 'List issues (cards) in a project, optionally filtered' with a specific verb and resource, and clearly differentiates from sibling tools like create_issue or get_issue by focusing on listing.
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 clear when-to-use context, including default behavior (ACTIVE issues only) and how to retrieve archived issues via include_archived or status. It does not explicitly name alternatives but implies the scope clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all testing-platform projects visible to the configured user. Use this when you don't know the project id, or to disambiguate a project name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the behavior as listing all visible projects. It does not explicitly state that it is a read-only operation, but the intent is clear. More detail on what 'visible to the configured user' means could be added.
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, no superfluous words. The description is front-loaded with the action and resource, followed by usage guidance. 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?
Despite no output schema, the description is sufficient for a simple list operation. It covers what is listed and when to use. Could optionally mention the return format, but not required given the tool's straightforward 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?
The input schema has no parameters, so schema coverage is 100%. With 0 parameters, baseline is 4. The description does not need to add parameter-level details, but it correctly implies no input is 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?
The description clearly states it lists all projects visible to the user, with a specific verb ('List') and resource ('testing-platform projects'). It explicitly distinguishes from sibling tool 'find_project' by noting use cases for when project id is unknown or disambiguation is needed.
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 clear guidance on when to use: when the project id is unknown or to disambiguate names. It does not explicitly mention when not to use, but the sibling tools list implies alternatives like 'find_project' for direct lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issueA
Patch fields on an existing issue. Use to change status (move it across columns), reprioritize, retitle, etc.
STATUS CHANGES: moving a card to in_progress (you're picking it up to work on) or in_review (it's ready for the reporter to verify) is part of the normal triage flow. Just do it when it's warranted; you do not need to ask the user for confirmation first. The same goes for moving a stalled card back to new.
When NOT to move silently: terminal states. Moving an in_review card to done / wont_fix is blocked server-side unless the reporter has signed off (this is intentional). For human reporters, post a comment asking them to confirm. For service-account reporters (e.g. yourself), use a non-terminal status or ask the developer.
AUDIENCE: when editing title or description, the same plain-language rules from create_issue apply (non-developer testers read these too). Don't rewrite a reporter-friendly title into a developer-friendly one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| url | No | ||
| type | No | ||
| title | No | ||
| status | No | ||
| priority | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description bears full burden. Discloses that moving to done/wont_fix is blocked unless reporter signed off. Also mentions behavior for service-account reporters. Lacks details on authorization or rate limits, but status change behavior is well covered.
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 multi-paragraph but front-loaded with main purpose. Uses clear section headings for status changes and audience. Every sentence serves a purpose, though could be slightly more 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?
Covers status transition behavior and title/description guidelines thoroughly, with 7 parameters and no output schema. Missing error conditions and full parameter details, but sufficient for common use cases.
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 0%. Description adds meaning for status (explains transition rules) and title/description (plain-language rules), but does not detail id, url, type, or priority. Some parameters like priority are left undocumented.
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 starts with 'Patch fields on an existing issue.' and lists specific examples like status change, reprioritize, retitle. Clearly different from sibling tools like create_issue (create new) and get_issue (read).
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 when to move card silently (in_progress, in_review, stalled->new) and when not to (terminal states blocked server-side). Also provides audience guidelines for title/description edits. Differentiates from add_comment for confirmation scenarios.
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.
9 tool updates
v0.1.0- First observed
add_comment - First observed
create_issue - First observed
find_project - First observed
get_attachment - First observed
get_issue - First observed
list_comments - First observed
list_issues - First observed
list_projects - First observed
update_issue
TDQS
Each tool targets a distinct action: issue CRUD, comments, attachments, project lookup. No two tools have overlapping purposes.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_issue, list_comments, update_issue). No deviations.
9 tools cover the essential operations of a testing platform without redundancy or bloat. Well-scoped for the domain.
Core issue lifecycle (create, read, update, comment, attach) is covered. Minor gaps like project creation or issue deletion are out of expected scope, keeping the set focused.
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
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Task management for people and AI agents, with scoped OAuth access to issues, projects, and docs.
130Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Related MCP Servers
- AlicenseCqualityDmaintenanceConnects Jira with Claude, enabling users to search issues, view issue details, update issues, add comments, and retrieve project information through natural language commands.1981MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to manage GitLab projects by providing tools for issues, milestones, and team reports through a read/write interface. Users can interact with project data using natural language directly within Claude Desktop or Claude Code.-
- AlicenseCqualityCmaintenanceEnables AI-powered automated testing, security scanning, code review, and maintenance tasks directly within Claude Code or desktop.124MIT
- AlicenseNot gradedqualityAmaintenanceEnables agents to read and drive a local-first Kanban board for issue tracking, allowing them to list, create, update, and resolve issues from Claude Code sessions.13MIT
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/naft3r-101/testing-platform-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server