Photo Scout
Find nearby photo spots using real street imagery, visual scores and camera headings.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"photo-scout": {
"url": "https://api.aisoup.net/photo-scout/mcp"
}
}
}Puntos de conexión remotos
https://api.aisoup.net/photo-scout/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (2)
🟢list_photo_scout_prices
Show per-search pricing, payment method and limitations. This tool is free.
Esquema de entrada
{
"type": "object",
"properties": {}
}Esquema de salida
{
"type": "object",
"properties": {
"priceUsd": {
"type": "string"
},
"network": {
"type": "string"
},
"scope": {
"type": "string"
}
},
"required": [
"priceUsd",
"network",
"scope"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢discover_photo_spots(route, requirements, searchProgram, searchBranches, query, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"route": {
"anyOf": [
{
"type": "object",
"properties": {
"origin": {
"anyOf": [
{
"type": "object",
"properties": {
"query": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 200
},
{
"type": "null"
}
]
},
"lat": {
"anyOf": [
{
"type": "number",
"minimum": -85,
"maximum": 85
},
{
"type": "null"
}
]
},
"lon": {
"anyOf": [
{
"type": "number",
"minimum": -180,
"maximum": 180
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 350
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"destination": {
"$ref": "#/properties/route/anyOf/0/properties/origin/anyOf/0"
},
"travelMode": {
"type": "string",
"enum": [
"walk",
"drive"
]
},
"corridorMeters": {
"type": "integer",
"minimum": 100,
"maximum": 2000
}
},
"required": [
"destination"
],
"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."
},
"requirements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"minLength": 1,
"maxLength": 400
},
"strength": {
"type": "string",
"enum": [
"required",
"preferred",
"forbidden"
]
},
"route": {
"type": "string",
"enum": [
"places",
"geography",
"features",
"visual"
]
},
"stepIds": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8
}
},
"required": [
"expression",
"strength",
"route",
"stepIds"
],
"additionalProperties": false
},
"maxItems": 16,
"description": "Condition ledger for compiled programs: required, preferred or forbidden; retrieval step IDs scope conditions to each logical branch."
},
"searchProgram": {
"anyOf": [
{
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,39}$"
},
"tool": {
"type": "string",
"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"
]
},
"inputs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 6
},
"queries": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"maxItems": 4
},
"geographicKinds": {
"type": "array",
"items": {
"type": "string",
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
]
},
"maxItems": 6
},
"osmFeatures": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"kind": {
"type": "string",
"enum": [
"tagged",
"intersection"
]
},
"filters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9_:.-]+$"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
}
},
"required": [
"key"
],
"additionalProperties": false
},
"maxItems": 6
},
"numericFilters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "^[A-Za-z0-9_:.-]+$"
},
"minimum": {
"type": [
"number",
"null"
]
},
"maximum": {
"type": [
"number",
"null"
]
}
},
"required": [
"key"
],
"additionalProperties": false
},
"maxItems": 4
},
"proximityMeters": {
"type": "integer",
"minimum": 0,
"maximum": 500
}
},
"required": [
"label"
],
"additionalProperties": false
},
"maxItems": 6
},
"combination": {
"type": "string",
"enum": [
"all",
"any"
]
},
"exclude": {
"type": "boolean"
},
"discoveryHints": {
"type": "boolean"
},
"weights": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 4
},
"maxItems": 6
},
"visualIntent": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"id",
"tool"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 24
},
"output": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"required": [
"steps",
"output"
],
"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",
"minLength": 1,
"maxLength": 200
},
"maxItems": 4
},
"geographicKinds": {
"type": "array",
"items": {
"type": "string",
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
]
},
"maxItems": 6
},
"geographicCombination": {
"type": "string",
"enum": [
"all",
"any"
]
},
"osmFeatures": {
"type": "array",
"items": {
"$ref": "#/properties/searchProgram/anyOf/0/properties/steps/items/properties/osmFeatures/items"
},
"maxItems": 6
},
"featureCombination": {
"type": "string",
"enum": [
"all",
"any"
]
},
"visualIntent": {
"type": "string",
"maxLength": 1000
}
},
"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."
},
"query": {
"type": "string",
"maxLength": 1000,
"description": "Natural-language request. Explicit text overrides conflicting structured parameters."
},
"poiQueries": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"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."
},
"geographicCombination": {
"type": "string",
"enum": [
"all",
"any"
],
"description": "AND/all or OR/any across geographic requirements; default all."
},
"featureCombination": {
"type": "string",
"enum": [
"all",
"any"
],
"description": "AND/all or OR/any across OSM feature requirements; default all."
},
"geographicKinds": {
"type": "array",
"items": {
"type": "string",
"enum": [
"lake",
"sea",
"river",
"peak",
"forest",
"waterside"
]
},
"maxItems": 6,
"description": "Spatial requirements; combination is controlled by geographicCombination."
},
"scoringIntent": {
"type": "string",
"maxLength": 1000,
"description": "Visual subject, style and requirements for matching and scoring."
},
"lat": {
"type": "number",
"minimum": -85,
"maximum": 85,
"description": "Latitude of the search center."
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude of the search center."
},
"radius": {
"type": "integer",
"minimum": 100,
"maximum": 20000,
"description": "Search radius in meters; default 1000."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "Deprecated compatibility field; ignored. All verified matching places are returned."
},
"photoStyles": {
"type": "array",
"items": {
"type": "string",
"enum": [
"nature",
"urban",
"vintage",
"iconic",
"artistic",
"waterside",
"minimal",
"adventure"
]
},
"minItems": 1,
"maxItems": 8,
"description": "Optional desired photo moods."
},
"preferences": {
"type": "string",
"maxLength": 500,
"description": "Additional photography preferences."
}
},
"required": [
"lat",
"lon"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia