TaskMan of London

Book London furniture assembly, wall mounting, handyman, electrical, and smart home jobs.

Should I use this

Quality & Safety

A
Description quality
89%
Schema completeness
80%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'find_services' description lacks action verbin find_services
  • LOWTool 'check_service_area' description lacks action verbin check_service_area
  • LOWTool 'get_quote_estimate' description lacks action verbin get_quote_estimate
  • LOWTool 'verify_magic_link_token' description lacks action verbin verify_magic_link_token
  • LOWTool 'update_contact_note' description lacks action verbin update_contact_note

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,964Tokens (tool definitions)
~1.3 KBTypical response size
Significant attention impact (2.32% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "home-services": {
      "url": "https://taskman.london/mcp"
    }
  }
}

Remote endpoints

https://taskman.london/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_services(query, area, urgency)

Use when the user needs help identifying which TaskMan of London service fits their job, especially for vague home-service requests in London.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200
    },
    "area": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80
    },
    "urgency": {
      "type": "string",
      "enum": [
        "flexible",
        "specific_date",
        "urgent"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢check_service_area(postcode, service_type)

Use when the user provides a London postcode or asks whether TaskMan covers their area.

Input Schema

{
  "type": "object",
  "properties": {
    "postcode": {
      "type": "string",
      "minLength": 3,
      "maxLength": 12
    },
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    }
  },
  "required": [
    "postcode"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_quote_estimate(service_type, task_summary, item_count, item_type, brand, ...)

Use when the user asks about likely cost, ballpark pricing, or whether a task needs a custom quote.

Input Schema

{
  "type": "object",
  "properties": {
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "task_summary": {
      "type": "string",
      "minLength": 8,
      "maxLength": 500
    },
    "item_count": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 25
    },
    "item_type": {
      "type": "string",
      "maxLength": 80
    },
    "brand": {
      "type": "string",
      "maxLength": 80
    },
    "wall_type": {
      "type": "string",
      "maxLength": 80
    },
    "photos_provided": {
      "type": "boolean"
    },
    "postcode": {
      "type": "string",
      "maxLength": 12
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "service_type",
    "task_summary"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢check_availability(service_type, postcode, preferred_date, time_preference)

Use when the user asks about dates, timing, or whether a service can likely be booked soon.

Input Schema

{
  "type": "object",
  "properties": {
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "postcode": {
      "type": "string",
      "minLength": 3,
      "maxLength": 12
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time_preference": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening",
        "flexible"
      ]
    }
  },
  "required": [
    "service_type",
    "postcode"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪match_providers(service_type, area_postcode, urgency, preferred_date, location_id)

Use when an agent needs a single deterministic provider-matching result for assignment. Returns an ordered_candidates array sorted best-to-worst, where the first can_assign=true candidate is the assignee.

Input Schema

{
  "type": "object",
  "properties": {
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "area_postcode": {
      "type": "string",
      "minLength": 2,
      "maxLength": 12
    },
    "urgency": {
      "type": "string",
      "enum": [
        "flexible",
        "specific_date",
        "urgent"
      ]
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    }
  },
  "required": [
    "service_type",
    "area_postcode",
    "urgency"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡create_booking_request(customer_name, phone, email, postcode, service_type, ...)

Use when the user is ready to submit details for a real TaskMan of London booking request.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120
    },
    "phone": {
      "type": "string",
      "minLength": 7,
      "maxLength": 25
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "postcode": {
      "type": "string",
      "minLength": 3,
      "maxLength": 12
    },
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "task_summary": {
      "type": "string",
      "minLength": 8,
      "maxLength": 500
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time_preference": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening",
        "flexible"
      ]
    },
    "photos_url": {
      "type": "string",
      "format": "uri"
    },
    "source": {
      "default": "chatgpt_app",
      "type": "string",
      "const": "chatgpt_app"
    },
    "consent_to_contact": {
      "type": "boolean"
    }
  },
  "required": [
    "customer_name",
    "phone",
    "postcode",
    "service_type",
    "task_summary",
    "consent_to_contact"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_booking_status(booking_request_id, phone, email)

Use when the user already has a TaskMan booking request and wants an update.

Input Schema

{
  "type": "object",
  "properties": {
    "booking_request_id": {
      "type": "string",
      "minLength": 4,
      "maxLength": 80
    },
    "phone": {
      "type": "string",
      "minLength": 7,
      "maxLength": 25
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    }
  },
  "required": [
    "booking_request_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪start_trusted_phone_session(identifier)

Use in trusted telephony flows when the caller number is already verified by the channel provider and you need a short-lived booking session without OTP.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 5,
      "maxLength": 200
    }
  },
  "required": [
    "identifier"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪start_customer_verification(identifier, method_preference, channel_preference)

Use when an existing customer wants to verify identity (OTP or magic link) before assistant-led booking.

Input Schema

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "minLength": 5,
      "maxLength": 200
    },
    "method_preference": {
      "default": "auto",
      "type": "string",
      "enum": [
        "otp",
        "magic_link",
        "auto"
      ]
    },
    "channel_preference": {
      "default": "auto",
      "type": "string",
      "enum": [
        "sms",
        "email",
        "auto"
      ]
    }
  },
  "required": [
    "identifier"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪verify_customer_otp(challenge_id, otp_code)

Use after sending an OTP challenge, to verify the one-time passcode and open a short-lived booking session.

Input Schema

{
  "type": "object",
  "properties": {
    "challenge_id": {
      "type": "string",
      "minLength": 8,
      "maxLength": 120
    },
    "otp_code": {
      "type": "string",
      "pattern": "^\\d{4,8}$"
    }
  },
  "required": [
    "challenge_id",
    "otp_code"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪verify_magic_link_token(token)

Use when the customer clicks a magic link and provides the token for verification.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "minLength": 24,
      "maxLength": 4000
    }
  },
  "required": [
    "token"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_customer_profile(session_token)

Use after verification to load scoped customer profile details from CRM for booking.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    }
  },
  "required": [
    "session_token"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢list_customer_addresses(session_token)

Use after verification to list saved addresses linked to the verified customer.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    }
  },
  "required": [
    "session_token"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢list_service_types(session_token)

Use after verification to show supported service types before collecting booking details.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    }
  },
  "required": [
    "session_token"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_customer_availability(session_token, service_type, address_id, preferred_date, time_preference)

Use after verification to check availability for a verified customer at a selected saved address.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "address_id": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time_preference": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening",
        "flexible"
      ]
    }
  },
  "required": [
    "session_token",
    "service_type"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡start_booking_payment(session_token, contact_id, service_type, task_summary, preferred_date, ...)

Use after collecting booking details to create a Stripe checkout payment session before final booking submission.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "contact_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "task_summary": {
      "type": "string",
      "minLength": 8,
      "maxLength": 500
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "address_id": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120
    },
    "deposit_amount_minor": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500000
    }
  },
  "required": [
    "session_token",
    "service_type",
    "task_summary"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_booking_payment_status(session_token, payment_session_id)

Use to check whether a booking payment session is pending, paid, failed, canceled, or expired before attempting booking creation.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "payment_session_id": {
      "type": "string",
      "minLength": 6,
      "maxLength": 200
    }
  },
  "required": [
    "session_token",
    "payment_session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡create_customer_booking(session_token, contact_id, service_type, task_summary, payment_session_id, ...)

Use after verification, detail collection, and confirmed paid payment session to create a booking scoped to the verified customer.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "contact_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "service_type": {
      "type": "string",
      "enum": [
        "furniture_assembly",
        "wall_mounting",
        "handyman",
        "electrician",
        "smart_home_installation"
      ]
    },
    "task_summary": {
      "type": "string",
      "minLength": 8,
      "maxLength": 500
    },
    "payment_session_id": {
      "type": "string",
      "minLength": 6,
      "maxLength": 200
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 200
    },
    "address_id": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120
    },
    "preferred_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time_preference": {
      "type": "string",
      "enum": [
        "morning",
        "afternoon",
        "evening",
        "flexible"
      ]
    },
    "photos_url": {
      "type": "string",
      "format": "uri"
    },
    "consent_to_contact": {
      "default": true,
      "type": "boolean"
    }
  },
  "required": [
    "session_token",
    "service_type",
    "task_summary",
    "payment_session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡update_contact_note(session_token, note)

Use to append an internal CRM note for the verified customer during or after booking.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "note": {
      "type": "string",
      "minLength": 4,
      "maxLength": 2000
    }
  },
  "required": [
    "session_token",
    "note"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡tag_contact(session_token, tags)

Use to add CRM tags to the verified customer for booking workflow tracking.

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "minLength": 20,
      "maxLength": 300
    },
    "tags": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80
      }
    }
  },
  "required": [
    "session_token",
    "tags"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Recommended Prompts

search_research
Search for information about [topic] using TaskMan of London
Expected tools: find_services
find_specific
Find [specific item] using TaskMan of London
Expected tools: find_services
retrieve_data
Get details about [item] from TaskMan of London
Expected tools: get_quote_estimate
fetch_info
Fetch [information type] using TaskMan of London
Expected tools: get_quote_estimate
list_items
List all [items] available in TaskMan of London
Expected tools: list_customer_addresses

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded20 tools