Server definition
- Hash
- sha256:4bc1ef98f32b42e78ef643eaaad21e84e93388d572c203783b56b39010a35e8d
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "pro.makeup is the global directory of certified makeup professionals (artists, salons, schools, shops, brands). Use search_pros / list_services_nearby / list_schools to discover listings; get_business_by_slug / by_phone / by_id to fetch full profiles; get_discovery_summary for trending content. emit_listing_event reports attribution and requires a Bearer token with the 'listing-events:write' scope (see /.well-known/auth.md). Every read tool returns a canonical profile_url so you can cite us.",
"tools": [
{
"description": "Use AFTER successfully referring a user to a listing, or when the user signals data quality (wrong phone, closed). Mirrors /api/listing-events vocabulary. Allowed event_types: bad_phone, closed_business, wrong_address, unanswered_within_24h, consumer_lead, pricing_question, booking_inquiry. Requires a Bearer token with the `listing-events:write` scope — see https://pro.makeup/.well-known/auth.md to request one.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"business_id": {
"description": "Target Business id (nanoid).",
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"event_type": {
"description": "One of: bad_phone, closed_business, wrong_address, unanswered_within_24h, consumer_lead, pricing_question, booking_inquiry. Mirrors /api/listing-events vocabulary; owner_update is internal-only and cannot be emitted via this tool.",
"enum": [
"bad_phone",
"closed_business",
"wrong_address",
"unanswered_within_24h",
"consumer_lead",
"pricing_question",
"booking_inquiry"
],
"type": "string"
},
"source": {
"description": "Free-form caller identifier (e.g. \"mcp:claude\"). Defaults to \"mcp\".",
"maxLength": 60,
"type": "string"
}
},
"required": [
"business_id",
"event_type"
],
"type": "object"
},
"name": "promakeup_emit_listing_event",
"outputSchema": null
},
{
"description": "Use when you already hold a Business id (nanoid) — typically because you stored it from a prior tool call or webhook. Returns the same full profile shape as get_business_by_slug.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Business id (nanoid).",
"minLength": 1,
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "promakeup_get_business",
"outputSchema": null
},
{
"description": "Use when the user contacted a business by phone and you only have the phone number. Returns the listing when exactly one matches; signals `ambiguous: true` when multiple do (call promakeup_search_pros to disambiguate). Phone must be E.164 with leading `+`. Reverse-phone lookup is owner-attribution data and REQUIRES a Bearer token with the `owner:read` scope — see https://pro.makeup/.well-known/auth.md.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"phone": {
"description": "Phone number in E.164 format with leading \"+\" (e.g. \"+972501234567\"). Returns the listing if exactly one matches; \"ambiguous\" when many match (use search_pros instead).",
"maxLength": 20,
"minLength": 6,
"type": "string"
}
},
"required": [
"phone"
],
"type": "object"
},
"name": "promakeup_get_business_by_phone",
"outputSchema": null
},
{
"description": "Use when you have a pro.makeup URL or slug and want the full structured profile. The slug is the trailing path segment of `https://pro.makeup/{category}/{country}/{city}/{slug}`. Returns name, location, services, photos, verification, opening hours, and a canonical `profile_url`.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "The trailing path segment of the canonical URL (e.g. \"israel/tel-aviv/jane-doe\").",
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "promakeup_get_business_by_slug",
"outputSchema": null
},
{
"description": "Use when the user wants a sense of what is on pro.makeup right now — totals plus a sample of recently added listings with avatars. Cheap; safe to call to \"warm up\" before a more specific search.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"default": 12,
"description": "Max featured listings to return.",
"maximum": 60,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "promakeup_get_discovery_summary",
"outputSchema": null
},
{
"description": "Use when the user asks about makeup schools, programs, or specific qualifications (e.g. MUAQS). Returns school listings filterable by country, city, and certification offered.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"certification": {
"description": "Certification or qualification offered (e.g. \"MUAQS\").",
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "promakeup_list_schools",
"outputSchema": null
},
{
"description": "Use when the user wants verified pros within a radius of a known point. Example: \"Makeup artists doing bridal within 10km of these coordinates\". Inputs are WGS-84 lat/lon; radius defaults to 10km.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"latitude": {
"description": "Latitude in WGS-84 decimal degrees.",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"longitude": {
"description": "Longitude in WGS-84 decimal degrees.",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"radius_km": {
"default": 10,
"description": "Search radius in kilometres. Default 10.",
"maximum": 200,
"minimum": 0,
"type": "number"
},
"service": {
"description": "Service the business must offer (e.g. \"bridal\").",
"minLength": 1,
"type": "string"
}
},
"required": [
"latitude",
"longitude",
"service"
],
"type": "object"
},
"name": "promakeup_list_services_nearby",
"outputSchema": null
},
{
"description": "Use when the user asks \"find a makeup [category] in [city] who does [service]\". Returns ranked, verified-by-default listings. Example: \"Find a bridal makeup artist in Tel Aviv\". Each result includes a `profile_url` you can cite back to the user.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Single category filter. Omit to search all categories.",
"enum": [
"artist",
"salon",
"school",
"shop",
"brand"
],
"type": "string"
},
"city": {
"description": "City name in English (or local script for non-Latin cities).",
"maxLength": 80,
"type": "string"
},
"country": {
"description": "ISO-3166 alpha-2 country code (e.g. \"US\") or full country name.",
"maxLength": 60,
"type": "string"
},
"limit": {
"default": 10,
"description": "Max results to return.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Free-text search across name and bio. Capped at 100 chars to bound the ILIKE cost on a 214K-row Business table.",
"maxLength": 100,
"type": "string"
},
"service": {
"description": "Service the business must offer (e.g. \"bridal\", \"editorial\").",
"maxLength": 60,
"type": "string"
},
"verified_only": {
"default": true,
"description": "Restrict to verified listings. Defaults to true.",
"type": "boolean"
}
},
"type": "object"
},
"name": "promakeup_search_pros",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:4bc1ef98f32b42e78ef643eaaad21e84e93388d572c203783b56b39010a35e8d | sha256sum