Skip to main content
Glama
effytech

Freshdesk MCP server

by effytech

create_contact_field

Add custom contact fields in Freshdesk to store and organize specific customer information, enhancing support ticket management and personalization.

Instructions

Create a contact field in Freshdesk.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contact_field_fieldsYes

Implementation Reference

  • The handler function for create_contact_field tool that validates input using ContactFieldCreate schema, makes POST request to Freshdesk API /contact_fields endpoint to create the field, and returns the response.
    @mcp.tool()
    async def create_contact_field(contact_field_fields: Dict[str, Any]) -> Dict[str, Any]:
        """Create a contact field in Freshdesk."""
        # Validate input using Pydantic model
        try:
            validated_fields = ContactFieldCreate(**contact_field_fields)
            # Convert to dict for API request
            contact_field_data = validated_fields.model_dump(exclude_none=True)
        except Exception as e:
            return {"error": f"Validation error: {str(e)}"}
        url = f"https://{FRESHDESK_DOMAIN}/api/v2/contact_fields"
        headers = {
            "Authorization": f"Basic {base64.b64encode(f'{FRESHDESK_API_KEY}:X'.encode()).decode()}"
        }
        async with httpx.AsyncClient() as client:
            response = await client.post(url, headers=headers, json=contact_field_data)
            return response.json()
  • Pydantic BaseModel schema defining the structure and validation rules for the input parameters to create_contact_field tool.
    class ContactFieldCreate(BaseModel):
        label: str = Field(..., description="Display name for the field (as seen by agents)")
        label_for_customers: str = Field(..., description="Display name for the field (as seen by customers)")
        type: str = Field(
            ...,
            description="Type of the field",
            pattern="^(custom_text|custom_paragraph|custom_checkbox|custom_number|custom_dropdown|custom_phone_number|custom_url|custom_date)$"
        )
        editable_in_signup: bool = Field(
            default=False,
            description="Set to true if the field can be updated by customers during signup"
        )
        position: int = Field(
            default=1,
            description="Position of the company field"
        )
        required_for_agents: bool = Field(
            default=False,
            description="Set to true if the field is mandatory for agents"
        )
        customers_can_edit: bool = Field(
            default=False,
            description="Set to true if the customer can edit the fields in the customer portal"
        )
        required_for_customers: bool = Field(
            default=False,
            description="Set to true if the field is mandatory in the customer portal"
        )
        displayed_for_customers: bool = Field(
            default=False,
            description="Set to true if the customers can see the field in the customer portal"
        )
        choices: Optional[List[Dict[str, Union[str, int]]]] = Field(
            default=None,
            description="Array of objects in format {'value': 'Choice text', 'position': 1} for dropdown choices"
        )
  • Registration of the create_contact_field tool using the @mcp.tool() decorator.
    @mcp.tool()

Latest Blog Posts

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/effytech/freshdesk_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server