Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port (default `8080`). Set automatically by Cloud Run.8080
MCP_TOKENYesBearer token your MCP client sends in `Authorization: Bearer <token>`. Generate any random secret. Required for HTTP mode.
MCP_TRANSPORTNoSet to `http` for HTTP transport (default in the Docker image).http
FRESHDESK_DOMAINYesFreshdesk subdomain only — e.g. `mycompany` (not `mycompany.freshdesk.com`)
FRESHDESK_API_KEYYesFreshdesk API key. Find it at Profile → Profile Settings → API Key.
GCP_VISION_PROJECTNoGCP project ID for Vision OCR. If unset, image OCR tools return an error.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
batch_get_ticket_summariesA

Fetch full summaries for multiple tickets in a single call. Each summary includes ticket details, all conversations, and attachment list. Use this instead of calling get_ticket_summary repeatedly — it fetches all tickets in parallel server-side, which is significantly faster. Typical workflow: 1. search_tickets or list_tickets → get list of ticket IDs 2. batch_get_ticket_summaries with those IDs → get all summaries at once Returns array of summaries in the same format as get_ticket_summary.

find_agentA

Search Freshdesk agents by name or email. Returns agent_id which can be passed to search_tickets agent_id to find tickets assigned to that agent.

find_companyA

Search Freshdesk companies by name. Returns company_id which can be used in search_tickets to find all tickets from a specific organisation. Example: find_company query='Defence' then search_tickets company_id=.

find_image_attachmentsA

Scan multiple tickets at once and return all image attachments (png, jpg, jpeg). Typical workflow: 1. search_tickets → get list of ticket IDs 2. find_image_attachments with those IDs → find screenshots 3. get_attachment_text on attachment_id → OCR the image

find_requesterA

Search Freshdesk contacts by name or email. Returns requester_id which can then be passed to search_tickets to find all tickets submitted by that person.

get_attachment_textA

Extract text from a Freshdesk ticket attachment. Supported formats: - .docx: Word documents → plain text - .xlsx: Excel spreadsheets → tab-separated rows per sheet - .json: JSON files → pretty printed - .txt: plain text - .csv: CSV files → plain text - .png .jpg .jpeg: screenshots and images → OCR via Google Vision API Use list_attachments first to get the attachment_id. Ideal for reading investigation reports, domain lists, DNS screenshots and phishing page captures.

get_conversationsA

Get all replies, notes and email threads for a Freshdesk ticket. Returns body_text (plain text, HTML stripped), incoming=true means customer sent it, incoming=false means agent sent it. Use this to understand the full investigation history, analyst notes, and customer communications.

get_description_imagesA

Extract and OCR inline images embedded in a ticket's description HTML body. Some tickets contain screenshots pasted directly into the description rather than uploaded as file attachments — these are not visible via list_attachments. Use this tool when get_ticket_summary shows a non-empty description but list_attachments finds no images, or when the description mentions a screenshot/table/log. Returns OCR text from each inline image found.

get_ticketA

Retrieve a single Freshdesk support ticket by its numeric ID. Returns full details including id, subject, status, type, priority, due_by, is_escalated, created_at, tags and custom_fields (cf_impact, cf_urgency, cf_category, cf_subcategory, cf_domain).

get_ticket_summaryA

Retrieve a complete summary of a Freshdesk ticket in one call: ticket details, all conversation replies and notes, and list of attachments. Use this as the first tool when investigating a specific ticket — it gives everything needed to understand the full context without multiple round trips. Returns: - ticket: id, subject, status, type, priority, due_by, is_escalated, custom_fields - conversations: all replies and notes with body_text and direction (incoming=customer, outgoing=agent) - attachments: list of files with id, name, content_type, size (use get_attachment_text to read them)

list_attachmentsA

List all attachments on a Freshdesk ticket including files in conversation replies. Returns attachment id, name, content_type and size in bytes. Always call this before get_attachment_text, query_attachment or find_image_attachments to discover attachment IDs.

list_groupsA

List all Freshdesk agent groups. Returns group id and name. Use this to find the group_id for filtering tickets by team. Example workflow: list_groups → find "Threat Intelligence" id → search_tickets group_id= Known groups:

list_ticketsA

Return all Freshdesk tickets with full fields for reporting and analysis. All filters are optional. Filters: - status: 2=open, 3=pending, 4=resolved, 5=closed - priority: 1=low, 2=medium, 3=high, 4=urgent - type: "False Positive", "False Negative", "Service Request", "Incident" - created_after / created_before: ISO8601 e.g. "2026-06-01T00:00:00Z" Use this for bulk analysis - e.g. all false positives this month, all high priority open tickets. For company or requester filtering use search_tickets instead.

query_attachmentB

Search within a JSON attachment on a Freshdesk ticket. Useful for finding specific domains or threat feeds in large JSON files.

search_ticketsA

Search and filter Freshdesk tickets. All fields are optional. Filters: - query: text matched against subject or type - status: 2=open, 3=pending, 4=resolved, 5=closed - priority: 1=low, 2=medium, 3=high, 4=urgent - type: "False Positive", "False Negative", "Service Request", "Incident" - overdue: true = tickets past due_by that are still open or pending - is_escalated: true = escalated tickets only - created_after / created_before: ISO8601 date e.g. "2026-06-01T00:00:00Z" - requester_id: from find_requester tool - company_id: from find_company tool Examples: Overdue tickets: {"overdue": true} Open false positives: {"type": "False Positive", "status": 2} High priority open: {"status": 2, "priority": 3} All tickets from Defence: first call find_company query="Defence", then use company_id

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have distinct purposes, but search_tickets and list_tickets overlap significantly in filtering tickets. The presence of both get_ticket and get_ticket_summary, as well as batch_get_ticket_summaries, could cause confusion about which to use when.

Naming Consistency4/5

Naming mostly follows a verb_noun pattern (find_company, search_tickets, get_ticket, list_attachments), with minor deviations like 'query_attachment' instead of a consistent verb like 'search'. Overall consistent and predictable.

Tool Count4/5

15 tools is a reasonable count for a Freshdesk integration covering search, retrieval, and attachment handling. Slightly heavy but each tool adds value.

Completeness4/5

Covers key read operations (search, get, list) and attachment extraction, but lacks create/update/delete for tickets, which may be needed for a full lifecycle. Missing tools for modifying tickets or adding notes.

Maintenance

ActivityActive
ResponsivenessNo issues