MCP Server
The SkyWatch MCP (Model Context Protocol) Server enables AI assistants to search satellite imagery, estimate pricing, and browse available satellites through natural language conversations.
MCP Endpoint: https://api.skywatch.co/mcp
The MCP server uses guest authentication. No API key or account setup is needed — connect your AI client and start searching.
Available Tools
search_archive_imagery
Search SkyWatch satellite imagery archive using natural language or structured parameters. Returns results with direct links to SkyWatch Explore for viewing and ordering.
| Parameter | Type | Default | Description |
|---|---|---|---|
location_query | string | — | Natural language location (e.g., "San Francisco", "downtown Toronto") |
coordinates | object | — | {lat, lon, radius_km} for precise location search |
bbox | array | — | Bounding box [west, south, east, north] |
geojson | object | — | GeoJSON geometry (Polygon or Point) |
start_date | string | — | ISO 8601 or natural language (e.g., "last month") |
end_date | string | — | ISO 8601 or natural language (e.g., "today") |
max_cloud_cover | number | 20 | Maximum cloud cover percentage (0–100) |
min_coverage | number | — | Minimum area coverage percentage (0–100) |
resolution_preference | string | — | any, low, medium, high, very_high |
data_type | string | all | all, satellite, optical, aerial, elevation, sar, basemaps |
preferred_providers | array | — | Provider names (e.g., ["Maxar", "Planet", "Airbus"]) |
order_by | string | date | Sort by: date, resolution, coverage, cost |
limit | number | 10 | Maximum results (1–50) |
At least one location parameter (location_query, coordinates, bbox, or geojson) is required.
calculate_pricing
Estimate the cost for satellite imagery based on location, date range, and resolution.
| Parameter | Type | Default | Description |
|---|---|---|---|
location_query | string | — | Natural language location |
coordinates | object | — | {lat, lon, radius_km} for precise location |
geojson | object | — | GeoJSON Polygon geometry |
start_date | string | — | Start date (ISO 8601 or natural language) |
end_date | string | — | End date (ISO 8601 or natural language) |
resolution | string | high | very_high (<1m), high (1–5m), medium (5–30m), low (>30m) |
source | string | — | Specific product name (e.g., "Pleiades Neo") |
offering_id | string | — | Product offering UUID for precise pricing |
tasking | boolean | false | Price for new tasking (true) or archive imagery (false) |
interval | string | — | Capture interval for tasking (e.g., "7d", "30d"). Required when tasking=true |
get_satellites
Get available satellites and sensors with their capabilities, resolution, and specifications.
| Parameter | Type | Default | Description |
|---|---|---|---|
filter_by_resolution | string | all | very_high, high, medium, low, all |
filter_by_type | string | all | optical, sar, elevation, all |
include_details | boolean | true | Include provider and revisit time specifications |
get_offerings
Browse available satellite imagery products and their specifications, including archive and tasking options.
| Parameter | Type | Default | Description |
|---|---|---|---|
category | string | all | archive, tasking, all |
partner_filter | string | — | Filter by provider name (e.g., "Maxar", "Planet") |
product_name | string | — | Filter by product name (e.g., "Pleiades Neo") |
resolution_filter | object | — | {min_meters, max_meters} for resolution range |
location | object | — | GeoJSON geometry to check availability for a specific area |
limit | number | 20 | Maximum results (1–100) |
Resources
The MCP server exposes three read-only resources:
| Resource URI | Name | Format | Description |
|---|---|---|---|
skywatch://providers | Satellite Imagery Providers | JSON | Provider capabilities, pricing, and specifications |
skywatch://pricing-tiers | Pricing Tiers | JSON | Resolution-based pricing breakdown with 5 tiers |
skywatch://getting-started | Getting Started Guide | Markdown | Example queries and usage tips |
Examples
Search for Imagery
- curl
- Python
- JavaScript
curl -X POST https://api.skywatch.co/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_archive_imagery",
"arguments": {
"location_query": "San Francisco",
"start_date": "last month",
"end_date": "today",
"max_cloud_cover": 15,
"resolution_preference": "high",
"limit": 5
}
}
}'
import requests
response = requests.post(
"https://api.skywatch.co/mcp",
json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_archive_imagery",
"arguments": {
"location_query": "San Francisco",
"start_date": "last month",
"end_date": "today",
"max_cloud_cover": 15,
"resolution_preference": "high",
"limit": 5
}
}
}
)
print(response.json())
const response = await fetch("https://api.skywatch.co/mcp", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "search_archive_imagery",
arguments: {
location_query: "San Francisco",
start_date: "last month",
end_date: "today",
max_cloud_cover: 15,
resolution_preference: "high",
limit: 5
}
}
})
});
console.log(await response.json());
Get Pricing Estimate
curl -X POST https://api.skywatch.co/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "calculate_pricing",
"arguments": {
"location_query": "Central Park, New York",
"resolution": "high",
"start_date": "last month",
"end_date": "today"
}
}
}'
List Available Satellites
curl -X POST https://api.skywatch.co/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_satellites",
"arguments": {
"filter_by_type": "optical",
"filter_by_resolution": "very_high"
}
}
}'
Read a Resource
curl -X POST https://api.skywatch.co/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "skywatch://providers"
}
}'
Protocol Details
The MCP server implements the MCP 2025-03-26 specification over HTTP with JSON-RPC 2.0.
Supported Methods:
| Method | Description |
|---|---|
initialize | Initialize MCP session |
tools/list | List available tools |
tools/call | Execute a tool |
resources/list | List available resources |
resources/read | Read a resource |
prompts/list | List available prompts |
prompts/get | Get a prompt |
Response Format:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "## 10 Results Found\n..."
}
]
}
}
Troubleshooting
Search returns no results:
- Expand the date range
- Increase
max_cloud_cover(default is 20%) - Try a larger search area or use
anyforresolution_preference
Timeout errors:
- The search has a 25-second timeout
- Try reducing the search area or date range
- Use specific coordinates instead of large regions
Verify the endpoint is running:
curl https://api.skywatch.co/mcp/health