{
  "service": "foursquare",
  "displayName": "Foursquare",
  "categories": [
    "Location",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "FSQ_API_KEY",
      "description": "Foursquare Places API key used with the Authorization: fsq3 <api_key> header. Generate or revoke it from your project API Keys page: https://docs.foursquare.com/developer/docs/manage-api-keys"
    }
  ],
  "homepageUrl": "https://foursquare.com",
  "actions": [
    {
      "id": "foursquare.get_nearby_places",
      "service": "foursquare",
      "name": "get_nearby_places",
      "description": "Retrieve nearby places around a latitude and longitude with Foursquare.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude coordinate in decimal degrees."
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude coordinate in decimal degrees."
          },
          "hacc": {
            "type": "integer",
            "minimum": 1,
            "description": "The horizontal accuracy radius in meters."
          },
          "altitude": {
            "type": "integer",
            "description": "The altitude in meters."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "The maximum number of nearby places to return."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Foursquare field name to include in the response."
            },
            "description": "The Foursquare response fields to request.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "latitude",
          "longitude"
        ],
        "description": "Input parameters for Foursquare nearby place discovery."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fsqId": {
                  "type": "string",
                  "description": "The Foursquare place identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The place name."
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "A string category identifier."
                          },
                          {
                            "type": "number",
                            "description": "A numeric category identifier."
                          }
                        ],
                        "description": "The category identifier."
                      },
                      "name": {
                        "type": "string",
                        "description": "The category display name."
                      },
                      "shortName": {
                        "type": "string",
                        "description": "The short category name."
                      },
                      "pluralName": {
                        "type": "string",
                        "description": "The plural category name."
                      },
                      "icon": {
                        "type": "object",
                        "properties": {
                          "prefix": {
                            "type": "string",
                            "description": "The icon URL prefix."
                          },
                          "suffix": {
                            "type": "string",
                            "description": "The icon URL suffix."
                          }
                        },
                        "additionalProperties": true,
                        "description": "The category icon metadata."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One Foursquare category."
                  },
                  "description": "The categories of the place."
                },
                "chains": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "A string chain identifier."
                          },
                          {
                            "type": "number",
                            "description": "A numeric chain identifier."
                          }
                        ],
                        "description": "The chain identifier."
                      },
                      "name": {
                        "type": "string",
                        "description": "The chain display name."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One place chain."
                  },
                  "description": "The chain metadata of the place."
                },
                "dateClosed": {
                  "type": "string",
                  "description": "The closure date of the place."
                },
                "description": {
                  "type": "string",
                  "description": "The description of the place."
                },
                "distance": {
                  "type": "integer",
                  "description": "The distance to the place in meters."
                },
                "email": {
                  "type": "string",
                  "description": "The primary contact email of the place."
                },
                "fax": {
                  "type": "string",
                  "description": "The fax number of the place."
                },
                "features": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The feature flags of the place."
                },
                "geocodes": {
                  "type": "object",
                  "properties": {
                    "main": {
                      "type": "object",
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "description": "The latitude of the coordinate."
                        },
                        "longitude": {
                          "type": "number",
                          "description": "The longitude of the coordinate."
                        }
                      },
                      "additionalProperties": false,
                      "required": [
                        "latitude",
                        "longitude"
                      ],
                      "description": "One geographic coordinate."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The normalized geocodes object."
                },
                "hours": {
                  "type": "object",
                  "properties": {
                    "display": {
                      "type": "string",
                      "description": "The display string for the opening hours."
                    },
                    "openNow": {
                      "type": "boolean",
                      "description": "Whether the place is open right now."
                    },
                    "regular": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {},
                        "additionalProperties": true
                      },
                      "description": "The regular opening-hour entries returned by Foursquare."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The place opening hours."
                },
                "link": {
                  "type": "string",
                  "description": "The Foursquare detail link of the place."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "address": {
                      "type": "string",
                      "description": "The street address of the place."
                    },
                    "addressExtended": {
                      "type": "string",
                      "description": "The extended address line of the place."
                    },
                    "country": {
                      "type": "string",
                      "description": "The country code or country name of the place."
                    },
                    "crossStreet": {
                      "type": "string",
                      "description": "The cross street of the place."
                    },
                    "formattedAddress": {
                      "type": "string",
                      "description": "The human-readable formatted address of the place."
                    },
                    "locality": {
                      "type": "string",
                      "description": "The locality or city of the place."
                    },
                    "postcode": {
                      "type": "string",
                      "description": "The postal code of the place."
                    },
                    "region": {
                      "type": "string",
                      "description": "The state or region of the place."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The normalized place location object."
                },
                "menu": {
                  "type": "string",
                  "description": "The menu URL of the place."
                },
                "photos": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The photo identifier."
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "The creation timestamp of the photo."
                      },
                      "prefix": {
                        "type": "string",
                        "description": "The URL prefix of the photo."
                      },
                      "suffix": {
                        "type": "string",
                        "description": "The URL suffix of the photo."
                      },
                      "width": {
                        "type": "number",
                        "description": "The maximum width of the photo."
                      },
                      "height": {
                        "type": "number",
                        "description": "The maximum height of the photo."
                      },
                      "classifications": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "A photo classification."
                        },
                        "description": "The photo classifications returned by Foursquare."
                      },
                      "tip": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The tip identifier."
                          },
                          "createdAt": {
                            "type": "string",
                            "description": "The creation timestamp of the tip."
                          },
                          "text": {
                            "type": "string",
                            "description": "The tip text."
                          },
                          "lang": {
                            "type": "string",
                            "description": "The language code of the tip."
                          },
                          "url": {
                            "type": "string",
                            "description": "The canonical URL of the tip."
                          },
                          "agreeCount": {
                            "type": "integer",
                            "description": "The number of agreements on the tip."
                          },
                          "disagreeCount": {
                            "type": "integer",
                            "description": "The number of disagreements on the tip."
                          }
                        },
                        "additionalProperties": true,
                        "description": "One normalized Foursquare tip."
                      }
                    },
                    "additionalProperties": true,
                    "required": [
                      "id"
                    ],
                    "description": "One normalized Foursquare photo."
                  },
                  "description": "The embedded place photos."
                },
                "popularity": {
                  "type": "number",
                  "description": "The popularity score of the place."
                },
                "price": {
                  "type": "integer",
                  "description": "The price tier of the place."
                },
                "rating": {
                  "type": "number",
                  "description": "The rating score of the place."
                },
                "socialMedia": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The social media metadata of the place."
                },
                "stats": {
                  "type": "object",
                  "properties": {
                    "totalPhotos": {
                      "type": "integer",
                      "description": "The total number of photos."
                    },
                    "totalRatings": {
                      "type": "integer",
                      "description": "The total number of ratings."
                    },
                    "totalTips": {
                      "type": "integer",
                      "description": "The total number of tips."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The place statistics counters."
                },
                "tastes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A place taste."
                  },
                  "description": "The tastes associated with the place."
                },
                "tel": {
                  "type": "string",
                  "description": "The telephone number of the place."
                },
                "tips": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The tip identifier."
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "The creation timestamp of the tip."
                      },
                      "text": {
                        "type": "string",
                        "description": "The tip text."
                      },
                      "lang": {
                        "type": "string",
                        "description": "The language code of the tip."
                      },
                      "url": {
                        "type": "string",
                        "description": "The canonical URL of the tip."
                      },
                      "agreeCount": {
                        "type": "integer",
                        "description": "The number of agreements on the tip."
                      },
                      "disagreeCount": {
                        "type": "integer",
                        "description": "The number of disagreements on the tip."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One normalized Foursquare tip."
                  },
                  "description": "The embedded tips of the place."
                },
                "timezone": {
                  "type": "string",
                  "description": "The timezone of the place."
                },
                "website": {
                  "type": "string",
                  "description": "The website URL of the place."
                }
              },
              "additionalProperties": true,
              "required": [
                "fsqId",
                "name"
              ],
              "description": "One normalized Foursquare place."
            },
            "description": "The normalized nearby place results."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The normalized Foursquare nearby places response."
      }
    },
    {
      "id": "foursquare.get_place",
      "service": "foursquare",
      "name": "get_place",
      "description": "Retrieve one place by Foursquare place ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "fsqId": {
            "type": "string",
            "minLength": 1,
            "description": "The unique Foursquare place identifier."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Foursquare field name to include in the response."
            },
            "description": "The Foursquare response fields to request.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "fsqId"
        ],
        "description": "Input parameters for retrieving one Foursquare place."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "fsqId": {
            "type": "string",
            "description": "The Foursquare place identifier."
          },
          "name": {
            "type": "string",
            "description": "The place name."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A string category identifier."
                    },
                    {
                      "type": "number",
                      "description": "A numeric category identifier."
                    }
                  ],
                  "description": "The category identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The category display name."
                },
                "shortName": {
                  "type": "string",
                  "description": "The short category name."
                },
                "pluralName": {
                  "type": "string",
                  "description": "The plural category name."
                },
                "icon": {
                  "type": "object",
                  "properties": {
                    "prefix": {
                      "type": "string",
                      "description": "The icon URL prefix."
                    },
                    "suffix": {
                      "type": "string",
                      "description": "The icon URL suffix."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The category icon metadata."
                }
              },
              "additionalProperties": true,
              "description": "One Foursquare category."
            },
            "description": "The categories of the place."
          },
          "chains": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "A string chain identifier."
                    },
                    {
                      "type": "number",
                      "description": "A numeric chain identifier."
                    }
                  ],
                  "description": "The chain identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The chain display name."
                }
              },
              "additionalProperties": true,
              "description": "One place chain."
            },
            "description": "The chain metadata of the place."
          },
          "dateClosed": {
            "type": "string",
            "description": "The closure date of the place."
          },
          "description": {
            "type": "string",
            "description": "The description of the place."
          },
          "distance": {
            "type": "integer",
            "description": "The distance to the place in meters."
          },
          "email": {
            "type": "string",
            "description": "The primary contact email of the place."
          },
          "fax": {
            "type": "string",
            "description": "The fax number of the place."
          },
          "features": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The feature flags of the place."
          },
          "geocodes": {
            "type": "object",
            "properties": {
              "main": {
                "type": "object",
                "properties": {
                  "latitude": {
                    "type": "number",
                    "description": "The latitude of the coordinate."
                  },
                  "longitude": {
                    "type": "number",
                    "description": "The longitude of the coordinate."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "latitude",
                  "longitude"
                ],
                "description": "One geographic coordinate."
              }
            },
            "additionalProperties": true,
            "description": "The normalized geocodes object."
          },
          "hours": {
            "type": "object",
            "properties": {
              "display": {
                "type": "string",
                "description": "The display string for the opening hours."
              },
              "openNow": {
                "type": "boolean",
                "description": "Whether the place is open right now."
              },
              "regular": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true
                },
                "description": "The regular opening-hour entries returned by Foursquare."
              }
            },
            "additionalProperties": true,
            "description": "The place opening hours."
          },
          "link": {
            "type": "string",
            "description": "The Foursquare detail link of the place."
          },
          "location": {
            "type": "object",
            "properties": {
              "address": {
                "type": "string",
                "description": "The street address of the place."
              },
              "addressExtended": {
                "type": "string",
                "description": "The extended address line of the place."
              },
              "country": {
                "type": "string",
                "description": "The country code or country name of the place."
              },
              "crossStreet": {
                "type": "string",
                "description": "The cross street of the place."
              },
              "formattedAddress": {
                "type": "string",
                "description": "The human-readable formatted address of the place."
              },
              "locality": {
                "type": "string",
                "description": "The locality or city of the place."
              },
              "postcode": {
                "type": "string",
                "description": "The postal code of the place."
              },
              "region": {
                "type": "string",
                "description": "The state or region of the place."
              }
            },
            "additionalProperties": true,
            "description": "The normalized place location object."
          },
          "menu": {
            "type": "string",
            "description": "The menu URL of the place."
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The photo identifier."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The creation timestamp of the photo."
                },
                "prefix": {
                  "type": "string",
                  "description": "The URL prefix of the photo."
                },
                "suffix": {
                  "type": "string",
                  "description": "The URL suffix of the photo."
                },
                "width": {
                  "type": "number",
                  "description": "The maximum width of the photo."
                },
                "height": {
                  "type": "number",
                  "description": "The maximum height of the photo."
                },
                "classifications": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A photo classification."
                  },
                  "description": "The photo classifications returned by Foursquare."
                },
                "tip": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The tip identifier."
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "The creation timestamp of the tip."
                    },
                    "text": {
                      "type": "string",
                      "description": "The tip text."
                    },
                    "lang": {
                      "type": "string",
                      "description": "The language code of the tip."
                    },
                    "url": {
                      "type": "string",
                      "description": "The canonical URL of the tip."
                    },
                    "agreeCount": {
                      "type": "integer",
                      "description": "The number of agreements on the tip."
                    },
                    "disagreeCount": {
                      "type": "integer",
                      "description": "The number of disagreements on the tip."
                    }
                  },
                  "additionalProperties": true,
                  "description": "One normalized Foursquare tip."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "One normalized Foursquare photo."
            },
            "description": "The embedded place photos."
          },
          "popularity": {
            "type": "number",
            "description": "The popularity score of the place."
          },
          "price": {
            "type": "integer",
            "description": "The price tier of the place."
          },
          "rating": {
            "type": "number",
            "description": "The rating score of the place."
          },
          "socialMedia": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The social media metadata of the place."
          },
          "stats": {
            "type": "object",
            "properties": {
              "totalPhotos": {
                "type": "integer",
                "description": "The total number of photos."
              },
              "totalRatings": {
                "type": "integer",
                "description": "The total number of ratings."
              },
              "totalTips": {
                "type": "integer",
                "description": "The total number of tips."
              }
            },
            "additionalProperties": true,
            "description": "The place statistics counters."
          },
          "tastes": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A place taste."
            },
            "description": "The tastes associated with the place."
          },
          "tel": {
            "type": "string",
            "description": "The telephone number of the place."
          },
          "tips": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The tip identifier."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The creation timestamp of the tip."
                },
                "text": {
                  "type": "string",
                  "description": "The tip text."
                },
                "lang": {
                  "type": "string",
                  "description": "The language code of the tip."
                },
                "url": {
                  "type": "string",
                  "description": "The canonical URL of the tip."
                },
                "agreeCount": {
                  "type": "integer",
                  "description": "The number of agreements on the tip."
                },
                "disagreeCount": {
                  "type": "integer",
                  "description": "The number of disagreements on the tip."
                }
              },
              "additionalProperties": true,
              "description": "One normalized Foursquare tip."
            },
            "description": "The embedded tips of the place."
          },
          "timezone": {
            "type": "string",
            "description": "The timezone of the place."
          },
          "website": {
            "type": "string",
            "description": "The website URL of the place."
          }
        },
        "additionalProperties": true,
        "required": [
          "fsqId",
          "name"
        ],
        "description": "One normalized Foursquare place."
      }
    },
    {
      "id": "foursquare.get_place_photos",
      "service": "foursquare",
      "name": "get_place_photos",
      "description": "Retrieve photos for one Foursquare place.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "fsqId": {
            "type": "string",
            "minLength": 1,
            "description": "The unique Foursquare place identifier."
          },
          "sort": {
            "type": "string",
            "enum": [
              "popular",
              "newest"
            ],
            "description": "The ordering applied to photos or tips."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "The maximum number of photos to return."
          },
          "classifications": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "food",
                "indoor",
                "menu",
                "outdoor"
              ],
              "description": "One Foursquare photo classification filter."
            },
            "description": "The photo classifications used to filter the response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "fsqId"
        ],
        "description": "Input parameters for retrieving Foursquare place photos."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "photos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The photo identifier."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The creation timestamp of the photo."
                },
                "prefix": {
                  "type": "string",
                  "description": "The URL prefix of the photo."
                },
                "suffix": {
                  "type": "string",
                  "description": "The URL suffix of the photo."
                },
                "width": {
                  "type": "number",
                  "description": "The maximum width of the photo."
                },
                "height": {
                  "type": "number",
                  "description": "The maximum height of the photo."
                },
                "classifications": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A photo classification."
                  },
                  "description": "The photo classifications returned by Foursquare."
                },
                "tip": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "The tip identifier."
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "The creation timestamp of the tip."
                    },
                    "text": {
                      "type": "string",
                      "description": "The tip text."
                    },
                    "lang": {
                      "type": "string",
                      "description": "The language code of the tip."
                    },
                    "url": {
                      "type": "string",
                      "description": "The canonical URL of the tip."
                    },
                    "agreeCount": {
                      "type": "integer",
                      "description": "The number of agreements on the tip."
                    },
                    "disagreeCount": {
                      "type": "integer",
                      "description": "The number of disagreements on the tip."
                    }
                  },
                  "additionalProperties": true,
                  "description": "One normalized Foursquare tip."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "One normalized Foursquare photo."
            },
            "description": "The normalized place photos."
          }
        },
        "additionalProperties": false,
        "required": [
          "photos"
        ],
        "description": "The normalized Foursquare place photos response."
      }
    },
    {
      "id": "foursquare.get_place_tips",
      "service": "foursquare",
      "name": "get_place_tips",
      "description": "Retrieve tips for one Foursquare place.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "fsqId": {
            "type": "string",
            "minLength": 1,
            "description": "The unique Foursquare place identifier."
          },
          "sort": {
            "type": "string",
            "enum": [
              "popular",
              "newest"
            ],
            "description": "The ordering applied to photos or tips."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "The maximum number of tips to return."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Foursquare field name to include in the response."
            },
            "description": "The Foursquare response fields to request.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "fsqId"
        ],
        "description": "Input parameters for retrieving Foursquare place tips."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tips": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The tip identifier."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The creation timestamp of the tip."
                },
                "text": {
                  "type": "string",
                  "description": "The tip text."
                },
                "lang": {
                  "type": "string",
                  "description": "The language code of the tip."
                },
                "url": {
                  "type": "string",
                  "description": "The canonical URL of the tip."
                },
                "agreeCount": {
                  "type": "integer",
                  "description": "The number of agreements on the tip."
                },
                "disagreeCount": {
                  "type": "integer",
                  "description": "The number of disagreements on the tip."
                }
              },
              "additionalProperties": true,
              "description": "One normalized Foursquare tip."
            },
            "description": "The normalized place tips."
          }
        },
        "additionalProperties": false,
        "required": [
          "tips"
        ],
        "description": "The normalized Foursquare place tips response."
      }
    },
    {
      "id": "foursquare.search_places",
      "service": "foursquare",
      "name": "search_places",
      "description": "Search for places with the Foursquare Places Search endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "The free-form place query."
          },
          "near": {
            "type": "string",
            "minLength": 1,
            "description": "The locality text used for search biasing."
          },
          "latitude": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "The latitude coordinate in decimal degrees."
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "The longitude coordinate in decimal degrees."
          },
          "radius": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100000,
            "description": "The search radius in meters."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "The maximum number of results to return."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Foursquare field name to include in the response."
            },
            "description": "The Foursquare response fields to request.",
            "minItems": 1
          },
          "openNow": {
            "type": "boolean",
            "description": "Whether to restrict results to places currently open."
          },
          "openAt": {
            "type": "string",
            "description": "The local day and time filter in `DOWTHHMM` format.",
            "pattern": "^[0-6]T([01][0-9]|2[0-3])[0-5][0-9]$"
          },
          "minPrice": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "description": "The minimum Foursquare price tier."
          },
          "maxPrice": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "description": "The maximum Foursquare price tier."
          },
          "excludeAllChains": {
            "type": "boolean",
            "description": "Whether to exclude all known chain places from the response."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for Foursquare place search.",
        "anyOf": [
          {
            "required": [
              "query"
            ]
          },
          {
            "required": [
              "near"
            ]
          },
          {
            "required": [
              "latitude",
              "longitude"
            ]
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "context": {
            "type": "object",
            "properties": {
              "geoBounds": {
                "type": "object",
                "properties": {
                  "circle": {
                    "type": "object",
                    "properties": {
                      "center": {
                        "type": "object",
                        "properties": {
                          "latitude": {
                            "type": "number",
                            "description": "The latitude of the coordinate."
                          },
                          "longitude": {
                            "type": "number",
                            "description": "The longitude of the coordinate."
                          }
                        },
                        "additionalProperties": false,
                        "required": [
                          "latitude",
                          "longitude"
                        ],
                        "description": "One geographic coordinate."
                      },
                      "radius": {
                        "type": "integer",
                        "description": "The radius of the search area in meters."
                      }
                    },
                    "additionalProperties": true,
                    "description": "The circle bounds of the search area."
                  }
                },
                "additionalProperties": true,
                "description": "The normalized geographic bounds of the search context."
              }
            },
            "additionalProperties": true,
            "description": "The normalized Foursquare search context."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fsqId": {
                  "type": "string",
                  "description": "The Foursquare place identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The place name."
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "A string category identifier."
                          },
                          {
                            "type": "number",
                            "description": "A numeric category identifier."
                          }
                        ],
                        "description": "The category identifier."
                      },
                      "name": {
                        "type": "string",
                        "description": "The category display name."
                      },
                      "shortName": {
                        "type": "string",
                        "description": "The short category name."
                      },
                      "pluralName": {
                        "type": "string",
                        "description": "The plural category name."
                      },
                      "icon": {
                        "type": "object",
                        "properties": {
                          "prefix": {
                            "type": "string",
                            "description": "The icon URL prefix."
                          },
                          "suffix": {
                            "type": "string",
                            "description": "The icon URL suffix."
                          }
                        },
                        "additionalProperties": true,
                        "description": "The category icon metadata."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One Foursquare category."
                  },
                  "description": "The categories of the place."
                },
                "chains": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "description": "A string chain identifier."
                          },
                          {
                            "type": "number",
                            "description": "A numeric chain identifier."
                          }
                        ],
                        "description": "The chain identifier."
                      },
                      "name": {
                        "type": "string",
                        "description": "The chain display name."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One place chain."
                  },
                  "description": "The chain metadata of the place."
                },
                "dateClosed": {
                  "type": "string",
                  "description": "The closure date of the place."
                },
                "description": {
                  "type": "string",
                  "description": "The description of the place."
                },
                "distance": {
                  "type": "integer",
                  "description": "The distance to the place in meters."
                },
                "email": {
                  "type": "string",
                  "description": "The primary contact email of the place."
                },
                "fax": {
                  "type": "string",
                  "description": "The fax number of the place."
                },
                "features": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The feature flags of the place."
                },
                "geocodes": {
                  "type": "object",
                  "properties": {
                    "main": {
                      "type": "object",
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "description": "The latitude of the coordinate."
                        },
                        "longitude": {
                          "type": "number",
                          "description": "The longitude of the coordinate."
                        }
                      },
                      "additionalProperties": false,
                      "required": [
                        "latitude",
                        "longitude"
                      ],
                      "description": "One geographic coordinate."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The normalized geocodes object."
                },
                "hours": {
                  "type": "object",
                  "properties": {
                    "display": {
                      "type": "string",
                      "description": "The display string for the opening hours."
                    },
                    "openNow": {
                      "type": "boolean",
                      "description": "Whether the place is open right now."
                    },
                    "regular": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {},
                        "additionalProperties": true
                      },
                      "description": "The regular opening-hour entries returned by Foursquare."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The place opening hours."
                },
                "link": {
                  "type": "string",
                  "description": "The Foursquare detail link of the place."
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "address": {
                      "type": "string",
                      "description": "The street address of the place."
                    },
                    "addressExtended": {
                      "type": "string",
                      "description": "The extended address line of the place."
                    },
                    "country": {
                      "type": "string",
                      "description": "The country code or country name of the place."
                    },
                    "crossStreet": {
                      "type": "string",
                      "description": "The cross street of the place."
                    },
                    "formattedAddress": {
                      "type": "string",
                      "description": "The human-readable formatted address of the place."
                    },
                    "locality": {
                      "type": "string",
                      "description": "The locality or city of the place."
                    },
                    "postcode": {
                      "type": "string",
                      "description": "The postal code of the place."
                    },
                    "region": {
                      "type": "string",
                      "description": "The state or region of the place."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The normalized place location object."
                },
                "menu": {
                  "type": "string",
                  "description": "The menu URL of the place."
                },
                "photos": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The photo identifier."
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "The creation timestamp of the photo."
                      },
                      "prefix": {
                        "type": "string",
                        "description": "The URL prefix of the photo."
                      },
                      "suffix": {
                        "type": "string",
                        "description": "The URL suffix of the photo."
                      },
                      "width": {
                        "type": "number",
                        "description": "The maximum width of the photo."
                      },
                      "height": {
                        "type": "number",
                        "description": "The maximum height of the photo."
                      },
                      "classifications": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "description": "A photo classification."
                        },
                        "description": "The photo classifications returned by Foursquare."
                      },
                      "tip": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The tip identifier."
                          },
                          "createdAt": {
                            "type": "string",
                            "description": "The creation timestamp of the tip."
                          },
                          "text": {
                            "type": "string",
                            "description": "The tip text."
                          },
                          "lang": {
                            "type": "string",
                            "description": "The language code of the tip."
                          },
                          "url": {
                            "type": "string",
                            "description": "The canonical URL of the tip."
                          },
                          "agreeCount": {
                            "type": "integer",
                            "description": "The number of agreements on the tip."
                          },
                          "disagreeCount": {
                            "type": "integer",
                            "description": "The number of disagreements on the tip."
                          }
                        },
                        "additionalProperties": true,
                        "description": "One normalized Foursquare tip."
                      }
                    },
                    "additionalProperties": true,
                    "required": [
                      "id"
                    ],
                    "description": "One normalized Foursquare photo."
                  },
                  "description": "The embedded place photos."
                },
                "popularity": {
                  "type": "number",
                  "description": "The popularity score of the place."
                },
                "price": {
                  "type": "integer",
                  "description": "The price tier of the place."
                },
                "rating": {
                  "type": "number",
                  "description": "The rating score of the place."
                },
                "socialMedia": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The social media metadata of the place."
                },
                "stats": {
                  "type": "object",
                  "properties": {
                    "totalPhotos": {
                      "type": "integer",
                      "description": "The total number of photos."
                    },
                    "totalRatings": {
                      "type": "integer",
                      "description": "The total number of ratings."
                    },
                    "totalTips": {
                      "type": "integer",
                      "description": "The total number of tips."
                    }
                  },
                  "additionalProperties": true,
                  "description": "The place statistics counters."
                },
                "tastes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "A place taste."
                  },
                  "description": "The tastes associated with the place."
                },
                "tel": {
                  "type": "string",
                  "description": "The telephone number of the place."
                },
                "tips": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "The tip identifier."
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "The creation timestamp of the tip."
                      },
                      "text": {
                        "type": "string",
                        "description": "The tip text."
                      },
                      "lang": {
                        "type": "string",
                        "description": "The language code of the tip."
                      },
                      "url": {
                        "type": "string",
                        "description": "The canonical URL of the tip."
                      },
                      "agreeCount": {
                        "type": "integer",
                        "description": "The number of agreements on the tip."
                      },
                      "disagreeCount": {
                        "type": "integer",
                        "description": "The number of disagreements on the tip."
                      }
                    },
                    "additionalProperties": true,
                    "description": "One normalized Foursquare tip."
                  },
                  "description": "The embedded tips of the place."
                },
                "timezone": {
                  "type": "string",
                  "description": "The timezone of the place."
                },
                "website": {
                  "type": "string",
                  "description": "The website URL of the place."
                }
              },
              "additionalProperties": true,
              "required": [
                "fsqId",
                "name"
              ],
              "description": "One normalized Foursquare place."
            },
            "description": "The normalized place search results."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The normalized Foursquare place search response."
      }
    }
  ]
}
