Skip to main content
Glama
norman-finance

Norman Finance MCP Server

Official

update_company_details

Modify company details such as name, address, tax ID, and more on the Norman Finance MCP Server to ensure accurate and up-to-date business information for accounting and tax filing.

Instructions

Update company information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
activity_startNo
addressNo
cityNo
countryNo
nameNo
phoneNo
professionNo
tax_idNo
tax_stateNo
vat_idNo
zip_codeNo

Implementation Reference

  • The core handler function for the 'update_company_details' tool. It updates optional company fields by making a PATCH request to the Norman API after fetching current data.
    @mcp.tool()
    async def update_company_details(
        ctx: Context,
        name: Optional[str] = None,
        profession: Optional[str] = None,
        address: Optional[str] = None,
        zip_code: Optional[str] = None,
        city: Optional[str] = None,
        country: Optional[str] = None,
        vat_id: Optional[str] = None,
        tax_id: Optional[str] = None,
        phone: Optional[str] = None,
        tax_state: Optional[str] = None,
        activity_start: Optional[datetime] = None,
    ) -> Dict[str, Any]:
        """Update company information."""
        api = ctx.request_context.lifespan_context["api"]
        company_id = api.company_id
        
        if not company_id:
            return {"error": "No company available. Please authenticate first."}
        
        company_url = urljoin(config.api_base_url, f"api/v1/companies/{company_id}/")
        
        # Get current company data
        current_data = api._make_request("GET", company_url)
        
        # Update only provided fields
        update_data = {}
        
        if name:
            update_data["name"] = name
        if profession:
            update_data["profession"] = profession
        if address:
            update_data["address"] = address
        if zip_code:
            update_data["zipCode"] = zip_code
        if city:
            update_data["city"] = city
        if country:
            update_data["country"] = country
        if vat_id:
            update_data["vatNumber"] = vat_id
        if tax_id:
            update_data["taxNumber"] = tax_id
        if phone:
            update_data["phoneNumber"] = phone
        if tax_state:
            update_data["taxState"] = tax_state
        if activity_start:
            update_data["activityStart"] = activity_start
    
        # If no fields provided, return current data
        if not update_data:
            return {"message": "No fields provided for update.", "company": current_data}
        
        # Update company data
        updated_company = api._make_request("PATCH", company_url, json_data=update_data)
        return {"message": "Company updated successfully", "company": updated_company} 
  • Main server setup where register_company_tools(server) is called, which in turn registers the update_company_details tool via its @mcp.tool() decorator.
    # Register all tools
    register_client_tools(server)
    register_invoice_tools(server)
    register_tax_tools(server)
    register_transaction_tools(server)
    register_document_tools(server)
    register_company_tools(server)
    register_prompts(server)
    register_resources(server)

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/norman-finance/norman-mcp-server'

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