Photo Scout

Find nearby photo spots using real street imagery, visual scores and camera headings.

我该使用它吗

质量与安全性

B
描述质量
80%
模式完整度
64%
命名质量
90%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,880token 数(工具定义)
~10.7 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.47%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "photo-scout": {
      "url": "https://api.aisoup.net/photo-scout/mcp"
    }
  }
}

远程端点

https://api.aisoup.net/photo-scout/mcpstreamable-http

它能做什么

工具清单

工具(2)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢list_photo_scout_prices

Show per-search pricing, payment method and limitations. This tool is free.

输入模式

{
  "type": "object",
  "properties": {}
}

输出模式

{
  "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.

输入模式

{
  "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#"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本2 个工具