Find nearby photo spots using real street imagery, visual scores and camera headings.
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.
Find POIs nearby or along a walking/driving route, compare available images, and return ranked photo spots with scores, camera headings, reasons and source links. Costs $2.00 USDC on Base per call.
Latitude of the search center.
Longitude of the search center.
Deprecated compatibility field; ignored. All verified matching places are returned.
Natural-language request. Explicit text overrides conflicting structured parameters.
Optional real road route. Default walking, 300 m corridor; up to 200 km. Origin omitted uses lat/lon. Destination accepts address or coordinates. Up to 50 photographic locations along the route.
Search radius in meters; default 1000.
Arbitrary POI categories or business names, e.g. coffee shops.
OSM physical features and attributes; combined using featureCombination. Tagged features use exact/existence filters; intersections use road topology.
Optional desired photo moods.
Additional photography preferences.
Condition ledger for compiled programs: required, preferred or forbidden; retrieval step IDs scope conditions to each logical branch.
Visual subject, style and requirements for matching and scoring.
Validated data-flow program over search/spatial/set, collect_images, score_images and rank_results tools. Leave all other target/spatial fields empty; global center/radius/styles are shared. Up to 24 steps and 8 source queries.
OR across independently constrained target groups; AND between target, geography and features inside a group. When set, leave top-level poiQueries/geographicKinds/osmFeatures empty.
Spatial requirements; combination is controlled by geographicCombination.
AND/all or OR/any across OSM feature requirements; default all.
AND/all or OR/any across geographic requirements; default all.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Find POIs nearby or along a walking/driving route, compare available images, and return ranked photo spots with scores, camera headings, reasons and source links. Costs $2.00 USDC on Base per call.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude of the search center. |
| lon* | number | Longitude of the search center. |
| limit | integer | Deprecated compatibility field; ignored. All verified matching places are returned. |
| query | string | Natural-language request. Explicit text overrides conflicting structured parameters. |
| route | any | Optional real road route. Default walking, 300 m corridor; up to 200 km. Origin omitted uses lat/lon. Destination accepts address or coordinates. Up to 50 photographic locations along the route. |
| radius | integer | Search radius in meters; default 1000. |
| poiQueries | array | Arbitrary POI categories or business names, e.g. coffee shops. |
| osmFeatures | array | OSM physical features and attributes; combined using featureCombination. Tagged features use exact/existence filters; intersections use road topology. |
| photoStyles | array | Optional desired photo moods. |
| preferences | string | Additional photography preferences. |
| requirements | array | Condition ledger for compiled programs: required, preferred or forbidden; retrieval step IDs scope conditions to each logical branch. |
| scoringIntent | string | Visual subject, style and requirements for matching and scoring. |
| searchProgram | any | Validated data-flow program over search/spatial/set, collect_images, score_images and rank_results tools. Leave all other target/spatial fields empty; global center/radius/styles are shared. Up to 24 steps and 8 source queries. |
| searchBranches | array | OR across independently constrained target groups; AND between target, geography and features inside a group. When set, leave top-level poiQueries/geographicKinds/osmFeatures empty. |
| geographicKinds | array | Spatial requirements; combination is controlled by geographicCombination. |
| featureCombination | string | AND/all or OR/any across OSM feature requirements; default all. |
| geographicCombination | string | AND/all or OR/any across geographic requirements; default all. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85,
"description": "Latitude of the search center."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the search center."
},
"limit": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Deprecated compatibility field; ignored. All verified matching places are returned."
},
"query": {
"type": "string",
"maxLength": 1000,
"description": "Natural-language request. Explicit text overrides conflicting structured parameters."
},
"route": {
"anyOf": [
{
"type": "object",
"required": [
"destination"
],
"properties": {
"origin": {
"anyOf": [
{
"type": "object",
"properties": {
"lat": {
"anyOf": [
{
"type": "number",
"maximum": 85,
"minimum": -85
},
{
"type": "null"
}
]
},
"lon": {
"anyOf": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 350
},
{
"type": "null"
}
]
},
"query": {
"anyOf": [
{
"type": "string",
"maxLength": 200,
"minLength": 1
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"travelMode": {
"enum": [
"walk",
"drive"
],
"type": "string"
},
"destination": {
"$ref": "#/properties/route/anyOf/0/properties/origin/anyOf/0"
},
"corridorMeters": {
"type": "integer",
"maximum": 2000,
"minimum": 100
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Optional real road route. Default walking, 300 m corridor; up to 200 km. Origin omitted uses lat/lon. Destination accepts address or coordinates. Up to 50 photographic locations along the route."
},
"radius": {
"type": "integer",
"maximum": 20000,
"minimum": 100,
"description": "Search radius in meters; default 1000."
},
"poiQueries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 4,
"description": "Arbitrary POI categories or business names, e.g. coffee shops."
},
"osmFeatures": {
"type": "array",
"items": {
"$ref": "#/properties/searchProgram/anyOf/0/properties/steps/items/properties/osmFeatures/items"
},
"maxItems": 6,
"description": "OSM physical features and attributes; combined using featureCombination. Tagged features use exact/existence filters; intersections use road topology."
},
"photoStyles": {
"type": "array",
"items": {
"enum": [
"nature",
"urban",
"vintage",
"iconic",
"artistic",
"waterside",
"minimal",
"adventure"
],
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"description": "Optional desired photo moods."
},
"preferences": {
"type": "string",
"maxLength": 500,
"description": "Additional photography preferences."
},
"requirements": {
"type": "array",
"items": {
"type": "object",
"required": [
"expression",
"strength",
"route",
"stepIds"
],
"properties": {
"route": {
"enum": [
"places",
"geography",
"features",
"visual"
],
"type": "string"
},
"stepIds": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8
},
"strength": {
"enum": [
"required",
"preferred",
"forbidden"
],
"type": "string"
},
"expression": {
"type": "string",
"maxLength": 400,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 16,
"description": "Condition ledger for compiled programs: required, preferred or forbidden; retrieval step IDs scope conditions to each logical branch."
},
"scoringIntent": {
"type": "string",
"maxLength": 1000,
"description": "Visual subject, style and requirements for matching and scoring."
},
"searchProgram": {
"anyOf": [
{
"type": "object",
"required": [
"steps",
"output"
],
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"tool"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,39}$"
},
"tool": {
"enum": [
"search_places",
"search_geography",
"search_features",
"sample_geography",
"feature_points",
"filter_geography",
"filter_features",
"union",
"intersection",
"area_imagery",
"point_imagery",
"collect_images",
"score_images",
"rank_results"
],
"type": "string"
},
"inputs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 6
},
"exclude": {
"type": "boolean"
},
"queries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 4
},
"weights": {
"type": "array",
"items": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"maxItems": 6
},
"combination": {
"enum": [
"all",
"any"
],
"type": "string"
},
"osmFeatures": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"kind": {
"enum": [
"tagged",
"intersection"
],
"type": "string"
},
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9_:.-]+$",
"maxLength": 80,
"minLength": 1
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 6
},
"numericFilters": {
"type": "array",
"items": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"pattern": "^[A-Za-z0-9_:.-]+$",
"maxLength": 80,
"minLength": 1
},
"maximum": {
"type": [
"number",
"null"
]
},
"minimum": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
},
"maxItems": 4
},
"proximityMeters": {
"type": "integer",
"maximum": 500,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 6
},
"visualIntent": {
"type": "string",
"maxLength": 1000
},
"discoveryHints": {
"type": "boolean"
},
"geographicKinds": {
"type": "array",
"items": {
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
],
"type": "string"
},
"maxItems": 6
}
},
"additionalProperties": false
},
"maxItems": 24,
"minItems": 1
},
"output": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Validated data-flow program over search/spatial/set, collect_images, score_images and rank_results tools. Leave all other target/spatial fields empty; global center/radius/styles are shared. Up to 24 steps and 8 source queries."
},
"searchBranches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"poiQueries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 4
},
"osmFeatures": {
"type": "array",
"items": {
"$ref": "#/properties/searchProgram/anyOf/0/properties/steps/items/properties/osmFeatures/items"
},
"maxItems": 6
},
"visualIntent": {
"type": "string",
"maxLength": 1000
},
"geographicKinds": {
"type": "array",
"items": {
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
],
"type": "string"
},
"maxItems": 6
},
"featureCombination": {
"enum": [
"all",
"any"
],
"type": "string"
},
"geographicCombination": {
"enum": [
"all",
"any"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 6,
"description": "OR across independently constrained target groups; AND between target, geography and features inside a group. When set, leave top-level poiQueries/geographicKinds/osmFeatures empty."
},
"geographicKinds": {
"type": "array",
"items": {
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
],
"type": "string"
},
"maxItems": 6,
"description": "Spatial requirements; combination is controlled by geographicCombination."
},
"featureCombination": {
"enum": [
"all",
"any"
],
"type": "string",
"description": "AND/all or OR/any across OSM feature requirements; default all."
},
"geographicCombination": {
"enum": [
"all",
"any"
],
"type": "string",
"description": "AND/all or OR/any across geographic requirements; default all."
}
},
"additionalProperties": false
}Show per-search pricing, payment method and limitations. This tool is free.
No arguments.
{
"type": "object",
"properties": {}
}