{
  "service": "yelp",
  "displayName": "Yelp",
  "categories": [
    "Location",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "YELP_API_KEY",
      "description": "Yelp private API key used with the Authorization: Bearer <api_key> header. Create an app to get your API key at https://docs.developer.yelp.com/docs/fusion-authentication."
    }
  ],
  "homepageUrl": "https://www.yelp.com",
  "actions": [
    {
      "id": "yelp.get_business_details",
      "service": "yelp",
      "name": "get_business_details",
      "description": "Get Yelp business details for one business identifier or alias.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "businessId": {
            "type": "string",
            "minLength": 1,
            "description": "Yelp business identifier or alias returned by a previous search result."
          },
          "locale": {
            "type": "string",
            "minLength": 1,
            "description": "Locale used by Yelp for localized response text, such as en_US."
          }
        },
        "additionalProperties": false,
        "required": [
          "businessId"
        ],
        "description": "Input for Yelp business details."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "business": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Yelp business identifier."
              },
              "alias": {
                "type": "string",
                "description": "Yelp business alias."
              },
              "name": {
                "type": "string",
                "description": "Business display name."
              },
              "imageUrl": {
                "type": "string",
                "description": "Primary business image URL.",
                "format": "uri"
              },
              "isClosed": {
                "type": "boolean",
                "description": "Whether the business is permanently closed."
              },
              "url": {
                "type": "string",
                "description": "Yelp listing URL for the business.",
                "format": "uri"
              },
              "reviewCount": {
                "type": "integer",
                "description": "Total Yelp review count."
              },
              "categories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "alias": {
                      "type": "string",
                      "description": "Yelp category alias."
                    },
                    "title": {
                      "type": "string",
                      "description": "Human-readable Yelp category title."
                    }
                  },
                  "additionalProperties": false,
                  "description": "One Yelp business category."
                },
                "description": "Business categories returned by Yelp."
              },
              "rating": {
                "type": "number",
                "description": "Average Yelp rating."
              },
              "coordinates": {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90,
                    "description": "Latitude in decimal degrees."
                  },
                  "longitude": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180,
                    "description": "Longitude in decimal degrees."
                  }
                },
                "additionalProperties": false,
                "description": "Geographic coordinates returned by Yelp."
              },
              "transactions": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One supported transaction mode."
                },
                "description": "Supported transaction modes such as pickup or delivery."
              },
              "price": {
                "type": "string",
                "description": "Displayed price tier."
              },
              "location": {
                "type": "object",
                "properties": {
                  "address1": {
                    "type": "string",
                    "description": "Primary street address line."
                  },
                  "address2": {
                    "type": "string",
                    "description": "Secondary street address line."
                  },
                  "address3": {
                    "type": "string",
                    "description": "Tertiary street address line."
                  },
                  "city": {
                    "type": "string",
                    "description": "City name."
                  },
                  "state": {
                    "type": "string",
                    "description": "State or region code."
                  },
                  "zipCode": {
                    "type": "string",
                    "description": "Postal code."
                  },
                  "country": {
                    "type": "string",
                    "description": "Country code."
                  },
                  "displayAddress": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "One formatted address line."
                    },
                    "description": "Formatted address lines for the business."
                  }
                },
                "additionalProperties": false,
                "description": "Normalized business location."
              },
              "phone": {
                "type": "string",
                "description": "Phone number in E.164 format."
              },
              "displayPhone": {
                "type": "string",
                "description": "Human-readable phone number."
              },
              "distance": {
                "type": "number",
                "description": "Distance from the search anchor in meters."
              },
              "photos": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "One photo URL returned by Yelp.",
                  "format": "uri"
                },
                "description": "Photo URLs returned by Yelp."
              },
              "hours": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "open": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "isOvernight": {
                            "type": "boolean",
                            "description": "Whether the hours entry continues into the next day."
                          },
                          "start": {
                            "type": "string",
                            "description": "Opening time in HHMM 24-hour format."
                          },
                          "end": {
                            "type": "string",
                            "description": "Closing time in HHMM 24-hour format."
                          },
                          "day": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 6,
                            "description": "Day of week where 0 is Monday."
                          }
                        },
                        "additionalProperties": false,
                        "description": "One Yelp business opening-hours entry."
                      },
                      "description": "Opening-hours entries returned by Yelp."
                    },
                    "hoursType": {
                      "type": "string",
                      "description": "Hours type such as REGULAR."
                    },
                    "isOpenNow": {
                      "type": "boolean",
                      "description": "Whether the business is open at the current time."
                    }
                  },
                  "additionalProperties": false,
                  "description": "One Yelp business hours block."
                },
                "description": "Business opening-hours blocks returned by Yelp."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "alias",
              "name",
              "isClosed",
              "url"
            ],
            "description": "Normalized Yelp business details."
          }
        },
        "additionalProperties": false,
        "required": [
          "business"
        ],
        "description": "Normalized output payload for Yelp business details."
      }
    },
    {
      "id": "yelp.search_businesses",
      "service": "yelp",
      "name": "search_businesses",
      "description": "Search Yelp businesses by keyword and geographic anchor.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string",
            "minLength": 1,
            "description": "Search term such as coffee or sushi."
          },
          "location": {
            "type": "string",
            "minLength": 1,
            "description": "Location text such as a city, neighborhood, or postal code."
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "Latitude in decimal degrees."
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "Longitude in decimal degrees."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Yelp category alias."
            },
            "description": "Category aliases used to filter business results.",
            "minItems": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of businesses to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Pagination offset used for business search."
          },
          "radius": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40000,
            "description": "Search radius in meters."
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "best_match",
              "rating",
              "review_count",
              "distance"
            ],
            "description": "Sort order used by Yelp business search."
          },
          "openNow": {
            "type": "boolean",
            "description": "Whether to return businesses that are open now."
          },
          "openAt": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "Unix timestamp used to filter businesses open at a specific time."
          },
          "locale": {
            "type": "string",
            "minLength": 1,
            "description": "Locale used by Yelp for localized response text, such as en_US."
          },
          "attributes": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Yelp attribute filter."
            },
            "description": "Yelp attribute filters to apply.",
            "minItems": 1
          },
          "priceTiers": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4"
              ],
              "description": "One Yelp price tier filter."
            },
            "description": "Price tiers to include in the search.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Input for Yelp business search.",
        "oneOf": [
          {
            "required": [
              "location"
            ]
          },
          {
            "required": [
              "latitude",
              "longitude"
            ]
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "businesses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Yelp business identifier."
                },
                "alias": {
                  "type": "string",
                  "description": "Yelp business alias."
                },
                "name": {
                  "type": "string",
                  "description": "Business display name."
                },
                "imageUrl": {
                  "type": "string",
                  "description": "Primary business image URL.",
                  "format": "uri"
                },
                "isClosed": {
                  "type": "boolean",
                  "description": "Whether the business is permanently closed."
                },
                "url": {
                  "type": "string",
                  "description": "Yelp listing URL for the business.",
                  "format": "uri"
                },
                "reviewCount": {
                  "type": "integer",
                  "description": "Total Yelp review count."
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "alias": {
                        "type": "string",
                        "description": "Yelp category alias."
                      },
                      "title": {
                        "type": "string",
                        "description": "Human-readable Yelp category title."
                      }
                    },
                    "additionalProperties": false,
                    "description": "One Yelp business category."
                  },
                  "description": "Business categories returned by Yelp."
                },
                "rating": {
                  "type": "number",
                  "description": "Average Yelp rating."
                },
                "coordinates": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "number",
                      "minimum": -90,
                      "maximum": 90,
                      "description": "Latitude in decimal degrees."
                    },
                    "longitude": {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "description": "Longitude in decimal degrees."
                    }
                  },
                  "additionalProperties": false,
                  "description": "Geographic coordinates returned by Yelp."
                },
                "transactions": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One supported transaction mode."
                  },
                  "description": "Supported transaction modes such as pickup or delivery."
                },
                "price": {
                  "type": "string",
                  "description": "Displayed price tier."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "address1": {
                      "type": "string",
                      "description": "Primary street address line."
                    },
                    "address2": {
                      "type": "string",
                      "description": "Secondary street address line."
                    },
                    "address3": {
                      "type": "string",
                      "description": "Tertiary street address line."
                    },
                    "city": {
                      "type": "string",
                      "description": "City name."
                    },
                    "state": {
                      "type": "string",
                      "description": "State or region code."
                    },
                    "zipCode": {
                      "type": "string",
                      "description": "Postal code."
                    },
                    "country": {
                      "type": "string",
                      "description": "Country code."
                    },
                    "displayAddress": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "One formatted address line."
                      },
                      "description": "Formatted address lines for the business."
                    }
                  },
                  "additionalProperties": false,
                  "description": "Normalized business location."
                },
                "phone": {
                  "type": "string",
                  "description": "Phone number in E.164 format."
                },
                "displayPhone": {
                  "type": "string",
                  "description": "Human-readable phone number."
                },
                "distance": {
                  "type": "number",
                  "description": "Distance from the search anchor in meters."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "alias",
                "name",
                "isClosed",
                "url"
              ],
              "description": "Normalized Yelp business summary."
            },
            "description": "Businesses returned by the Yelp business search endpoint."
          },
          "total": {
            "type": "integer",
            "description": "Total number of matching businesses."
          },
          "region": {
            "type": "object",
            "properties": {
              "center": {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90,
                    "description": "Latitude in decimal degrees."
                  },
                  "longitude": {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180,
                    "description": "Longitude in decimal degrees."
                  }
                },
                "additionalProperties": false,
                "description": "Geographic coordinates returned by Yelp."
              }
            },
            "additionalProperties": false,
            "description": "Search region metadata returned by Yelp."
          }
        },
        "additionalProperties": false,
        "required": [
          "businesses",
          "total"
        ],
        "description": "Normalized output payload for Yelp business search."
      }
    },
    {
      "id": "yelp.search_businesses_by_phone",
      "service": "yelp",
      "name": "search_businesses_by_phone",
      "description": "Find Yelp businesses by exact phone number.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "Business phone number in E.164 format, including the leading plus sign."
          }
        },
        "additionalProperties": false,
        "required": [
          "phone"
        ],
        "description": "Input for Yelp business phone search."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "businesses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Yelp business identifier."
                },
                "alias": {
                  "type": "string",
                  "description": "Yelp business alias."
                },
                "name": {
                  "type": "string",
                  "description": "Business display name."
                },
                "imageUrl": {
                  "type": "string",
                  "description": "Primary business image URL.",
                  "format": "uri"
                },
                "isClosed": {
                  "type": "boolean",
                  "description": "Whether the business is permanently closed."
                },
                "url": {
                  "type": "string",
                  "description": "Yelp listing URL for the business.",
                  "format": "uri"
                },
                "reviewCount": {
                  "type": "integer",
                  "description": "Total Yelp review count."
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "alias": {
                        "type": "string",
                        "description": "Yelp category alias."
                      },
                      "title": {
                        "type": "string",
                        "description": "Human-readable Yelp category title."
                      }
                    },
                    "additionalProperties": false,
                    "description": "One Yelp business category."
                  },
                  "description": "Business categories returned by Yelp."
                },
                "rating": {
                  "type": "number",
                  "description": "Average Yelp rating."
                },
                "coordinates": {
                  "type": "object",
                  "properties": {
                    "latitude": {
                      "type": "number",
                      "minimum": -90,
                      "maximum": 90,
                      "description": "Latitude in decimal degrees."
                    },
                    "longitude": {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "description": "Longitude in decimal degrees."
                    }
                  },
                  "additionalProperties": false,
                  "description": "Geographic coordinates returned by Yelp."
                },
                "transactions": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One supported transaction mode."
                  },
                  "description": "Supported transaction modes such as pickup or delivery."
                },
                "price": {
                  "type": "string",
                  "description": "Displayed price tier."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "address1": {
                      "type": "string",
                      "description": "Primary street address line."
                    },
                    "address2": {
                      "type": "string",
                      "description": "Secondary street address line."
                    },
                    "address3": {
                      "type": "string",
                      "description": "Tertiary street address line."
                    },
                    "city": {
                      "type": "string",
                      "description": "City name."
                    },
                    "state": {
                      "type": "string",
                      "description": "State or region code."
                    },
                    "zipCode": {
                      "type": "string",
                      "description": "Postal code."
                    },
                    "country": {
                      "type": "string",
                      "description": "Country code."
                    },
                    "displayAddress": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "One formatted address line."
                      },
                      "description": "Formatted address lines for the business."
                    }
                  },
                  "additionalProperties": false,
                  "description": "Normalized business location."
                },
                "phone": {
                  "type": "string",
                  "description": "Phone number in E.164 format."
                },
                "displayPhone": {
                  "type": "string",
                  "description": "Human-readable phone number."
                },
                "distance": {
                  "type": "number",
                  "description": "Distance from the search anchor in meters."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "alias",
                "name",
                "isClosed",
                "url"
              ],
              "description": "Normalized Yelp business summary."
            },
            "description": "Businesses returned by the Yelp business phone search endpoint."
          },
          "total": {
            "type": "integer",
            "description": "Total number of matching businesses."
          }
        },
        "additionalProperties": false,
        "required": [
          "businesses",
          "total"
        ],
        "description": "Normalized output payload for Yelp business phone search."
      }
    }
  ]
}
