Freshservice MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SSL_CERT_FILE | No | Path to CA bundle for corporate proxy with SSL inspection (optional) | |
| FRESHSERVICE_APIKEY | Yes | Your Freshservice API key | |
| FRESHSERVICE_DOMAIN | Yes | Your Freshservice domain (e.g., yourcompany.freshservice.com) |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_ticketsA | List all tickets with pagination. Args: page: Page number (starts at 1). per_page: Results per page (max 100). |
| get_ticket_by_idA | Retrieve a single ticket by ID, including conversations and stats. Args: ticket_id: The numeric ticket ID. |
| create_ticketA | Create a new Freshservice ticket. Args: subject: Ticket subject line. description: Ticket description (HTML supported). email: Requester email. Creates a new contact if not found. priority: 1=Low, 2=Medium, 3=High, 4=Urgent. status: 2=Open, 3=Pending, 4=Resolved, 5=Closed. source: 1=Email, 2=Portal, 3=Phone, 4=Chat, 9=Walkup, 10=Slack. type: Ticket type (default "Incident"). group_id: ID of assigned agent group. responder_id: ID of assigned agent. department_id: Department ID. category: Ticket category. sub_category: Ticket sub-category. tags: List of tags. cc_emails: CC email addresses. custom_fields: Custom field key-value pairs. workspace_id: Workspace ID (for multi-workspace accounts). |
| update_ticketA | Update an existing ticket. Args: ticket_id: The ticket ID to update. updates: Dictionary of fields to update. Common fields: status, priority, group_id, responder_id, subject, description, category, tags, custom_fields, etc. |
| delete_ticketA | Trash a ticket (soft delete). Args: ticket_id: The ticket ID to delete. |
| filter_ticketsA | Filter tickets using Freshservice query language. The query MUST be wrapped in double quotes. Examples: "status:2" — open tickets "priority:4" — urgent tickets "agent_id:1234 AND status:2" "group_id:5 AND priority:>2" "created_at:>'2024-01-01'" Args: query: Freshservice filter query string (must be in double quotes). page: Page number. per_page: Results per page (max 100). |
| get_ticket_fieldsA | Retrieve all ticket field definitions (built-in and custom). |
| list_ticket_conversationsA | List all conversations (replies and notes) for a ticket. Args: ticket_id: The ticket ID. page: Page number. per_page: Results per page (max 100). |
| reply_to_ticketA | Reply to a ticket (visible to requester). Args: ticket_id: The ticket ID. body: Reply body (HTML supported). cc_emails: Optional CC email addresses. |
| add_ticket_noteA | Add a note to a ticket. Args: ticket_id: The ticket ID. body: Note body (HTML supported). private: True for private (agent-only) note, False for public. |
| delete_ticket_noteB | Delete a note from a ticket. Args: ticket_id: The ticket ID. conversation_id: The conversation (note) ID to delete. |
| get_changesA | List all changes with optional filtering. Args: page: Page number. per_page: Results per page (max 100). query: Optional filter query, MUST be in double quotes. E.g. "status:3", "approval_status:1 AND status:<6". |
| filter_changesA | Filter changes with advanced queries. Query MUST be wrapped in double quotes. Examples: "status:3" — awaiting approval "approval_status:1" — approved "approval_status:1 AND status:<6" — approved but not closed Args: query: Freshservice filter query string. page: Page number. per_page: Results per page. |
| get_change_by_idB | Retrieve a single change by ID. Args: change_id: The change ID. |
| create_changeA | Create a new change request. Args: requester_id: ID of the requester. subject: Change subject. description: Change description (HTML supported). priority: 1=Low, 2=Medium, 3=High, 4=Urgent. impact: 1=Low, 2=Medium, 3=High. status: 1=Open, 2=Planning, 3=Awaiting Approval, 4=Pending Release, 5=Pending Review, 6=Closed. risk: 1=Low, 2=Medium, 3=High, 4=Very High. change_type: 1=Minor, 2=Standard, 3=Major, 4=Emergency. planned_start_date: ISO 8601 datetime string. planned_end_date: ISO 8601 datetime string. group_id: Agent group ID. workspace_id: Workspace ID. custom_fields: Custom field key-value pairs. |
| update_changeA | Update an existing change request. Args: change_id: The change ID. change_fields: Dictionary of fields to update. Common fields: status, priority, impact, risk, subject, description, group_id, etc. |
| close_changeB | Close a change with a result explanation. Args: change_id: The change ID. change_result_explanation: Explanation of the change result. |
| delete_changeB | Delete a change request. Args: change_id: The change ID. |
| get_change_tasksC | Get all tasks associated with a change. Args: change_id: The change ID. |
| create_change_noteA | Add a note to a change request. Args: change_id: The change ID. body: Note body (HTML supported). private: True for agent-only note, False for public. |
| get_assetsA | List all assets with pagination. Args: page: Page number. per_page: Results per page (max 100). |
| get_asset_by_idA | Retrieve a single asset by its display ID. Args: display_id: The asset display ID. |
| search_assetsA | Search assets by various fields. Query examples: "name:'Dell Laptop'" "asset_tag:'ASSET-001'" "serial_number:'SN123'" "asset_state:'In Use'" Args: query: Asset search query. page: Page number. per_page: Results per page. |
| filter_assetsB | Filter assets using Freshservice query language. Args: query: Filter query. E.g. "asset_type_id:1", "department_id:5". page: Page number. per_page: Results per page. |
| create_assetA | Create a new asset. Args: name: Asset name. asset_type_id: Asset type ID (from get_asset_types). description: Asset description. impact: 1=Low, 2=Medium, 3=High. user_id: User assigned to the asset. department_id: Department ID. location_id: Location ID. agent_id: Agent managing the asset. asset_tag: Custom asset tag. custom_fields: Custom field key-value pairs. |
| update_assetB | Update an existing asset. Args: display_id: The asset display ID. updates: Dictionary of fields to update. |
| delete_assetA | Delete an asset (soft delete / trash). Args: display_id: The asset display ID. |
| get_asset_typesA | List all asset types. Args: page: Page number. per_page: Results per page. |
| get_requestersA | List all requesters with pagination. Args: page: Page number. per_page: Results per page (max 100). |
| get_requester_by_idB | Retrieve a single requester by ID. Args: requester_id: The requester ID. |
| filter_requestersC | Filter requesters. Query examples: email, name, department, etc. Args: query: Filter query string. page: Page number. per_page: Results per page. |
| create_requesterB | Create a new requester / contact. Args: first_name: Requester first name. email: Requester email address. last_name: Requester last name. phone: Phone number. department_ids: List of department IDs. custom_fields: Custom fields. |
| get_agentsA | List all agents with pagination. Args: page: Page number. per_page: Results per page (max 100). |
| get_agent_by_idB | Retrieve a single agent by ID. Args: agent_id: The agent ID. |
| filter_agentsC | Filter agents by various criteria. Args: query: Filter query (e.g. email, name, department, active status). page: Page number. per_page: Results per page. |
| get_agent_groupsB | List all agent groups. Args: page: Page number. per_page: Results per page. |
| get_agent_group_by_idB | Get details of a specific agent group. Args: group_id: The group ID. |
| get_requester_groupsB | List all requester groups. Args: page: Page number. per_page: Results per page. |
| get_requester_group_by_idC | Get details of a specific requester group. Args: group_id: The group ID. |
| get_productsB | List all products. Args: page: Page number. per_page: Results per page. |
| get_product_by_idB | Get details of a specific product. Args: product_id: The product ID. |
| get_workspacesB | List all workspaces. Args: page: Page number. per_page: Results per page. |
| get_canned_response_foldersA | List all canned response folders. |
| get_canned_responses_in_folderA | List all canned responses within a folder. Args: folder_id: The canned response folder ID. |
| get_canned_responseC | Get a specific canned response by ID. Args: response_id: The canned response ID. |
| get_solution_categoriesC | List all solution (knowledge base) categories. Args: page: Page number. per_page: Results per page. |
| get_solution_category_by_idA | View a specific solution category. Args: category_id: The category ID. |
| create_solution_categoryC | Create a new solution category. Args: name: Category name. description: Category description. |
| get_solution_foldersA | List all solution folders in a category. Args: category_id: The parent category ID. page: Page number. per_page: Results per page. |
| get_solution_folder_by_idB | View a specific solution folder. Args: folder_id: The folder ID. |
| create_solution_folderA | Create a new solution folder. Args: category_id: Parent category ID. name: Folder name. description: Folder description. visibility: 1=All, 2=Logged-in users, 3=Agents only. |
| get_solution_articlesA | List all solution articles in a folder. Args: folder_id: The parent folder ID. page: Page number. per_page: Results per page. |
| get_solution_article_by_idC | View a specific solution article. Args: article_id: The article ID. |
| create_solution_articleA | Create a new solution article. Args: folder_id: Parent folder ID. title: Article title. description: Article body (HTML supported). status: 1=Draft, 2=Published. article_type: 1=Permanent, 2=Workaround. tags: Optional list of tags. |
| search_solution_articlesB | Search solution articles by keyword. Args: search_term: Text to search for in articles. |
| get_problemsA | List all problems with pagination. Args: page: Page number. per_page: Results per page (max 100). |
| get_problem_by_idB | Retrieve a single problem by ID. Args: problem_id: The problem ID. |
| create_problemB | Create a new problem. Args: subject: Problem subject. description: Problem description (HTML). requester_id: Requester ID. priority: 1=Low, 2=Medium, 3=High, 4=Urgent. impact: 1=Low, 2=Medium, 3=High. status: 1=Open, 2=Change Requested, 3=Closed. group_id: Agent group ID. custom_fields: Custom fields. |
| get_departmentsB | List all departments. Args: page: Page number. per_page: Results per page. |
| get_department_by_idB | View a specific department. Args: department_id: The department ID. |
| get_locationsC | List all locations. Args: page: Page number. per_page: Results per page. |
| get_softwareB | List all software entries. Args: page: Page number. per_page: Results per page. |
| get_software_by_idC | View a specific software entry. Args: software_id: The software ID. |
| get_vendorsA | List all vendors. Args: page: Page number. per_page: Results per page. |
| get_service_catalog_itemsB | List all service catalog items. Args: page: Page number. per_page: Results per page. |
| get_service_catalog_itemB | View a specific service catalog item. Args: item_id: The service catalog item ID. |
| get_announcementsA | List all announcements. Args: page: Page number. per_page: Results per page. |
| get_contractsB | List all contracts. Args: page: Page number. per_page: Results per page. |
| get_contract_by_idC | View a specific contract. Args: contract_id: The contract ID. |
| get_purchase_ordersB | List all purchase orders. Args: page: Page number. per_page: Results per page. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/matthewlboyd/freshservice-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server