@agentutility/mcp-locale 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -0
- package/dist/index.js +86 -0
- package/dist/tools.generated.js +807 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# @agentutility/mcp-locale
|
|
2
|
+
|
|
3
|
+
> Geo, weather, civic, identity primitives.
|
|
4
|
+
|
|
5
|
+
Geocoding, weather, timezone, holidays, flight status, building permits, property tax, VIN decode — the local-context layer for any agent that touches a place or a person.
|
|
6
|
+
|
|
7
|
+
**Pricing:** pay-per-call in USDC on Base. No subscriptions, no API keys. See per-tool prices below.
|
|
8
|
+
|
|
9
|
+
## Install — Claude Desktop
|
|
10
|
+
|
|
11
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"mcpServers": {
|
|
16
|
+
"agentutility-locale": {
|
|
17
|
+
"command": "npx",
|
|
18
|
+
"args": ["-y", "@agentutility/mcp-locale"],
|
|
19
|
+
"env": { "X402_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY_HEX" }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Restart Claude Desktop. 26 tools appear in the tool palette.
|
|
26
|
+
|
|
27
|
+
## Install — Cursor
|
|
28
|
+
|
|
29
|
+
Add to `.cursor/mcp.json`:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"mcpServers": {
|
|
34
|
+
"agentutility-locale": {
|
|
35
|
+
"command": "npx",
|
|
36
|
+
"args": ["-y", "@agentutility/mcp-locale"],
|
|
37
|
+
"env": { "X402_PRIVATE_KEY": "0x..." }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Funding
|
|
44
|
+
|
|
45
|
+
Send any amount of **USDC on Base mainnet** to the address derived from your `X402_PRIVATE_KEY`. The MCP server uses it to pay for tool calls automatically.
|
|
46
|
+
|
|
47
|
+
USDC on Base contract: `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`
|
|
48
|
+
|
|
49
|
+
## Tools (26)
|
|
50
|
+
|
|
51
|
+
| Tool | Description |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `address-geocode` | (0.02 USDC/call) Geocoder / address-to-lat-lng / location resolver. Address or place-name → coords + structured parts (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim (free public). |
|
|
54
|
+
| `airport-delays` | (0.02 USDC/call) FAA NAS Status — current US airport delays, ground stops, ground delay programs, weather-driven program changes. Federal public, no auth. |
|
|
55
|
+
| `astro-times` | (0.002 USDC/call) sunrise-sunset / golden-hour / civil twilight / nautical dusk / day-length / solar-noon / dawn-dusk / astronomy times. Computes sunrise, sunset, solar noon, day length (seconds), and civil / nautical / astronomical twilight begin & end for any latitude/longitude on any date. UTC ISO8601 strings. Wraps sunrise-sunset.org's public API — no auth, commercial-OK. |
|
|
56
|
+
| `bin-lookup` | (0.02 USDC/call) Credit card BIN / IIN lookup. First 6-8 digits identify issuing bank, country, brand (Visa/Mastercard/Amex), card type (debit/credit/prepaid). Fraud screening, payment routing, geo-risk. Powered by binlist.net. |
|
|
57
|
+
| `building-permits` | (0.03 USDC/call) Building permits multi-city open-data lookup. NYC, SF, Chicago, LA, Seattle, Austin. Filter by address substring, status, type, recency. Each city normalized to common shape (id, type, status, description, address, dates, cost). Real-estate / construction primitive. |
|
|
58
|
+
| `card-bin-lookup` | (0.02 USDC/call) Credit card BIN lookup / IIN lookup / card-issuer lookup. First 6-8 digits to issuer bank, country, brand (Visa/Mastercard/Amex/Discover/JCB/UnionPay), card type (debit/credit/prepaid). Use for fraud screening, payment routing, geo-risk. |
|
|
59
|
+
| `country-info` | (0.002 USDC/call) Country info / ISO 3166 / country code lookup / capital city lookup / currencies by country / population / region resolver. Resolves country metadata by common name, ISO 3166 alpha-2/alpha-3 code, or capital city, returning name, codes, capital, region, subregion, population, area (km²), currencies, languages, timezones, flag emoji, neighboring-country codes, and international calling code. Wraps the public REST Countries v3.1 API — no auth, commercial-OK. |
|
|
60
|
+
| `earthquakes-recent` | (0.002 USDC/call) Earthquake feed / seismic activity / USGS / recent quakes / quake monitor / tremor data / fault line activity / tsunami alerts. Returns recent earthquakes from the past hour / day / week / month, filtered by minimum magnitude and an optional bounding box. Each quake includes magnitude + type, depth (km), place, ISO8601 time, lat/lon, tsunami flag, USGS event URL, and felt-report count when available. Wraps USGS GeoJSON summary feeds — public domain, no auth. |
|
|
61
|
+
| `flight-status` | (0.01 USDC/call) Flight status / live aircraft position / flight tracker / ICAO24 lookup / callsign lookup / aircraft bounding-box / OpenSky Network state-vector wrapper. Pass icao24 (6-char hex transponder, e.g. 'a808c5'), a callsign (e.g. 'UAL124'), or a bbox {lamin,lamax,lomin,lomax}. Returns last-known position, altitude, speed, heading, on-ground flag, and origin country per aircraft. Single hit to OpenSky's anonymous tier (no API key, commercial-OK with attribution; shared 400 req/day pool). |
|
|
62
|
+
| `holiday-lookup` | (0.002 USDC/call) Public holidays / bank holidays / national holidays / federal holidays / holiday calendar / per-country dates. Returns the official public holidays for any ISO 3166-1 alpha-2 country and year, with localized names, English names, type (Public, Bank, School, etc.), regional vs. national flag, and county/region scoping where applicable. Wraps the public Nager.Date API — no auth, commercial-OK. |
|
|
63
|
+
| `iata-airport-info` | (0.005 USDC/call) IATA / ICAO airport code lookup. Returns name, type, location, country, region, municipality, scheduled-service flag, home/wikipedia links. OurAirports CC0. |
|
|
64
|
+
| `property-tax` | (0.01 USDC/call) Property tax lookup. Search a county's open-data assessor dataset by street address or parcel ID and return parcel id, owner, assessed and market value, sqft, year built, zoning, and a permalink to the source portal. Covers NYC PLUTO, SF Assessor Roll, and Cook County (Chicago) — open-data CC0 sources. Same backend as property-tax-assessment under a more search-friendly slug. |
|
|
65
|
+
| `property-tax-assessment` | (0.01 USDC/call) Property tax assessor lookup (multi-county). NYC PLUTO, SF Assessor Roll, Cook County (Chicago). Returns assessed value, owner, parcel ID, sqft, year built, zoning. Open-data, CC0-licensed. |
|
|
66
|
+
| `reverse-geocode` | (0.02 USDC/call) Reverse geocoder / lat-lng-to-address. Coords → structured address (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim. |
|
|
67
|
+
| `satellite-address` | (0.01 USDC/call) Address to satellite image / one-call address → cloud-free Sentinel-2 thumbnail / postal-code satellite snapshot / place-name to space view. Composes OpenStreetMap Nominatim geocoding with the Sentinel Hub Processing API: caller sends a free-form address and gets back both the geocoded address metadata and a recent cloud-free Sentinel-2 PNG centered on the best match. Optional NASA GIBS MODIS fallback for regional views. JSON output contains: { query, geocode_result, lat, lon, zoom, bbox, data_base64, license, attribution, ... }. |
|
|
68
|
+
| `satellite-bbox` | (0.02 USDC/call) Bounding-box satellite composite / Sentinel-2 cloud-free mosaic / region satellite snapshot / arbitrary bbox to imagery. Returns a single PNG composite over an arbitrary lat/lon bounding box, sourced from the least-cloudy Sentinel-2 observation per pixel across the requested date range (mosaickingOrder=leastCC). Output dimensions auto-scale to bbox aspect ratio. Native 10m resolution. Bbox area capped at 4 sq-deg per call — larger regions should be stitched from multiple calls. JSON output includes { bbox, time_range, size, data_base64, license, attribution, ... }. |
|
|
69
|
+
| `satellite-change` | (0.05 USDC/call) Satellite before/after / change detection / Sentinel-2 time-series diff / construction monitoring / deforestation tracker / fire-burn-scar imagery. Renders two cloud-free Sentinel-2 composites of the same bounding box anchored at two dates, each averaged over the window_days prior. Returns both base64 PNGs side-by-side so clients can display, animate, or pixel-diff them. Use cases: construction-site progress, vegetation change, wildfire burn scars, port/parking-lot activity, glacier retreat. Native 10m. Bbox area ≤ 4 sq-deg. |
|
|
70
|
+
| `satellite-tile` | (0.005 USDC/call) Satellite imagery tile / lat-lon to satellite PNG / Sentinel-2 tile API / cloud-free satellite snapshot / agent-callable satellite imagery. Returns a recent cloud-free Sentinel-2 (10m) PNG centered on a lat/lon at a slippy-map zoom level. Default source: CDSE Sentinel Hub Processing API with mosaickingOrder=leastCC over the prior 30 days (configurable via days_back). Optional NASA GIBS MODIS Terra (~250m) source for regional zoom ≤9 with zero quota. Output is JSON: { source, lat, lon, zoom, bbox, data_base64, license, attribution, ... }. License: Copernicus open data (CC BY-SA 3.0 IGO) or NASA public domain; attribution string included in every response. |
|
|
71
|
+
| `sports-schedule` | (0.01 USDC/call) Sports schedule / MLB / NBA / NHL / NFL / WNBA / MLS / EPL / La Liga / Bundesliga / Serie A — next games + recent results / sports schedule API / TheSportsDB v1 wrapper. Pass a league code; scope='upcoming' (default) returns the next 15 events with start time, venue, teams. scope='recent' returns last 15 completed games including scores. Single hit to TheSportsDB free tier (no API key, commercial-OK with attribution). |
|
|
72
|
+
| `sunrise-sunset` | (0.002 USDC/call) Sunrise sunset times. Returns sunrise, sunset, solar noon, day length, and civil / nautical / astronomical twilight begin and end for any latitude/longitude on any date. Also covers golden-hour and dawn / dusk. Same backend as astro-times under a more search-friendly slug. UTC ISO8601 strings. |
|
|
73
|
+
| `timezone-convert` | (0.001 USDC/call) Timezone convert / IANA tz conversion / DST-aware time arithmetic / wall-clock to UTC / convert across cities. Convert a datetime from one IANA timezone to another. ISO-8601 input — bare wall-time strings are interpreted in the from_tz, fully-qualified offsets are honored. DST is handled correctly (uses V8's built-in tzdata via Intl.DateTimeFormat). Returns both formatted strings, both UTC offsets, and the difference in hours. |
|
|
74
|
+
| `timezone-lookup` | (0.001 USDC/call) Timezone lookup / IANA tz / UTC offset / DST status / local time at lat-lng / which timezone. Resolves the current local time, IANA timezone name, UTC offset (seconds), and DST status either by IANA timezone string (e.g. 'America/Los_Angeles') or by latitude/longitude coordinates. Wraps the public TimeAPI.io endpoint — no auth, commercial-OK. |
|
|
75
|
+
| `vin-decode` | (0.005 USDC/call) VIN decoder / VIN lookup / decode VIN / vehicle identification number / NHTSA vPIC wrapper. Pass a 17-char VIN; returns make, model, model_year, manufacturer, plant country, body class, vehicle type, fuel type, engine cylinders/displacement/HP, drive type, transmission, GVWR, safety features (ABS, traction control, airbags), and any decode errors. Includes a `valid_checksum` flag (ISO 3779 mod-11 check; reliable for North-American VINs). Backed by NHTSA's free public vPIC API — US Govt public domain, no API key required. |
|
|
76
|
+
| `visa-requirements` | (0.005 USDC/call) Visa requirements lookup. Passport country + destination → visa-free / e-visa / visa-on-arrival / visa-required + duration. Public CC-BY dataset. |
|
|
77
|
+
| `weather` | (0.005 USDC/call) Weather API / weather forecast / current weather / hourly forecast. Returns current conditions plus 1-7 day daily forecast and optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation, sunrise/sunset, UV index. Open-Meteo backend. |
|
|
78
|
+
| `weather-forecast` | (0.005 USDC/call) Weather forecast / hourly forecast / current weather / temperature / precipitation / UV index / sunrise-sunset / Open-Meteo / weather API. Returns current conditions, a 1-7 day daily forecast, and an optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation total + probability, sunrise/sunset, max UV index, and WMO weather code. Current includes temperature, apparent temperature, humidity %, wind speed/direction, precipitation, weather code, and is_day. Metric or imperial units. Wraps the public Open-Meteo API — no auth, commercial-OK, CC-BY 4.0. |
|
|
79
|
+
|
|
80
|
+
## How it works
|
|
81
|
+
|
|
82
|
+
1. Agent calls a tool (e.g. `address-geocode`).
|
|
83
|
+
2. MCP server POSTs to `https://x402.agentutility.ai/address-geocode`.
|
|
84
|
+
3. The endpoint responds **HTTP 402** with payment instructions.
|
|
85
|
+
4. The MCP server signs an EIP-3009 USDC transfer authorization with `X402_PRIVATE_KEY` and retries.
|
|
86
|
+
5. CDP facilitator settles on Base.
|
|
87
|
+
6. The endpoint returns the actual response.
|
|
88
|
+
|
|
89
|
+
The agent never sees the payment flow — it just gets the result.
|
|
90
|
+
|
|
91
|
+
## Links
|
|
92
|
+
|
|
93
|
+
- Cluster overview: https://agentutility.ai/locale/
|
|
94
|
+
- All MCP packages: https://mcp.agentutility.ai/
|
|
95
|
+
- Source: https://github.com/rooz21/x402/tree/main/packages/mcp-locale
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
**Version:** 0.1.8 · **License:** MIT
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @agentutility/mcp-<cluster> — stdio MCP server exposing the cluster's
|
|
4
|
+
* x402-paid endpoints as MCP tools. Forwards every CallToolRequest to
|
|
5
|
+
* x402.agentutility.ai, where @x402/fetch handles 402 → payment → retry
|
|
6
|
+
* using the agent's own wallet (X402_PRIVATE_KEY env var).
|
|
7
|
+
*
|
|
8
|
+
* Boilerplate is single-sourced at packages/_template/src/index.ts and
|
|
9
|
+
* copied verbatim into each packages/mcp-<cluster>/src/index.ts by
|
|
10
|
+
* scripts/generate-mcp-clusters.mjs. The codegen also writes a matching
|
|
11
|
+
* tools.generated.ts so this file imports CLUSTER_SLUG + VERSION + TOOLS
|
|
12
|
+
* rather than hard-coding.
|
|
13
|
+
*
|
|
14
|
+
* Required env: X402_PRIVATE_KEY (hex EVM key, USDC on Base).
|
|
15
|
+
* Optional env: X402_BASE_URL (default https://x402.agentutility.ai)
|
|
16
|
+
* X402_RPC_URL (default https://mainnet.base.org)
|
|
17
|
+
*/
|
|
18
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
19
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
20
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
21
|
+
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
|
|
22
|
+
import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm";
|
|
23
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
24
|
+
import { createPublicClient, http } from "viem";
|
|
25
|
+
import { base } from "viem/chains";
|
|
26
|
+
import { TOOLS, CLUSTER_SLUG, VERSION } from "./tools.generated.js";
|
|
27
|
+
const BASE_URL = (process.env.X402_BASE_URL || "https://x402.agentutility.ai").replace(/\/$/, "");
|
|
28
|
+
const RPC_URL = process.env.X402_RPC_URL || "https://mainnet.base.org";
|
|
29
|
+
const PK = process.env.X402_PRIVATE_KEY;
|
|
30
|
+
if (!PK) {
|
|
31
|
+
console.error(`[@agentutility/mcp-${CLUSTER_SLUG}] FATAL: X402_PRIVATE_KEY env var is required.`);
|
|
32
|
+
console.error("Set it to a hex-encoded EVM private key with USDC balance on Base (chain 8453).");
|
|
33
|
+
console.error("USDC on Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913");
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const account = privateKeyToAccount((PK.startsWith("0x") ? PK : `0x${PK}`));
|
|
37
|
+
const publicClient = createPublicClient({
|
|
38
|
+
chain: base,
|
|
39
|
+
transport: http(RPC_URL),
|
|
40
|
+
});
|
|
41
|
+
const signer = toClientEvmSigner(account, publicClient);
|
|
42
|
+
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(signer));
|
|
43
|
+
const paidFetch = wrapFetchWithPayment(fetch, client);
|
|
44
|
+
async function trackedFetch(url, init) {
|
|
45
|
+
const headers = new Headers(init?.headers);
|
|
46
|
+
headers.set("X-Agent-Channel", `mcp-stdio-${CLUSTER_SLUG}`);
|
|
47
|
+
headers.set("X-Agent-Id", "47167");
|
|
48
|
+
if (!headers.has("User-Agent")) {
|
|
49
|
+
headers.set("User-Agent", `agentutility-mcp/${CLUSTER_SLUG}/${VERSION}`);
|
|
50
|
+
}
|
|
51
|
+
return paidFetch(url, { ...init, headers });
|
|
52
|
+
}
|
|
53
|
+
const server = new Server({ name: `agentutility-${CLUSTER_SLUG}`, version: VERSION }, { capabilities: { tools: {} } });
|
|
54
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
55
|
+
tools: TOOLS.map((t) => ({
|
|
56
|
+
name: t.name,
|
|
57
|
+
description: t.description,
|
|
58
|
+
inputSchema: t.input_schema,
|
|
59
|
+
})),
|
|
60
|
+
}));
|
|
61
|
+
server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
62
|
+
const name = req.params.name;
|
|
63
|
+
const tool = TOOLS.find((t) => t.name === name);
|
|
64
|
+
if (!tool) {
|
|
65
|
+
return { content: [{ type: "text", text: `Unknown tool: ${name}` }], isError: true };
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const res = await trackedFetch(`${BASE_URL}/${tool.http_name}`, {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: { "Content-Type": "application/json" },
|
|
71
|
+
body: JSON.stringify(req.params.arguments ?? {}),
|
|
72
|
+
});
|
|
73
|
+
const body = await res.text();
|
|
74
|
+
if (!res.ok) {
|
|
75
|
+
return { content: [{ type: "text", text: `HTTP ${res.status}: ${body}` }], isError: true };
|
|
76
|
+
}
|
|
77
|
+
return { content: [{ type: "text", text: body }] };
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return {
|
|
81
|
+
content: [{ type: "text", text: `tool call failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
82
|
+
isError: true,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
await server.connect(new StdioServerTransport());
|
|
@@ -0,0 +1,807 @@
|
|
|
1
|
+
/** Auto-generated by scripts/generate-mcp-clusters.mjs. Do not edit by hand. */
|
|
2
|
+
export const CLUSTER_SLUG = "locale";
|
|
3
|
+
export const VERSION = "0.1.8";
|
|
4
|
+
export const TOOLS = [
|
|
5
|
+
{
|
|
6
|
+
"name": "address-geocode",
|
|
7
|
+
"http_name": "address-geocode",
|
|
8
|
+
"description": "(0.02 USDC/call) Geocoder / address-to-lat-lng / location resolver. Address or place-name → coords + structured parts (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim (free public).",
|
|
9
|
+
"method": "POST",
|
|
10
|
+
"input_schema": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"address": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "Free-form address, postal code, place name, or POI. Examples: '1600 Amphitheatre Parkway, Mountain View, CA', '10115 Berlin', 'Eiffel Tower'."
|
|
16
|
+
},
|
|
17
|
+
"country_codes": {
|
|
18
|
+
"type": "array",
|
|
19
|
+
"description": "Optional ISO 3166-1 alpha-2 filter, e.g. ['us','ca']."
|
|
20
|
+
},
|
|
21
|
+
"limit": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"description": "1-10. Default 5."
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"required": [
|
|
27
|
+
"address"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "airport-delays",
|
|
33
|
+
"http_name": "airport-delays",
|
|
34
|
+
"description": "(0.02 USDC/call) FAA NAS Status — current US airport delays, ground stops, ground delay programs, weather-driven program changes. Federal public, no auth.",
|
|
35
|
+
"method": "POST",
|
|
36
|
+
"input_schema": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"airport": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "IATA-3 (e.g. 'JFK')."
|
|
42
|
+
},
|
|
43
|
+
"event_type": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": [
|
|
46
|
+
"delay",
|
|
47
|
+
"ground_stop",
|
|
48
|
+
"ground_delay",
|
|
49
|
+
"closure",
|
|
50
|
+
"all"
|
|
51
|
+
],
|
|
52
|
+
"description": "Filter event class. 'ground_stop' = full traffic halt, 'ground_delay' = GDP metering, 'delay' = arrival/departure delay, 'closure' = airport/runway closed, 'all' = no filter (default)."
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "astro-times",
|
|
59
|
+
"http_name": "astro-times",
|
|
60
|
+
"description": "(0.002 USDC/call) sunrise-sunset / golden-hour / civil twilight / nautical dusk / day-length / solar-noon / dawn-dusk / astronomy times. Computes sunrise, sunset, solar noon, day length (seconds), and civil / nautical / astronomical twilight begin & end for any latitude/longitude on any date. UTC ISO8601 strings. Wraps sunrise-sunset.org's public API — no auth, commercial-OK.",
|
|
61
|
+
"method": "POST",
|
|
62
|
+
"input_schema": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"properties": {
|
|
65
|
+
"latitude": {
|
|
66
|
+
"type": "number",
|
|
67
|
+
"description": "Decimal degrees, range [-90, 90]. Positive north."
|
|
68
|
+
},
|
|
69
|
+
"longitude": {
|
|
70
|
+
"type": "number",
|
|
71
|
+
"description": "Decimal degrees, range [-180, 180]. Positive east."
|
|
72
|
+
},
|
|
73
|
+
"date": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"description": "Date in YYYY-MM-DD. Defaults to today (UTC) if omitted."
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"required": [
|
|
79
|
+
"latitude",
|
|
80
|
+
"longitude"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "bin-lookup",
|
|
86
|
+
"http_name": "bin-lookup",
|
|
87
|
+
"description": "(0.02 USDC/call) Credit card BIN / IIN lookup. First 6-8 digits identify issuing bank, country, brand (Visa/Mastercard/Amex), card type (debit/credit/prepaid). Fraud screening, payment routing, geo-risk. Powered by binlist.net.",
|
|
88
|
+
"method": "POST",
|
|
89
|
+
"input_schema": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"properties": {
|
|
92
|
+
"bin": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"description": "6-8 digit BIN. NEVER pass full card numbers — PCI scope risk."
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"required": [
|
|
98
|
+
"bin"
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "building-permits",
|
|
104
|
+
"http_name": "building-permits",
|
|
105
|
+
"description": "(0.03 USDC/call) Building permits multi-city open-data lookup. NYC, SF, Chicago, LA, Seattle, Austin. Filter by address substring, status, type, recency. Each city normalized to common shape (id, type, status, description, address, dates, cost). Real-estate / construction primitive.",
|
|
106
|
+
"method": "POST",
|
|
107
|
+
"input_schema": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"properties": {
|
|
110
|
+
"city": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "One of: 'nyc', 'sf', 'chicago', 'la', 'seattle', 'austin'."
|
|
113
|
+
},
|
|
114
|
+
"address": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "Street name or address substring (case-insensitive). Optional."
|
|
117
|
+
},
|
|
118
|
+
"status": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"description": "Filter on permit status (city-specific values, e.g. 'ISSUED'). Optional."
|
|
121
|
+
},
|
|
122
|
+
"permit_type": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"description": "Filter on permit type (city-specific). Optional."
|
|
125
|
+
},
|
|
126
|
+
"days": {
|
|
127
|
+
"type": "number",
|
|
128
|
+
"description": "Restrict to permits within last N days. Optional."
|
|
129
|
+
},
|
|
130
|
+
"limit": {
|
|
131
|
+
"type": "number",
|
|
132
|
+
"description": "Max records to return (1-100). Default 20."
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"required": [
|
|
136
|
+
"city"
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "card-bin-lookup",
|
|
142
|
+
"http_name": "card-bin-lookup",
|
|
143
|
+
"description": "(0.02 USDC/call) Credit card BIN lookup / IIN lookup / card-issuer lookup. First 6-8 digits to issuer bank, country, brand (Visa/Mastercard/Amex/Discover/JCB/UnionPay), card type (debit/credit/prepaid). Use for fraud screening, payment routing, geo-risk.",
|
|
144
|
+
"method": "POST",
|
|
145
|
+
"input_schema": {
|
|
146
|
+
"type": "object",
|
|
147
|
+
"properties": {
|
|
148
|
+
"bin": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"description": "First 6-8 digits of the card number to look up (the BIN/IIN identifying the issuer)."
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"required": [
|
|
154
|
+
"bin"
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"name": "country-info",
|
|
160
|
+
"http_name": "country-info",
|
|
161
|
+
"description": "(0.002 USDC/call) Country info / ISO 3166 / country code lookup / capital city lookup / currencies by country / population / region resolver. Resolves country metadata by common name, ISO 3166 alpha-2/alpha-3 code, or capital city, returning name, codes, capital, region, subregion, population, area (km²), currencies, languages, timezones, flag emoji, neighboring-country codes, and international calling code. Wraps the public REST Countries v3.1 API — no auth, commercial-OK.",
|
|
162
|
+
"method": "POST",
|
|
163
|
+
"input_schema": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"query": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"description": "Search string — country name (e.g. 'Germany'), ISO code (e.g. 'DE'), or capital city (e.g. 'Berlin'), depending on query_type."
|
|
169
|
+
},
|
|
170
|
+
"query_type": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"enum": [
|
|
173
|
+
"name",
|
|
174
|
+
"code",
|
|
175
|
+
"capital"
|
|
176
|
+
],
|
|
177
|
+
"description": "How to interpret 'query'. Default 'name'."
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"required": [
|
|
181
|
+
"query"
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"name": "earthquakes-recent",
|
|
187
|
+
"http_name": "earthquakes-recent",
|
|
188
|
+
"description": "(0.002 USDC/call) Earthquake feed / seismic activity / USGS / recent quakes / quake monitor / tremor data / fault line activity / tsunami alerts. Returns recent earthquakes from the past hour / day / week / month, filtered by minimum magnitude and an optional bounding box. Each quake includes magnitude + type, depth (km), place, ISO8601 time, lat/lon, tsunami flag, USGS event URL, and felt-report count when available. Wraps USGS GeoJSON summary feeds — public domain, no auth.",
|
|
189
|
+
"method": "POST",
|
|
190
|
+
"input_schema": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"properties": {
|
|
193
|
+
"time_range": {
|
|
194
|
+
"type": "string",
|
|
195
|
+
"enum": [
|
|
196
|
+
"hour",
|
|
197
|
+
"day",
|
|
198
|
+
"week",
|
|
199
|
+
"month"
|
|
200
|
+
],
|
|
201
|
+
"description": "Time window for the feed. Default 'day'."
|
|
202
|
+
},
|
|
203
|
+
"min_magnitude": {
|
|
204
|
+
"type": "number",
|
|
205
|
+
"description": "Lower bound on quake magnitude (Richter/moment). Default 2.5."
|
|
206
|
+
},
|
|
207
|
+
"bounds": {
|
|
208
|
+
"type": "object",
|
|
209
|
+
"description": "Optional geographic bounding box { north, south, east, west } in decimal degrees. Antimeridian-crossing boxes (west > east) supported.",
|
|
210
|
+
"properties": {
|
|
211
|
+
"north": {
|
|
212
|
+
"type": "number"
|
|
213
|
+
},
|
|
214
|
+
"south": {
|
|
215
|
+
"type": "number"
|
|
216
|
+
},
|
|
217
|
+
"east": {
|
|
218
|
+
"type": "number"
|
|
219
|
+
},
|
|
220
|
+
"west": {
|
|
221
|
+
"type": "number"
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"name": "flight-status",
|
|
230
|
+
"http_name": "flight-status",
|
|
231
|
+
"description": "(0.01 USDC/call) Flight status / live aircraft position / flight tracker / ICAO24 lookup / callsign lookup / aircraft bounding-box / OpenSky Network state-vector wrapper. Pass icao24 (6-char hex transponder, e.g. 'a808c5'), a callsign (e.g. 'UAL124'), or a bbox {lamin,lamax,lomin,lomax}. Returns last-known position, altitude, speed, heading, on-ground flag, and origin country per aircraft. Single hit to OpenSky's anonymous tier (no API key, commercial-OK with attribution; shared 400 req/day pool).",
|
|
232
|
+
"method": "POST",
|
|
233
|
+
"input_schema": {
|
|
234
|
+
"type": "object",
|
|
235
|
+
"properties": {
|
|
236
|
+
"icao24": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"description": "24-bit ICAO transponder address in hex (e.g. 'a808c5'). Lowercase, exactly 6 chars."
|
|
239
|
+
},
|
|
240
|
+
"callsign": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"description": "Flight callsign (e.g. 'UAL124'). Matched against the global state vector; expect higher latency than icao24 lookups."
|
|
243
|
+
},
|
|
244
|
+
"bbox": {
|
|
245
|
+
"type": "object",
|
|
246
|
+
"properties": {
|
|
247
|
+
"lamin": {
|
|
248
|
+
"type": "number"
|
|
249
|
+
},
|
|
250
|
+
"lamax": {
|
|
251
|
+
"type": "number"
|
|
252
|
+
},
|
|
253
|
+
"lomin": {
|
|
254
|
+
"type": "number"
|
|
255
|
+
},
|
|
256
|
+
"lomax": {
|
|
257
|
+
"type": "number"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"description": "Optional lat/lon bounding box. lamin<lamax, lomin<lomax, |lat|<=90, |lon|<=180."
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "holiday-lookup",
|
|
267
|
+
"http_name": "holiday-lookup",
|
|
268
|
+
"description": "(0.002 USDC/call) Public holidays / bank holidays / national holidays / federal holidays / holiday calendar / per-country dates. Returns the official public holidays for any ISO 3166-1 alpha-2 country and year, with localized names, English names, type (Public, Bank, School, etc.), regional vs. national flag, and county/region scoping where applicable. Wraps the public Nager.Date API — no auth, commercial-OK.",
|
|
269
|
+
"method": "POST",
|
|
270
|
+
"input_schema": {
|
|
271
|
+
"type": "object",
|
|
272
|
+
"properties": {
|
|
273
|
+
"country": {
|
|
274
|
+
"type": "string",
|
|
275
|
+
"description": "ISO 3166-1 alpha-2 country code (e.g. 'US', 'DE', 'JP')."
|
|
276
|
+
},
|
|
277
|
+
"year": {
|
|
278
|
+
"type": "number",
|
|
279
|
+
"description": "Calendar year (e.g. 2026). Range [1900, 2200]."
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
"required": [
|
|
283
|
+
"country",
|
|
284
|
+
"year"
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"name": "iata-airport-info",
|
|
290
|
+
"http_name": "iata-airport-info",
|
|
291
|
+
"description": "(0.005 USDC/call) IATA / ICAO airport code lookup. Returns name, type, location, country, region, municipality, scheduled-service flag, home/wikipedia links. OurAirports CC0.",
|
|
292
|
+
"method": "POST",
|
|
293
|
+
"input_schema": {
|
|
294
|
+
"type": "object",
|
|
295
|
+
"properties": {
|
|
296
|
+
"code": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"description": "IATA-3 or ICAO-4 code."
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"required": [
|
|
302
|
+
"code"
|
|
303
|
+
]
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"name": "property-tax",
|
|
308
|
+
"http_name": "property-tax",
|
|
309
|
+
"description": "(0.01 USDC/call) Property tax lookup. Search a county's open-data assessor dataset by street address or parcel ID and return parcel id, owner, assessed and market value, sqft, year built, zoning, and a permalink to the source portal. Covers NYC PLUTO, SF Assessor Roll, and Cook County (Chicago) — open-data CC0 sources. Same backend as property-tax-assessment under a more search-friendly slug.",
|
|
310
|
+
"method": "POST",
|
|
311
|
+
"input_schema": {
|
|
312
|
+
"type": "object",
|
|
313
|
+
"properties": {
|
|
314
|
+
"county": {
|
|
315
|
+
"type": "string",
|
|
316
|
+
"enum": [
|
|
317
|
+
"nyc",
|
|
318
|
+
"sf",
|
|
319
|
+
"chicago"
|
|
320
|
+
],
|
|
321
|
+
"description": "County slug to search: nyc, sf, or cook (Chicago); selects which open-data assessor dataset to query."
|
|
322
|
+
},
|
|
323
|
+
"address": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"description": "Street address to match against the county's assessor roll; partial matches allowed."
|
|
326
|
+
},
|
|
327
|
+
"parcel": {
|
|
328
|
+
"type": "string",
|
|
329
|
+
"description": "Parcel ID (BBL for NYC, APN for SF, PIN for Cook) to look up a specific property directly."
|
|
330
|
+
},
|
|
331
|
+
"limit": {
|
|
332
|
+
"type": "number",
|
|
333
|
+
"description": "Maximum number of matching parcels to return; defaults to a small page size."
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"required": [
|
|
337
|
+
"county"
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"name": "property-tax-assessment",
|
|
343
|
+
"http_name": "property-tax-assessment",
|
|
344
|
+
"description": "(0.01 USDC/call) Property tax assessor lookup (multi-county). NYC PLUTO, SF Assessor Roll, Cook County (Chicago). Returns assessed value, owner, parcel ID, sqft, year built, zoning. Open-data, CC0-licensed.",
|
|
345
|
+
"method": "POST",
|
|
346
|
+
"input_schema": {
|
|
347
|
+
"type": "object",
|
|
348
|
+
"properties": {
|
|
349
|
+
"county": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"enum": [
|
|
352
|
+
"nyc",
|
|
353
|
+
"sf",
|
|
354
|
+
"chicago"
|
|
355
|
+
],
|
|
356
|
+
"description": "County dataset to query. 'nyc' = NYC Department of Finance PLUTO, 'sf' = SF Assessor Recorded Sales Roll, 'chicago' = Cook County Assessor."
|
|
357
|
+
},
|
|
358
|
+
"address": {
|
|
359
|
+
"type": "string",
|
|
360
|
+
"description": "Street address to search (e.g. '350 5 AVENUE'). Tokenised against the dataset's address column. Mutually optional with 'parcel'."
|
|
361
|
+
},
|
|
362
|
+
"parcel": {
|
|
363
|
+
"type": "string",
|
|
364
|
+
"description": "Parcel identifier — NYC BBL (10-digit), SF Block-Lot, or Cook County PIN (14-digit). Matches an exact record."
|
|
365
|
+
},
|
|
366
|
+
"limit": {
|
|
367
|
+
"type": "number",
|
|
368
|
+
"description": "Max records to return (1-50). Default 10."
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
"required": [
|
|
372
|
+
"county"
|
|
373
|
+
]
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"name": "reverse-geocode",
|
|
378
|
+
"http_name": "reverse-geocode",
|
|
379
|
+
"description": "(0.02 USDC/call) Reverse geocoder / lat-lng-to-address. Coords → structured address (road, city, state, postcode, country). Powered by OpenStreetMap Nominatim.",
|
|
380
|
+
"method": "POST",
|
|
381
|
+
"input_schema": {
|
|
382
|
+
"type": "object",
|
|
383
|
+
"properties": {
|
|
384
|
+
"latitude": {
|
|
385
|
+
"type": "number",
|
|
386
|
+
"description": "Latitude in decimal degrees. Range -90 to 90."
|
|
387
|
+
},
|
|
388
|
+
"longitude": {
|
|
389
|
+
"type": "number",
|
|
390
|
+
"description": "Longitude in decimal degrees. Range -180 to 180."
|
|
391
|
+
},
|
|
392
|
+
"zoom": {
|
|
393
|
+
"type": "number",
|
|
394
|
+
"description": "3 (country) → 18 (building). Default 17."
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"required": [
|
|
398
|
+
"latitude",
|
|
399
|
+
"longitude"
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"name": "satellite-address",
|
|
405
|
+
"http_name": "satellite-address",
|
|
406
|
+
"description": "(0.01 USDC/call) Address to satellite image / one-call address → cloud-free Sentinel-2 thumbnail / postal-code satellite snapshot / place-name to space view. Composes OpenStreetMap Nominatim geocoding with the Sentinel Hub Processing API: caller sends a free-form address and gets back both the geocoded address metadata and a recent cloud-free Sentinel-2 PNG centered on the best match. Optional NASA GIBS MODIS fallback for regional views. JSON output contains: { query, geocode_result, lat, lon, zoom, bbox, data_base64, license, attribution, ... }.",
|
|
407
|
+
"method": "POST",
|
|
408
|
+
"input_schema": {
|
|
409
|
+
"type": "object",
|
|
410
|
+
"properties": {
|
|
411
|
+
"address": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "Free-form address, postal code, place name, or POI. Examples: '1600 Amphitheatre Parkway, Mountain View, CA', 'Brandenburg Gate', '94110'."
|
|
414
|
+
},
|
|
415
|
+
"zoom": {
|
|
416
|
+
"type": "number",
|
|
417
|
+
"description": "Slippy-map zoom level. 1-16. Default 15 (street/block scale)."
|
|
418
|
+
},
|
|
419
|
+
"size": {
|
|
420
|
+
"type": "number",
|
|
421
|
+
"description": "Output image side length in pixels. 64-2500. Default 512."
|
|
422
|
+
},
|
|
423
|
+
"source": {
|
|
424
|
+
"type": "string",
|
|
425
|
+
"enum": [
|
|
426
|
+
"cdse",
|
|
427
|
+
"gibs"
|
|
428
|
+
],
|
|
429
|
+
"description": "'cdse' (default, Sentinel-2 10m) or 'gibs' (NASA MODIS ~250m, zoom ≤9 only)."
|
|
430
|
+
},
|
|
431
|
+
"days_back": {
|
|
432
|
+
"type": "number",
|
|
433
|
+
"description": "CDSE lookback window for least-cloudy mosaic in days. 7-180. Default 30."
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
"required": [
|
|
437
|
+
"address"
|
|
438
|
+
]
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"name": "satellite-bbox",
|
|
443
|
+
"http_name": "satellite-bbox",
|
|
444
|
+
"description": "(0.02 USDC/call) Bounding-box satellite composite / Sentinel-2 cloud-free mosaic / region satellite snapshot / arbitrary bbox to imagery. Returns a single PNG composite over an arbitrary lat/lon bounding box, sourced from the least-cloudy Sentinel-2 observation per pixel across the requested date range (mosaickingOrder=leastCC). Output dimensions auto-scale to bbox aspect ratio. Native 10m resolution. Bbox area capped at 4 sq-deg per call — larger regions should be stitched from multiple calls. JSON output includes { bbox, time_range, size, data_base64, license, attribution, ... }.",
|
|
445
|
+
"method": "POST",
|
|
446
|
+
"input_schema": {
|
|
447
|
+
"type": "object",
|
|
448
|
+
"properties": {
|
|
449
|
+
"bbox": {
|
|
450
|
+
"type": "array",
|
|
451
|
+
"description": "[west, south, east, north] in WGS84 lon/lat. Required. west<east, south<north, area ≤ 4 sq-deg."
|
|
452
|
+
},
|
|
453
|
+
"date": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "End date of the lookback window in YYYY-MM-DD. Default = yesterday."
|
|
456
|
+
},
|
|
457
|
+
"days": {
|
|
458
|
+
"type": "number",
|
|
459
|
+
"description": "Lookback window in days. 7-180. Default 30. Mosaic uses least-cloudy pixel across the window."
|
|
460
|
+
},
|
|
461
|
+
"size": {
|
|
462
|
+
"type": "number",
|
|
463
|
+
"description": "Output image LONG-side length in pixels. 64-2500. Default 512. Short side scales by bbox aspect."
|
|
464
|
+
},
|
|
465
|
+
"max_cloud_coverage": {
|
|
466
|
+
"type": "number",
|
|
467
|
+
"description": "Per-scene max cloud cover percentage to include. 0-100. Default 30."
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"required": [
|
|
471
|
+
"bbox"
|
|
472
|
+
]
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "satellite-change",
|
|
477
|
+
"http_name": "satellite-change",
|
|
478
|
+
"description": "(0.05 USDC/call) Satellite before/after / change detection / Sentinel-2 time-series diff / construction monitoring / deforestation tracker / fire-burn-scar imagery. Renders two cloud-free Sentinel-2 composites of the same bounding box anchored at two dates, each averaged over the window_days prior. Returns both base64 PNGs side-by-side so clients can display, animate, or pixel-diff them. Use cases: construction-site progress, vegetation change, wildfire burn scars, port/parking-lot activity, glacier retreat. Native 10m. Bbox area ≤ 4 sq-deg.",
|
|
479
|
+
"method": "POST",
|
|
480
|
+
"input_schema": {
|
|
481
|
+
"type": "object",
|
|
482
|
+
"properties": {
|
|
483
|
+
"bbox": {
|
|
484
|
+
"type": "array",
|
|
485
|
+
"description": "[west, south, east, north] in WGS84 lon/lat. west<east, south<north, area ≤ 4 sq-deg."
|
|
486
|
+
},
|
|
487
|
+
"date_a": {
|
|
488
|
+
"type": "string",
|
|
489
|
+
"description": "Anchor date for the BEFORE composite, YYYY-MM-DD. Must be earlier than date_b."
|
|
490
|
+
},
|
|
491
|
+
"date_b": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"description": "Anchor date for the AFTER composite, YYYY-MM-DD."
|
|
494
|
+
},
|
|
495
|
+
"window_days": {
|
|
496
|
+
"type": "number",
|
|
497
|
+
"description": "Days prior to each anchor used to build the cloud-free composite. 7-90. Default 30."
|
|
498
|
+
},
|
|
499
|
+
"size": {
|
|
500
|
+
"type": "number",
|
|
501
|
+
"description": "Output image LONG-side length in pixels. 64-2500. Default 512. Short side scales by aspect."
|
|
502
|
+
},
|
|
503
|
+
"max_cloud_coverage": {
|
|
504
|
+
"type": "number",
|
|
505
|
+
"description": "Per-scene max cloud cover percentage. 0-100. Default 30."
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
"required": [
|
|
509
|
+
"bbox",
|
|
510
|
+
"date_a",
|
|
511
|
+
"date_b"
|
|
512
|
+
]
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"name": "satellite-tile",
|
|
517
|
+
"http_name": "satellite-tile",
|
|
518
|
+
"description": "(0.005 USDC/call) Satellite imagery tile / lat-lon to satellite PNG / Sentinel-2 tile API / cloud-free satellite snapshot / agent-callable satellite imagery. Returns a recent cloud-free Sentinel-2 (10m) PNG centered on a lat/lon at a slippy-map zoom level. Default source: CDSE Sentinel Hub Processing API with mosaickingOrder=leastCC over the prior 30 days (configurable via days_back). Optional NASA GIBS MODIS Terra (~250m) source for regional zoom ≤9 with zero quota. Output is JSON: { source, lat, lon, zoom, bbox, data_base64, license, attribution, ... }. License: Copernicus open data (CC BY-SA 3.0 IGO) or NASA public domain; attribution string included in every response.",
|
|
519
|
+
"method": "POST",
|
|
520
|
+
"input_schema": {
|
|
521
|
+
"type": "object",
|
|
522
|
+
"properties": {
|
|
523
|
+
"lat": {
|
|
524
|
+
"type": "number",
|
|
525
|
+
"description": "Latitude in decimal degrees. Range [-90, 90]."
|
|
526
|
+
},
|
|
527
|
+
"lon": {
|
|
528
|
+
"type": "number",
|
|
529
|
+
"description": "Longitude in decimal degrees. Range [-180, 180]."
|
|
530
|
+
},
|
|
531
|
+
"zoom": {
|
|
532
|
+
"type": "number",
|
|
533
|
+
"description": "Slippy-map zoom level. 1-16. Default 14 (city block scale). MODIS/GIBS supports ≤9 only."
|
|
534
|
+
},
|
|
535
|
+
"size": {
|
|
536
|
+
"type": "number",
|
|
537
|
+
"description": "Output image side length in pixels. 64-2500. Default 512."
|
|
538
|
+
},
|
|
539
|
+
"source": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"enum": [
|
|
542
|
+
"cdse",
|
|
543
|
+
"gibs"
|
|
544
|
+
],
|
|
545
|
+
"description": "Imagery source. 'cdse' (default, Sentinel-2 10m) or 'gibs' (NASA MODIS Terra ~250m, no quota, zoom ≤9 only)."
|
|
546
|
+
},
|
|
547
|
+
"days_back": {
|
|
548
|
+
"type": "number",
|
|
549
|
+
"description": "CDSE only: lookback window for least-cloudy mosaic in days. 7-180. Default 30."
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"required": [
|
|
553
|
+
"lat",
|
|
554
|
+
"lon"
|
|
555
|
+
]
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"name": "sports-schedule",
|
|
560
|
+
"http_name": "sports-schedule",
|
|
561
|
+
"description": "(0.01 USDC/call) Sports schedule / MLB / NBA / NHL / NFL / WNBA / MLS / EPL / La Liga / Bundesliga / Serie A — next games + recent results / sports schedule API / TheSportsDB v1 wrapper. Pass a league code; scope='upcoming' (default) returns the next 15 events with start time, venue, teams. scope='recent' returns last 15 completed games including scores. Single hit to TheSportsDB free tier (no API key, commercial-OK with attribution).",
|
|
562
|
+
"method": "POST",
|
|
563
|
+
"input_schema": {
|
|
564
|
+
"type": "object",
|
|
565
|
+
"properties": {
|
|
566
|
+
"league": {
|
|
567
|
+
"type": "string",
|
|
568
|
+
"enum": [
|
|
569
|
+
"MLB",
|
|
570
|
+
"NBA",
|
|
571
|
+
"NHL",
|
|
572
|
+
"NFL",
|
|
573
|
+
"WNBA",
|
|
574
|
+
"MLS",
|
|
575
|
+
"EPL",
|
|
576
|
+
"LALIGA",
|
|
577
|
+
"BUNDESLIGA",
|
|
578
|
+
"SERIEA"
|
|
579
|
+
],
|
|
580
|
+
"description": "League code. Case-insensitive."
|
|
581
|
+
},
|
|
582
|
+
"scope": {
|
|
583
|
+
"type": "string",
|
|
584
|
+
"enum": [
|
|
585
|
+
"upcoming",
|
|
586
|
+
"recent"
|
|
587
|
+
],
|
|
588
|
+
"description": "What to return — next games (default) or last results."
|
|
589
|
+
}
|
|
590
|
+
},
|
|
591
|
+
"required": [
|
|
592
|
+
"league"
|
|
593
|
+
]
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "sunrise-sunset",
|
|
598
|
+
"http_name": "sunrise-sunset",
|
|
599
|
+
"description": "(0.002 USDC/call) Sunrise sunset times. Returns sunrise, sunset, solar noon, day length, and civil / nautical / astronomical twilight begin and end for any latitude/longitude on any date. Also covers golden-hour and dawn / dusk. Same backend as astro-times under a more search-friendly slug. UTC ISO8601 strings.",
|
|
600
|
+
"method": "POST",
|
|
601
|
+
"input_schema": {
|
|
602
|
+
"type": "object",
|
|
603
|
+
"properties": {
|
|
604
|
+
"latitude": {
|
|
605
|
+
"type": "number",
|
|
606
|
+
"description": "Latitude in decimal degrees (-90 to 90, positive north) for the location to compute sun times."
|
|
607
|
+
},
|
|
608
|
+
"longitude": {
|
|
609
|
+
"type": "number",
|
|
610
|
+
"description": "Longitude in decimal degrees (-180 to 180, positive east) for the location to compute sun times."
|
|
611
|
+
},
|
|
612
|
+
"date": {
|
|
613
|
+
"type": "string",
|
|
614
|
+
"description": "Calendar date as YYYY-MM-DD for which to compute sunrise, sunset, twilight, and golden-hour times."
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"required": [
|
|
618
|
+
"latitude",
|
|
619
|
+
"longitude"
|
|
620
|
+
]
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
"name": "timezone-convert",
|
|
625
|
+
"http_name": "timezone-convert",
|
|
626
|
+
"description": "(0.001 USDC/call) Timezone convert / IANA tz conversion / DST-aware time arithmetic / wall-clock to UTC / convert across cities. Convert a datetime from one IANA timezone to another. ISO-8601 input — bare wall-time strings are interpreted in the from_tz, fully-qualified offsets are honored. DST is handled correctly (uses V8's built-in tzdata via Intl.DateTimeFormat). Returns both formatted strings, both UTC offsets, and the difference in hours.",
|
|
627
|
+
"method": "POST",
|
|
628
|
+
"input_schema": {
|
|
629
|
+
"type": "object",
|
|
630
|
+
"properties": {
|
|
631
|
+
"datetime": {
|
|
632
|
+
"type": "string",
|
|
633
|
+
"description": "ISO-8601 datetime. With offset (e.g. '2026-05-08T12:00:00-07:00') it's used as-is; without offset (e.g. '2026-05-08T12:00:00') it's interpreted in from_tz."
|
|
634
|
+
},
|
|
635
|
+
"from_tz": {
|
|
636
|
+
"type": "string",
|
|
637
|
+
"description": "IANA timezone for the input wall-time (e.g. 'America/Los_Angeles')."
|
|
638
|
+
},
|
|
639
|
+
"to_tz": {
|
|
640
|
+
"type": "string",
|
|
641
|
+
"description": "IANA timezone for the output (e.g. 'Asia/Tokyo')."
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
"required": [
|
|
645
|
+
"datetime",
|
|
646
|
+
"from_tz",
|
|
647
|
+
"to_tz"
|
|
648
|
+
]
|
|
649
|
+
}
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"name": "timezone-lookup",
|
|
653
|
+
"http_name": "timezone-lookup",
|
|
654
|
+
"description": "(0.001 USDC/call) Timezone lookup / IANA tz / UTC offset / DST status / local time at lat-lng / which timezone. Resolves the current local time, IANA timezone name, UTC offset (seconds), and DST status either by IANA timezone string (e.g. 'America/Los_Angeles') or by latitude/longitude coordinates. Wraps the public TimeAPI.io endpoint — no auth, commercial-OK.",
|
|
655
|
+
"method": "POST",
|
|
656
|
+
"input_schema": {
|
|
657
|
+
"type": "object",
|
|
658
|
+
"properties": {
|
|
659
|
+
"latitude": {
|
|
660
|
+
"type": "number",
|
|
661
|
+
"description": "Decimal degrees, range [-90, 90]. Required if no timezone provided."
|
|
662
|
+
},
|
|
663
|
+
"longitude": {
|
|
664
|
+
"type": "number",
|
|
665
|
+
"description": "Decimal degrees, range [-180, 180]. Required if no timezone provided."
|
|
666
|
+
},
|
|
667
|
+
"timezone": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"description": "IANA timezone identifier (e.g. 'America/Los_Angeles', 'Europe/Berlin'). Either this or lat+lon required."
|
|
670
|
+
},
|
|
671
|
+
"datetime_utc": {
|
|
672
|
+
"type": "string",
|
|
673
|
+
"description": "Optional UTC datetime to evaluate at (ISO8601). Reserved for future use; current API returns now."
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"name": "vin-decode",
|
|
680
|
+
"http_name": "vin-decode",
|
|
681
|
+
"description": "(0.005 USDC/call) VIN decoder / VIN lookup / decode VIN / vehicle identification number / NHTSA vPIC wrapper. Pass a 17-char VIN; returns make, model, model_year, manufacturer, plant country, body class, vehicle type, fuel type, engine cylinders/displacement/HP, drive type, transmission, GVWR, safety features (ABS, traction control, airbags), and any decode errors. Includes a `valid_checksum` flag (ISO 3779 mod-11 check; reliable for North-American VINs). Backed by NHTSA's free public vPIC API — US Govt public domain, no API key required.",
|
|
682
|
+
"method": "POST",
|
|
683
|
+
"input_schema": {
|
|
684
|
+
"type": "object",
|
|
685
|
+
"properties": {
|
|
686
|
+
"vin": {
|
|
687
|
+
"type": "string",
|
|
688
|
+
"description": "17-character VIN. Alphanumeric, no I/O/Q."
|
|
689
|
+
},
|
|
690
|
+
"model_year": {
|
|
691
|
+
"type": [
|
|
692
|
+
"integer",
|
|
693
|
+
"string"
|
|
694
|
+
],
|
|
695
|
+
"description": "Optional model year hint (YYYY) — helps NHTSA disambiguate the 10th position."
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
"required": [
|
|
699
|
+
"vin"
|
|
700
|
+
]
|
|
701
|
+
}
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"name": "visa-requirements",
|
|
705
|
+
"http_name": "visa-requirements",
|
|
706
|
+
"description": "(0.005 USDC/call) Visa requirements lookup. Passport country + destination → visa-free / e-visa / visa-on-arrival / visa-required + duration. Public CC-BY dataset.",
|
|
707
|
+
"method": "POST",
|
|
708
|
+
"input_schema": {
|
|
709
|
+
"type": "object",
|
|
710
|
+
"properties": {
|
|
711
|
+
"passport": {
|
|
712
|
+
"type": "string",
|
|
713
|
+
"description": "ISO 2-letter country code."
|
|
714
|
+
},
|
|
715
|
+
"destination": {
|
|
716
|
+
"type": "string",
|
|
717
|
+
"description": "ISO 2-letter country code."
|
|
718
|
+
},
|
|
719
|
+
"full_matrix": {
|
|
720
|
+
"type": "boolean",
|
|
721
|
+
"description": "If true, returns the full row of requirements for the passport country across all destinations instead of a single pair. Default false."
|
|
722
|
+
}
|
|
723
|
+
},
|
|
724
|
+
"required": [
|
|
725
|
+
"passport"
|
|
726
|
+
]
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"name": "weather",
|
|
731
|
+
"http_name": "weather",
|
|
732
|
+
"description": "(0.005 USDC/call) Weather API / weather forecast / current weather / hourly forecast. Returns current conditions plus 1-7 day daily forecast and optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation, sunrise/sunset, UV index. Open-Meteo backend.",
|
|
733
|
+
"method": "POST",
|
|
734
|
+
"input_schema": {
|
|
735
|
+
"type": "object",
|
|
736
|
+
"properties": {
|
|
737
|
+
"latitude": {
|
|
738
|
+
"type": "number",
|
|
739
|
+
"description": "Decimal degrees, range [-90, 90]. Positive north."
|
|
740
|
+
},
|
|
741
|
+
"longitude": {
|
|
742
|
+
"type": "number",
|
|
743
|
+
"description": "Decimal degrees, range [-180, 180]. Positive east."
|
|
744
|
+
},
|
|
745
|
+
"units": {
|
|
746
|
+
"type": "string",
|
|
747
|
+
"enum": [
|
|
748
|
+
"metric",
|
|
749
|
+
"imperial"
|
|
750
|
+
],
|
|
751
|
+
"description": "'metric' (°C, km/h, mm) or 'imperial' (°F, mph, inch). Default 'metric'."
|
|
752
|
+
},
|
|
753
|
+
"forecast_days": {
|
|
754
|
+
"type": "number",
|
|
755
|
+
"description": "Number of forecast days, 1-7. Default 3."
|
|
756
|
+
},
|
|
757
|
+
"hourly": {
|
|
758
|
+
"type": "boolean",
|
|
759
|
+
"description": "If true, include hourly temperature, precipitation, and weather code arrays. Default false."
|
|
760
|
+
}
|
|
761
|
+
},
|
|
762
|
+
"required": [
|
|
763
|
+
"latitude",
|
|
764
|
+
"longitude"
|
|
765
|
+
]
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"name": "weather-forecast",
|
|
770
|
+
"http_name": "weather-forecast",
|
|
771
|
+
"description": "(0.005 USDC/call) Weather forecast / hourly forecast / current weather / temperature / precipitation / UV index / sunrise-sunset / Open-Meteo / weather API. Returns current conditions, a 1-7 day daily forecast, and an optional hourly forecast for any latitude/longitude. Daily includes temp max/min, precipitation total + probability, sunrise/sunset, max UV index, and WMO weather code. Current includes temperature, apparent temperature, humidity %, wind speed/direction, precipitation, weather code, and is_day. Metric or imperial units. Wraps the public Open-Meteo API — no auth, commercial-OK, CC-BY 4.0.",
|
|
772
|
+
"method": "POST",
|
|
773
|
+
"input_schema": {
|
|
774
|
+
"type": "object",
|
|
775
|
+
"properties": {
|
|
776
|
+
"latitude": {
|
|
777
|
+
"type": "number",
|
|
778
|
+
"description": "Decimal degrees, range [-90, 90]. Positive north."
|
|
779
|
+
},
|
|
780
|
+
"longitude": {
|
|
781
|
+
"type": "number",
|
|
782
|
+
"description": "Decimal degrees, range [-180, 180]. Positive east."
|
|
783
|
+
},
|
|
784
|
+
"units": {
|
|
785
|
+
"type": "string",
|
|
786
|
+
"enum": [
|
|
787
|
+
"metric",
|
|
788
|
+
"imperial"
|
|
789
|
+
],
|
|
790
|
+
"description": "'metric' (°C, km/h, mm) or 'imperial' (°F, mph, inch). Default 'metric'."
|
|
791
|
+
},
|
|
792
|
+
"forecast_days": {
|
|
793
|
+
"type": "number",
|
|
794
|
+
"description": "Number of forecast days, 1-7. Default 3."
|
|
795
|
+
},
|
|
796
|
+
"hourly": {
|
|
797
|
+
"type": "boolean",
|
|
798
|
+
"description": "If true, include hourly temperature, precipitation, and weather code arrays. Default false."
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
"required": [
|
|
802
|
+
"latitude",
|
|
803
|
+
"longitude"
|
|
804
|
+
]
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
];
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentutility/mcp-locale",
|
|
3
|
+
"version": "0.1.8",
|
|
4
|
+
"description": "MCP server for the @agentutility locale cluster — pay-per-call x402 tools, no API keys, USDC on Base.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"bin": {
|
|
9
|
+
"agentutility-mcp-locale": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/rooz21/x402",
|
|
18
|
+
"directory": "packages/mcp-locale"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://mcp.agentutility.ai/locale/",
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"mcp",
|
|
27
|
+
"model-context-protocol",
|
|
28
|
+
"x402",
|
|
29
|
+
"agentutility",
|
|
30
|
+
"agent-tools",
|
|
31
|
+
"locale"
|
|
32
|
+
],
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
35
|
+
"@x402/fetch": "^2.12.0",
|
|
36
|
+
"@x402/evm": "^2.12.0",
|
|
37
|
+
"viem": "^2.21.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"typescript": "^5.5.0"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
}
|
|
46
|
+
}
|