Free US local business directory: add a business with no account and search checked listings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Status of an owner confirmation: pending, confirmed or expired.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http directory https://trusoro.com/mcp
Status of an owner confirmation: pending, confirmed or expired.
| Argument | Type | Description |
|---|---|---|
| claim_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"claim_id"
],
"properties": {
"claim_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)$"
}
}
}One published listing by id or slug, including its state license records (Florida DBPR so far).
| Argument | Type | Description |
|---|---|---|
| id_or_slug* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id_or_slug"
],
"properties": {
"id_or_slug": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
}Status of a submission: checking, published, yellow (waiting for review), red (held for the owner of the directory), or rejected, with reason codes and the result of each automatic check.
| Argument | Type | Description |
|---|---|---|
| submission_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"submission_id"
],
"properties": {
"submission_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)$"
}
}
}Categories with the number of published listings in each.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Opens the business website and returns the details it shows (name, phone, email, city, state, description) plus a free website check report. Use the fields to prepare submit_listing; ask the owner for anything missing.
| Argument | Type | Description |
|---|---|---|
| website* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"website"
],
"properties": {
"website": {
"type": "string",
"maxLength": 200,
"minLength": 4
}
}
}Starts owner confirmation for a published listing. Returns confirm_url and user_code to show to the business owner (they confirm with Google or a company email), plus site_verification if you can edit the business website. Once confirmed, the API key you used here may edit the listing with update_listing if the owner allows it (or if you confirmed through the website).
| Argument | Type | Description |
|---|---|---|
| listing_id* | string | Listing id or slug. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Listing id or slug."
}
}
}Search published listings by category slug, city and/or a name fragment. Paginate with offset.
| Argument | Type | Description |
|---|---|---|
| q | string | Part of the business name. |
| city | string | City name, case-insensitive exact match, e.g. "Denver". |
| limit | integer | Results per page, 1-100, default 20. |
| offset | integer | Use next_offset from the previous page. |
| category | string | Category slug from list_categories, e.g. "hvac" or "pool-spa". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"description": "Part of the business name."
},
"city": {
"type": "string",
"maxLength": 60,
"description": "City name, case-insensitive exact match, e.g. \"Denver\"."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100, default 20."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Use next_offset from the previous page."
},
"category": {
"type": "string",
"maxLength": 60,
"description": "Category slug from list_categories, e.g. \"hvac\" or \"pool-spa\"."
}
}
}Submit a business. The only thing you need is its website: name, city, state, phone and description are read from the site when you leave them out. Do not ask the owner questions unless this tool returns missing_field. Category is optional (unknown values are kept as the industry). Send the business email if it is at the website domain or shown on the site: once the listing is published the owner gets one email with a Confirm button, and after that the link to their website is a normal (followed) link. Returns a submission_id; call get_submission_status to follow the checks. Reuse the same idempotency_key when retrying.
| Argument | Type | Description |
|---|---|---|
| city | string | City; read from the website if omitted. |
| name | string | Business name customers know (brand); read from the website if omitted. |
| string | Business email at the website domain (or shown on the site): enables one-click owner confirmation. | |
| phone | string | Public business phone, US number. |
| state | string | Two-letter state code; default FL. |
| social | array | Links to the business pages on Google, Facebook, Instagram, Yelp, Nextdoor and similar sites; read from the website if omitted. |
| address | string | Street address; stored privately and never published. |
Fill in or edit the listing: name, description, services, service_area (other cities served), hours, social, phone, website, industry_label. A complete listing can appear in Google, is shown higher in its city and appears in the cities it serves. Needs an API key the confirmed owner approved.
| Argument | Type | Description |
|---|---|---|
| name | string | The business name as customers know it. A spelling fix is saved at once; a name with a phone, web address, promotion or an added city waits for a check by Trusoro. |
| hours | string | Opening hours in schema.org form, e.g. "Mo-Fr 08:00-17:00; Sa 09:00-13:00" (shown as a table and marked up for search); other text is shown as written. |
| phone | string | New public phone. |
| social | array | Links to the business pages on Google, Facebook, Instagram, Yelp, Nextdoor and similar sites. Other sites are refused. |
| website | string | New website. |
| services | array | Services offered, e.g. ["AC repair", "Duct cleaning"]. |
| listing_id* | string | |
| description | string | New description. |
After publishing the site_verification file or meta tag on the business website, call this to confirm.
| Argument | Type | Description |
|---|---|---|
| claim_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"claim_id"
],
"properties": {
"claim_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)$"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.
| website |
| string |
| The business website. Enough on its own if the site shows the name and city. |
| category | string | Category slug from list_categories, or a plain word such as "roofer"; optional, guessed from the name or website when omitted. |
| industry | string | What the business does, when no category fits. |
| legal_name | string | Registered legal name when it differs from the brand, e.g. "The Bouquet LLC". |
| license_no | string | Florida contractor license number, if any: an existing license listing is then updated instead of duplicated. |
| description | string | Short, original description written for this business. |
| idempotency_key | string | Any unique string per business; needs an API key to take effect. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"description": "City; read from the website if omitted."
},
"name": {
"type": "string",
"maxLength": 120,
"description": "Business name customers know (brand); read from the website if omitted."
},
"email": {
"type": "string",
"maxLength": 120,
"description": "Business email at the website domain (or shown on the site): enables one-click owner confirmation."
},
"phone": {
"type": "string",
"maxLength": 30,
"description": "Public business phone, US number."
},
"state": {
"type": "string",
"maxLength": 2,
"description": "Two-letter state code; default FL."
},
"social": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 8,
"description": "Links to the business pages on Google, Facebook, Instagram, Yelp, Nextdoor and similar sites; read from the website if omitted."
},
"address": {
"type": "string",
"maxLength": 200,
"description": "Street address; stored privately and never published."
},
"website": {
"type": "string",
"maxLength": 200,
"description": "The business website. Enough on its own if the site shows the name and city."
},
"category": {
"type": "string",
"maxLength": 60,
"description": "Category slug from list_categories, or a plain word such as \"roofer\"; optional, guessed from the name or website when omitted."
},
"industry": {
"type": "string",
"maxLength": 60,
"description": "What the business does, when no category fits."
},
"legal_name": {
"type": "string",
"maxLength": 120,
"description": "Registered legal name when it differs from the brand, e.g. \"The Bouquet LLC\"."
},
"license_no": {
"type": "string",
"maxLength": 20,
"description": "Florida contractor license number, if any: an existing license listing is then updated instead of duplicated."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "Short, original description written for this business."
},
"idempotency_key": {
"type": "string",
"maxLength": 100,
"description": "Any unique string per business; needs an API key to take effect."
}
}
}| service_area |
| array |
| Other cities served; the listing also shows on those city pages. |
| industry_label | string | What the business does. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"listing_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"description": "The business name as customers know it. A spelling fix is saved at once; a name with a phone, web address, promotion or an added city waits for a check by Trusoro."
},
"hours": {
"type": "string",
"maxLength": 200,
"description": "Opening hours in schema.org form, e.g. \"Mo-Fr 08:00-17:00; Sa 09:00-13:00\" (shown as a table and marked up for search); other text is shown as written."
},
"phone": {
"type": "string",
"maxLength": 30,
"description": "New public phone."
},
"social": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 8,
"description": "Links to the business pages on Google, Facebook, Instagram, Yelp, Nextdoor and similar sites. Other sites are refused."
},
"website": {
"type": "string",
"maxLength": 200,
"description": "New website."
},
"services": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 12,
"description": "Services offered, e.g. [\"AC repair\", \"Duct cleaning\"]."
},
"listing_id": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "New description."
},
"service_area": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 15,
"description": "Other cities served; the listing also shows on those city pages."
},
"industry_label": {
"type": "string",
"maxLength": 60,
"description": "What the business does."
}
}
}