Bezal — Local Business Intelligence for AI Agents
Search 7,000+ local service businesses across America by category, location, or keyword.
Should I use this
Quality & Safety
Findings (1)
- LOWin submit_quote_request
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"local-commerce": {
"url": "https://app.bezal.ai/api/mcp"
}
}
}Remote endpoints
https://app.bezal.ai/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (13)
🟡search_businesses(query, category, city, state, limit)
Search local business profiles on Bezal by name, category, or location. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Free-text search across business name and description",
"type": "string",
"maxLength": 200
},
"category": {
"description": "Category keyword (e.g. \"plumbing\", \"hr consulting\")",
"type": "string",
"maxLength": 100
},
"city": {
"description": "City name",
"type": "string",
"maxLength": 100
},
"state": {
"description": "Two-letter state code or full state name",
"type": "string",
"maxLength": 40
},
"limit": {
"default": 5,
"description": "Number of results to return (1-20)",
"type": "number",
"minimum": 1,
"maximum": 20
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡get_business(id)
Get the public Bezal profile for one business by UUID. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium. For services, use get_service_catalog.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The UUID of the business to look up"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_categories
List all available business categories in the directory.
Input Schema
{
"type": "object",
"properties": {}
}🟡request_service(business_id, seeker_name, seeker_email, service_needed, message)
Send a service request to a business on behalf of a person. Returns delivered: true only when the business owner was notified. Businesses that haven't claimed their Bezal profile get the request saved but aren't notified.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The UUID of the business to send the request to"
},
"seeker_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Name of the person requesting the service"
},
"seeker_email": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email address of the requester"
},
"service_needed": {
"description": "Short description of the service category",
"type": "string",
"maxLength": 200
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000,
"description": "Detailed message about what the requester needs"
}
},
"required": [
"business_id",
"seeker_name",
"seeker_email",
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡search_by_service(service_type, location)
Find businesses that list a specific service, when you know the exact service rather than the category (for example "Drain cleaning" rather than "plumbing"). Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.
Input Schema
{
"type": "object",
"properties": {
"service_type": {
"type": "string",
"maxLength": 100,
"description": "Exact service offered (matched against the services list)"
},
"location": {
"description": "Optional city or state to filter by",
"type": "string",
"maxLength": 100
}
},
"required": [
"service_type"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_reviews(business_id, limit)
Get reviews for a specific business: Bezal reviews (rating, text, verified flag, date and the reviewer as first name and last initial) plus the Google rating and review count.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Business UUID"
},
"limit": {
"description": "Max reviews to return",
"default": 10,
"type": "number",
"minimum": 1,
"maximum": 50
}
},
"required": [
"business_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_service_catalog(business_id)
Get services and pricing for a specific business. Falls back to the list of service names if no priced catalog exists.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Business UUID"
}
},
"required": [
"business_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡check_business_availability(business_id, date)
Check whether a business is open on a date, based on its posted opening hours. Hours are shared only for providers on a paid Bezal plan, and other listings come back with open set to "unknown". It doesn't know about bookings, so confirm a time with the business.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Business UUID"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "ISO date (YYYY-MM-DD)"
}
},
"required": [
"business_id",
"date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡compare_businesses(business_ids)
Compare up to 5 businesses side by side: the public profile fields plus services, BezalRank and whether the profile is claimed. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.
Input Schema
{
"type": "object",
"properties": {
"business_ids": {
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"description": "Array of business UUIDs to compare"
}
},
"required": [
"business_ids"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡search_by_city(city, state, category, limit)
Search for businesses in a specific city, optionally filtered by category. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"description": "City name"
},
"state": {
"description": "Two-letter state code or full name",
"type": "string",
"maxLength": 40
},
"category": {
"description": "Category keyword filter",
"type": "string",
"maxLength": 100
},
"limit": {
"description": "Max results",
"default": 10,
"type": "number",
"minimum": 1,
"maximum": 20
}
},
"required": [
"city"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_providers(category, location, query, limit)
Legacy alias for search_businesses. Prefer search_businesses for new clients.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"maxLength": 100
},
"location": {
"type": "string",
"maxLength": 100
},
"query": {
"type": "string",
"maxLength": 200
},
"limit": {
"default": 5,
"type": "number",
"minimum": 1,
"maximum": 20
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_provider_details(business_id)
Legacy alias for get_business. Prefer get_business for new clients.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"business_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡submit_quote_request(business_id, seeker_name, seeker_email, message)
Legacy alias for request_service. Prefer request_service for new clients.
Input Schema
{
"type": "object",
"properties": {
"business_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"seeker_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"seeker_email": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"business_id",
"seeker_name",
"seeker_email",
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Compare
Peer Comparison
Compare this server with others in the same category.
Community
Evidence