{"apiVersion":"v1","directorySlug":"findmaid-mcp-36e97caad5","title":"Findmaid","description":"Findmaid — find your helper in Singapore at a fraction of the usual agency fee. Chat with our AI assistant, interview with our CEI-certified staff.","pageUrl":"https://www.mcpbundles.com/skills/findmaid-mcp-36e97caad5","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.findmaid.com.sg/mcp","hostedMcpUrl":null,"toolCount":8,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"sg.com.findmaid/findmaid-mcp-36e97caad5","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"search_mdw","description":"Search Goodplus for MDW (maid) candidates matching the customer, via the LIVE structured search. Returns up to `limit` ranked candidates, each with a `match_score`, `match_reasons` (use these to explain WHY each fits), and a `bio_data_url` — share that link for full details (there is NO separate profile tool). Split needs into two buckets: `hard` = deal-breakers (AND filter — a candidate is EXCLUDED unless every hard criterion passes; use ONLY for firm must-haves like a halal/no-pork household o","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"hard":{"type":"object","properties":{"duties":{"type":"array","items":{"type":"string"}},"pet_cat":{"type":"boolean"},"pet_dog":{"type":"boolean"},"age_range":{"type":"array","items":{"type":"number"}},"languages":{"type":"array","items":{"type":"string"}},"rest_days":{"type":"number","minimum":0},"max_salary":{"type":"number","minimum":0,"multipleOf":0.01},"no_beef_ok":{"type":"boolean"},"no_pork_ok":{"type":"boolean"},"helper_type":{"type":"array","items":{"enum":["fresh","ex_abroad","ex_sg","experienced","transfer_a","transfer_b","transfer"],"type":"string"}},"infant_care":{"type":"boolean"},"nationality":{"type":"array","items":{"type":"string"}},"recommended":{"type":"boolean"},"video_ready":{"type":"boolean"},"toddler_care":{"type":"boolean"},"min_contracts":{"type":"number","minimum":1},"work_with_helper":{"type":"boolean"},"max_sibling_order":{"type":"number","minimum":1},"sleep_arrangement":{"enum":["Own Room","Shared Room","Common Area","Other Arrangement"],"type":"string"},"min_language_level":{"type":"number","minimum":1},"min_experience_years":{"type":"number"},"completed_contract_household_background":{"type":"array","items":{"enum":["CHINESE","CN_CHINESE","SG_CHINESE","MY_CHINESE","HK_CHINESE","MO_CHINESE","TW_CHINESE","MALAY","INDIAN","WESTERN","MIXED","OTHER"],"type":"string"}}}},"soft":{"type":"object","properties":{"duties":{"type":"array","items":{"type":"string"}},"pet_cat":{"type":"boolean"},"pet_dog":{"type":"boolean"},"age_range":{"type":"array","items":{"type":"number"}},"languages":{"type":"array","items":{"type":"string"}},"rest_days":{"type":"number","minimum":0},"max_salary":{"type":"number","minimum":0,"multipleOf":0.01},"no_beef_ok":{"type":"boolean"},"no_pork_ok":{"type":"boolean"},"helper_type":{"type":"array","items":{"enum":["fresh","ex_abroad","ex_sg","experienced","transfer_a","transfer_b","transfer"],"type":"string"}},"infant_care":{"type":"boolean"},"nationality":{"type":"array","items":{"type":"string"}},"recommended":{"type":"boolean"},"video_ready":{"type":"boolean"},"toddler_care":{"type":"boolean"},"min_contracts":{"type":"number","minimum":1},"work_with_helper":{"type":"boolean"},"max_sibling_order":{"type":"number","minimum":1},"sleep_arrangement":{"enum":["Own Room","Shared Room","Common Area","Other Arrangement"],"type":"string"},"min_language_level":{"type":"number","minimum":1},"min_experience_years":{"type":"number"},"completed_contract_household_background":{"type":"array","items":{"enum":["CHINESE","CN_CHINESE","SG_CHINESE","MY_CHINESE","HK_CHINESE","MO_CHINESE","TW_CHINESE","MALAY","INDIAN","WESTERN","MIXED","OTHER"],"type":"string"}}}},"limit":{"type":"number"},"weights":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"customer_id":{"type":"number"},"exclude_ids":{"type":"array","items":{"type":"string"}},"allow_near_miss":{"type":"boolean"}}},"title":"search_mdw","logicalName":"search_mdw","displayName":"search_mdw","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_availability","description":"Check whether an MDW candidate is still available (offerable) right now, by ID — backed by the LIVE Goodplus availability check. NOTE: search_mdw already returns ONLY currently-available candidates, so do NOT re-check right after a search. Use this for a candidate shown EARLIER whose availability may have changed since — e.g. the customer returns to the chat days/weeks later and asks about someone from before. Returns { id, available }; an id Goodplus no longer recognises comes back as not avail","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"title":"check_availability","logicalName":"check_availability","displayName":"check_availability","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"lookup_mdw","description":"Resolve a helper the employer NAMES (full or partial) into concrete candidate(s) — use this when the customer is interested in a SPECIFIC helper they already saw (on the website, a flyer, word of mouth) rather than describing requirements. Case-insensitive name match over the offerable pool; returns `matches` (id, full `name`, nationality, age, experience, `available`, bio-data/photo/video) and `truncated` when more matched than `limit`. Then: ONE match → confirm by name and `link_helper` her to","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string"},"limit":{"type":"number"}}},"title":"lookup_mdw","logicalName":"lookup_mdw","displayName":"lookup_mdw","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"request_interview","description":"Submit a request to interview a SPECIFIC helper for the current customer (LIVE Goodplus). First collect the customer's preferred timing — ROUGH (e.g. \"weekday evenings next week\") or PRECISE (specific slots) — then call this. Goodplus staff coordinate with the helper's supplier and resolve it: confirm a Google Meet link (arranged), send back available time windows (the customer reconsiders and you re-request with the chosen time), or report the helper unreachable (withdrawn — a valid outcome). R","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["mdw_id","preferred_timing"],"properties":{"mdw_id":{"type":"string"},"customer_id":{"type":"number"},"employer_note":{"type":"string"},"preferred_timing":{"type":"object","required":["mode","note"],"properties":{"mode":{"enum":["rough","precise"],"type":"string"},"note":{"type":"string"},"windows":{"type":"array","items":{"type":"object","properties":{"end":{"type":"string"},"start":{"type":"string"}}}}}}}},"title":"request_interview","logicalName":"request_interview","displayName":"request_interview","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_interview_status","description":"Check how an interview request was resolved, by its `request_id` (from request_interview). Use it when the customer asks for an update, or when you return to an earlier request. Returns the outcome: status + a `result` block — `arranged` (a Google Meet link + scheduled_at to share), `time_proposed` (available windows to relay so the customer can pick one, then re-request with that time), `withdrawn` (the helper is no longer available — offer fresh matches), `requested` (still pending), or `cance","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["request_id"],"properties":{"request_id":{"type":"string"}}},"title":"get_interview_status","logicalName":"get_interview_status","displayName":"get_interview_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_skill_version","description":"Report whether the caller's installed Findmaid skill is up to date. Pass `installed_version` (the version baked into the skill you are running) and optionally `skill` (defaults to \"find-a-maid\"). Returns the latest published version, how many releases you are `behind_by`, a `status` (current/behind/ahead/unknown), and a one-line `summary` of what is new. If the status is \"behind\", mention it to the user ONCE, softly, and point them to findmaid.com.sg/connect to re-download — never block the task","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"skill":{"type":"string"},"installed_version":{"type":"string"}}},"title":"check_skill_version","logicalName":"check_skill_version","displayName":"check_skill_version","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_profile_pdf","description":"Fetch a candidate's full bio-data, by their MDW `id` (from a search_mdw match). Two uses: (1) read details that exist ONLY in the bio-data — notably the MOM employment records, whose per-contract job scope lets you verify a \"has completed a Singapore contract doing X\" requirement that search_mdw can't confirm (it returns only the count of finished contracts, not what each involved); and (2) a fallback to read a profile when your client can't open the bio_data_url link itself (a sandboxed assista","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"title":"get_profile_pdf","logicalName":"get_profile_pdf","displayName":"get_profile_pdf","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_verification","description":"Call this after the user indicates they finished the one-time Singpass verification (e.g. they say \"done\"). It checks whether THIS device is now verified and, if so, completes the interview booking they had started — no need to re-ask the helper or timing. Takes no input.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"check_verification","logicalName":"check_verification","displayName":"check_verification","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Findmaid&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuZmluZG1haWQuY29tLnNnL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Findmaid%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.findmaid.com.sg%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Findmaid%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.findmaid.com.sg%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Findmaid&connectorUrl=https%3A%2F%2Fmcp.findmaid.com.sg%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Findmaid\" --url \"https://mcp.findmaid.com.sg/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/findmaid-mcp-36e97caad5","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/findmaid-mcp-36e97caad5/tools/{tool}","mcpServerUrl":"https://mcp.findmaid.com.sg/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/findmaid-mcp-36e97caad5?live=1"}