← The evidence ledger
Evidence row 302954
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint b905fc2e-0f17-410e-af1f-45b956d264a8
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 09f7fcfe671c0ccacbbe1619fabfec8d2c42bac09d7ba12dde2b64396d54caec
- Leaf
- 0x08f096f2de4433b9f212621a5db0e76ec2418cabacff3b270694e0f7221085f6
What was observed
{
"count": 8,
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
}
]
}What the leaf hashes
{"body":"09f7fcfe671c0ccacbbe1619fabfec8d2c42bac09d7ba12dde2b64396d54caec","id":302954,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793055075905198,"prev":null,"subject":"b905fc2e-0f17-410e-af1f-45b956d264a8","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0x08f07e4b61c805f7470ff3b03964bc45518ab5a19af8948bb1c63f15a799796a
- 0x6c01bc22aca02f8b5b83d600085d4014691819e9ece202442b106f13cb26c053
- 0xbf79e8becb4302eea1c10f204e092eac2634d55eb516155d209f46409962e0c6
- 0x7603f010340f0ab1c8acbea0a49bcdf0dd2f1be239afda023a7b5c329fba588e
- 0x216cb7e344315cabfb5145926546d209d339e4d46d35082fd31373a9011bdf92
- 0xfdaac02e672c39e60ca40ab748bb7f1b35ad583bdba76a576d9dc8569d323655
- 0xada585dc48814d47237fdc69ca7229da6fe8be7c09b022f25087e5098722013f
- 0xa2113e5046a7d3e24f4ce65b601363a4de2a68f0e94512d93e91fa578aa8c183
- 0xcabf1cda452c46b3d3539791918df52efb9b3425952d2ab94b70213086a94d42
- 0x4b8d7ca0c4ae813a9cf284d4f688cb47a1d02fa6262df9e9bad0ce5770784284
- 0x3585060104222ad1aae3396450719e555d4d013fa2b3a7b43777a1722ca9ce22
- 0x6003e14d04cde1d24b195ac15b568dd483e04047e0f2ff64d9632a51a8f7123d
- 0xe5a836cf25a8dfc72c9e3b6a69a7561a1f61f50f9cf36707d36f6e926aa15dec
- 0xa96bb9408ce00a0d40ddaba8736257dfce76d5478b131d69db1afdf8a824312b
- 0x7ddc2fead128357f881b63e6c7c26d7fbbb84fca6c7c8e0bbfe386de86ca8d39
- 0xc6a4d7899a0f442958e26505011190b7cff2483611c1b94eba9043e0ba9ac36e
- 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
- 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae