Skip to main content
Glama

Mallory

linkFindingTicket

Associate an external ticket (Jira, Linear, GitHub, ServiceNow) with one or more Mallory findings, and manage those associations. Actions: link (register a ticket against findings), attach (add more findings to a ticket already registered here), unlink (remove one finding from a ticket), list (what is linked to a finding), connections (which ticketing systems this tenant has configured).

link, attach and unlink WRITE the caller's own organization's data and take effect immediately — call them only when the user has asked for it. list and connections are read-only; call them whenever you need to know what is linked or what is configured.

TWO STEPS, BOTH REQUIRED. This tool does NOT create the ticket. Create it with the ticketing system's own tools, then call this with action "link" to register the id it returned. A ticket you created and did not register is invisible to Mallory: the finding page shows nothing, and from the user's point of view the request silently did not happen.

A CONFIGURED MALLORY TICKETING INTEGRATION IS NOT A PRECONDITION. With provider + external_id, link is a plain database write inside Mallory — it does not contact the ticketing system. Register the id even when "connections" reports nothing ready; that action answers "which systems can I use?", it does not gate linking, and skipping the link because nothing looked ready is the one failure this tool exists to prevent.

NEVER INVENT external_id, url or title. Core stores all three without checking them, and nothing corrects them later on this path, so a guessed id produces a finding that links to a ticket which does not exist. Send exactly what the provider returned when the ticket was created; omit title or url if you were not given them. url must name the same ticket as external_id — if you are not sure they agree, send external_id alone.

A SUCCESSFUL LINK MEANS MALLORY RECORDED THE ID, nothing more. It does not mean the ticket was found, read or verified. Report what you linked; do not tell the user it was checked.

One ticket often covers several findings: pass every relevant finding_uuid in a single link call rather than linking one at a time. Finding uuids come from listFindings, getFinding, or a createFinding outcome. ticket_uuid (needed by attach and unlink) is Mallory's OWN uuid for a ticket already registered here — it comes from a link outcome or the list action, and is NOT the external id like "MAL-123". Re-linking the same ticket is safe: core upserts.

Unlinking removes only the association in Mallory; the ticket stays in its own system. PLAN_LIMIT means findings are not included in this tenant's plan — the request was fine, nothing is broken and nothing was written: say so and do not retry.

Input Schema

NameRequiredDescriptionDefault
urlNoLink to the ticket in its own system (optional on link). Send it when you have it — it is what the finding page links to. It MUST name the same ticket as external_id: nothing checks that on this path, so a url and an id that disagree are both stored and the finding links somewhere its id does not match. If you are unsure they agree, send only external_id.
titleNoThe ticket's title (optional on link). Send the real title the provider gave you when you created the ticket. Do NOT invent one and do NOT guess: nothing enriches it later on this path, so whatever you send is what the finding page shows forever. Omit it if you do not have it.
actionYesThe operation to perform. Required fields depend on the action: link needs finding_uuids + provider + external_id; attach needs ticket_uuid + finding_uuids; unlink needs ticket_uuid + finding_uuid; list needs finding_uuid; connections takes no other fields.
providerNoWhich ticketing system the ticket lives in (required for link): jira, linear, github or servicenow.
external_idNoThe ticket's id in that system (required for link), e.g. 'MAL-123', 'PROJ-88', or 'owner/repo#42' for GitHub. Use the id the provider returned when the ticket was created. Never guess or construct one: core stores it without checking, so a wrong id produces a finding that links to a ticket which does not exist.
ticket_uuidNoMallory's own uuid for a ticket already registered here (required for attach and unlink). This is NOT the external id — get it from a link outcome or from the list action.
finding_uuidNoA single finding (required for unlink and list).
finding_uuidsNoFindings to associate with the ticket (required for link and attach). One ticket can cover several findings — pass them together rather than calling once each.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden and does so thoroughly: it discloses immediate writes, no ticketing-system contact on link, no precondition of a configured integration, no validation of external_id/url/title, upsert safety on re-link, unlink semantics, and PLAN_LIMIT handling. It also correctly frames what a successful link means and does not mean.

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

Conciseness5/5

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

Long but appropriately so for a five-action, eight-parameter tool with critical failure modes. It is front-loaded with purpose and action list, then organized into focused warnings about write actions, the required two-step flow, invented ids, success semantics, and batching.

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

Completeness5/5

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

Given no output schema and no annotations, the description covers what an agent needs to call the tool correctly: action-specific required fields, sources for uuids, write-vs-read behavior, link outcome semantics, and error handling. It does not need to document exact return shapes because no output schema exists, and it still gives enough outcome context for safe use.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all parameters in detail; the description still adds useful workflow semantics, including where finding_uuids come from, how to batch multiple findings, and that ticket_uuid is Mallory's own id rather than an external id. Some of this repeats the schema, but the action-specific guidance and upsert note add value beyond it.

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

Purpose5/5

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

States a specific verb and resource: associate an external ticketing ticket with Mallory findings, with five named actions. It clearly distinguishes the tool from ticket creation by saying it does not create the ticket and by naming listFindings/getFinding/createFinding as sources for finding uuids.

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

Usage Guidelines5/5

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

Explicitly separates write actions (link, attach, unlink) from read-only actions (list, connections) and says to call writes only when the user asked. It also states the required two-step workflow: create the ticket with the provider's own tools, then register it here with action "link".

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources