# APIFreaks MCP (npm · @apifreaks/mcp)

The official MCP server for APIFreaks, connecting your AI to the full range of APIFreaks APIs.

- Trust score: 77/100 (medium)
- Change this week: +34
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@apifreaks/mcp`: 77/100 (this document), [markdown](https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp.md), [page](https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp)

## Channel facts

- Registry: `npm`
- Package: `@apifreaks/mcp`
- Version: `1.1.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (107 of 108), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (107 of 108), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to api-freaks/apifreaks-mcp).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 23 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 11024 tokens (~186/item across 59 items; 59 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add api-freaks-apifreaks-mcp -- npx -y @apifreaks/mcp
```

### Codex

```bash
codex mcp add api-freaks-apifreaks-mcp -- npx -y @apifreaks/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "api-freaks-apifreaks-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@apifreaks/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add api-freaks-apifreaks-mcp --command npx --arg -y --arg @apifreaks/mcp
```

### Hermes

```yaml
mcp_servers:
  api-freaks-apifreaks-mcp:
    command: "npx"
    args: ["-y", "@apifreaks/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "api-freaks-apifreaks-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@apifreaks/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 76, +28)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: api-freaks/apifreaks-mcp
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] License: unverified → pass
- [functional] Licence: Apache-2.0

### 2026-07-31 (score 48, +20)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 28, −61)

- [security regression] Malware scan: pass → unverified
- [security regression] Known CVEs: partial → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified

### 2026-07-29 (score 89, +63)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: api-freaks/apifreaks-mcp
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: Apache-2.0

### 2026-07-28 (score 26, −17)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (59)

### `zipcode_lookup` (~117 tokens)

ZIP Code Lookup

Look up a single ZIP or postal code to retrieve its city, region, country, their codes and geographic coordinates. Optionally filter by country using an ISO 3166-1 alpha-2 code.

Input parameters:

- `code` (string, required): ZIP or postal code to look up (e.g. '10009', 'SW1A 1AA').
- `country` (string): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Narrows the search to the specified country.

### `zipcode_bulk_lookup` (~133 tokens)

Bulk ZIP Code Lookup

Look up details for up to 100 ZIP/postal codes at once. Returns an array of results including city, region, country, their codes, and geographic coordinates for each ZIP code. Optionally filter all codes to a single country.

Input parameters:

- `codes` (array, required): List of ZIP/postal codes to look up (max 100). Example: ["10009", "90210", "SW1A 1AA"]
- `country` (string): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Applies to all codes in the batch.

### `zipcode_radius_search` (~329 tokens)

ZIP Code Radius Search

Find all ZIP/postal codes within a given radius of a center point. Specify the center as EITHER a ZIP code + country OR lat/long coordinates. Returns paginated results (up to 500 per page) with each code's distance from center. Max radius per unit: km=100, mi=100, yd=109361, m=100000, ft=328084, in=3937008.

Input parameters:

- `code` (string): Center ZIP/postal code. Must be paired with 'country'. Use EITHER this OR lat+long.
- `country` (string): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Required when using 'code' as center. Use this with code, not with lat/long.
- `lat` (number): Center latitude (-90 to 90). Must be paired with 'long'. Use EITHER this OR code+country.
- `long` (number): Center longitude (-180 to 180). Must be paired with 'lat'. Use EITHER this OR code+country.
- `page` (integer): Page number for paginated results (max 500 results per page).
- `radius` (number, required): Search radius (must be > 0). Max radius per unit: km=100, mi=100, yd=109361, m=100000, ft=328084, in=3937008.
- `unit` (string): Distance unit. Default: km. Options: km, mi, yd, m, ft, in.

### `zipcode_distance` (~226 tokens)

ZIP Code Distance

Calculate the straight-line distance from a base point to each of up to 100 ZIP codes. Specify the base point as EITHER a ZIP code + country OR lat/long coordinates. Returns a distance value for each comparison code.

Input parameters:

- `code` (string): Base ZIP/postal code. Must be paired with 'country'. Use EITHER this OR lat+long.
- `compare` (array, required): List of ZIP/postal codes to measure distance to (max 100). Example: ["10001", "90210", "60601"]
- `country` (string): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE'). Required when using 'code' as base point.
- `lat` (number): Base latitude (-90 to 90). Must be paired with 'long'.
- `long` (number): Base longitude (-180 to 180). Must be paired with 'lat'.
- `unit` (string): Distance unit. Default: km. Options: km, mi, yd, m, ft, in.

### `zipcode_distance_match` (~164 tokens)

ZIP Code Distance Match

Find all pairs of ZIP codes within a given distance threshold. All codes must be in the same country. Returns every pair (code_1, code_2) whose distance is ≤ the threshold.

Input parameters:

- `codes` (array, required): List of ZIP/postal codes to find close pairs within. Example: ["10001", "10002", "10003", "11201"]
- `country` (string, required): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE').
- `distance` (number): Maximum distance threshold for pairing. Default: 100 (in the selected unit).
- `unit` (string): Distance unit. Default: km. Options: km, mi, yd, m, ft, in.

### `zipcode_by_city` (~150 tokens)

ZIP Codes by City

Get all ZIP/postal codes for a city. Providing 'state_name' is recommended to disambiguate cities with the same name. Returns paginated results (up to 500 per page).

Input parameters:

- `city` (string, required): City name to search (e.g. 'Brooklyn', 'Manchester').
- `country` (string, required): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE').
- `page` (integer): Page number for paginated results (max 500 results per page).
- `state_name` (string): State, province, or region name (e.g. 'New York', 'England'). Recommended to disambiguate.

### `zipcode_by_region` (~114 tokens)

ZIP Codes by Region

Get all ZIP/postal codes for a state, province, or region. Returns paginated results (up to 500 per page).

Input parameters:

- `country` (string, required): ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB', 'DE').
- `page` (integer): Page number for paginated results (max 500 results per page).
- `region` (string, required): State, province, or region name (e.g. 'California', 'Bavaria', 'Ontario').

### `commodity_symbols` (~28 tokens)

Commodity Symbols

List all supported commodity symbols with full metadata (name, unit, quote currency, exchange, status).

### `commodity_symbol_info` (~83 tokens)

Commodity Symbol Info

Validate a commodity symbol and return its full metadata (name, unit, quote currency, exchange, status). Use this instead of 'commodity_symbols' when you already have a symbol and just need to confirm it's valid or get its details.

Input parameters:

- `symbol` (string, required): The commodity symbol to look up (e.g. 'XAU', 'WTIOIL-SPOT').

### `commodity_quotes` (~20 tokens)

Commodity Quote Currencies

List all supported commodity quote currencies with symbol and currency name.

### `commodity_latest_rates` (~123 tokens)

Commodity Latest Rates

Get real-time prices for one or more commodities. Supports custom quote currencies.

Input parameters:

- `quote` (string): Quote currency code (e.g. USD, EUR). If unsure, use 'commodity_quotes' first.
- `symbols` (string, required): Comma-separated commodity symbols (e.g. 'XAU,XAG,WTIOIL-SPOT'). If unsure of the exact symbol, use 'commodity_symbols' first.
- `updates` (string): Price update frequency: '1m' = refreshed every minute (default), '10m' = every 10 minutes.

### `commodity_historical_rates` (~121 tokens)

Commodity Historical Rates

Get historical open, high, low, close (OHLC) prices for specific commodities on a specific date.
NOTE: If data is unavailable for the exact requested date (e.g. weekends/holidays), this tool will automatically return the rates for the nearest previous available date.

Input parameters:

- `date` (string, required): Target date in YYYY-MM-DD format.
- `symbols` (string, required): Comma-separated commodity symbols (e.g. 'XAU,XAG,WTIOIL-SPOT'). If unsure of the exact symbol, use 'commodity_symbols' first.

### `commodity_fluctuation` (~127 tokens)

Commodity Fluctuation

Get price fluctuation for commodity symbols over a date range. If symbols are missing from results or a 404 is returned, use 'commodity_historical_rates' to find valid trading dates and retry.

Input parameters:

- `end_date` (string, required): End date of the interval in YYYY-MM-DD format.
- `start_date` (string, required): Start date of the interval in YYYY-MM-DD format.
- `symbols` (string, required): Comma-separated commodity symbols (e.g. 'XAU,XAG,WTIOIL-SPOT'). If unsure of the exact symbol, use 'commodity_symbols' first.

### `commodity_time_series` (~155 tokens)

Commodity Time Series

Get daily OHLC (Open, High, Low, and Close) prices for commodities over a date range (max 365 days). If symbols are missing from results or a 404 is returned, use 'commodity_historical_rates' to find valid trading dates and retry.

Input parameters:

- `end_date` (string, required): End date in YYYY-MM-DD format. Max range from start_date is 365 days.
- `start_date` (string, required): Start date in YYYY-MM-DD format. Max range from end_date is 365 days.
- `symbols` (string, required): Comma-separated commodity symbols (e.g. 'XAU,XAG,WTIOIL-SPOT'). If unsure of the exact symbol, use 'commodity_symbols' first.

### `currency_latest_rates` (~180 tokens)

Currency Latest Rates

Retrieve the latest exchange rates for 170+ fiat currencies and 830+ cryptocurrencies. Returns a 'rates' dictionary mapping currency codes to their rate relative to the base. Filter to specific symbols to reduce response size.

Input parameters:

- `base` (string): Base currency code (e.g. 'USD', 'EUR', 'GBP'). Defaults to 'USD'.
- `symbols` (array): An array of 3-letter ISO 4217 fiat currency codes or cryptocurrency symbols (e.g., ['USD', 'EUR', 'BTC']). If omitted, the API will return rates for all 1,000+ supported assets. For a full list of va…
- `updates` (string): Exchange rate update frequency: '1m' (default), '10m', '1h', or '1d'.

### `currency_historical_rates` (~164 tokens)

Currency Historical Rates

Retrieve historical exchange rates for a specific past date. Supports 170+ fiat currencies and 830+ cryptocurrencies with data going back 40+ years.

Input parameters:

- `base` (string): Base currency code (e.g. 'USD', 'EUR', 'GBP'). Defaults to 'USD'.
- `date` (string, required): Date for historical rates in YYYY-MM-DD format (e.g. '2024-03-20').
- `symbols` (array): An array of 3-letter ISO 4217 fiat currency codes or cryptocurrency symbols (e.g., ['USD', 'EUR', 'BTC']). If omitted, the API will return rates for all 1,000+ supported assets. For a full list of va…

### `currency_latest_converter` (~155 tokens)

Currency Latest Converter

Convert an amount from one currency to another using the latest exchange rates. Supports 170+ fiat currencies and 800+ cryptocurrencies. Returns the exchange rate used, the given amount, and the converted amount.

Input parameters:

- `amount` (number): Amount to convert. Must be a positive number. Defaults to 1.
- `from_currency` (string, required): Source currency code to convert from (e.g. 'USD', 'EUR', 'BTC').
- `to_currency` (string, required): Target currency code to convert to (e.g. 'PKR', 'GBP', 'ETH').
- `updates` (string): Exchange rate update frequency: '1m' (default), '10m', '1h', or '1d'.

### `currency_historical_converter` (~157 tokens)

Currency Historical Converter

Convert an amount from one currency to another using exchange rates from a specific past date. Useful for financial auditing, tax reporting, and invoice reconciliation. Returns the exchange rate on that date, the given amount, and the converted amount.

Input parameters:

- `amount` (number): Amount to convert. Must be a positive number. Defaults to 1.
- `date` (string, required): Date for historical rates in YYYY-MM-DD format (e.g. '2024-03-20').
- `from_currency` (string, required): Source currency code to convert from (e.g. 'USD', 'EUR', 'BTC').
- `to_currency` (string, required): Target currency code to convert to (e.g. 'PKR', 'GBP', 'ETH').

### `currency_time_series` (~236 tokens)

Currency Time Series

Retrieve historical exchange rates day-by-day across a custom date range. Returns a 'historicalRatesList' array where each entry has a date and a 'rates' dictionary. Useful for charting currency trends and analyzing multi-day rate movements. startDate is required; endDate defaults to yesterday if omitted. Max interval supported is 1 year.

Input parameters:

- `base` (string): Base currency code (e.g. 'USD', 'EUR', 'GBP'). Defaults to 'USD'.
- `end_date` (string): End date of the time range in YYYY-MM-DD format. Defaults to the day before the current date if not provided.
- `start_date` (string, required): Start date of the time range in YYYY-MM-DD format (e.g. '2022-06-01').
- `symbols` (array): An array of 3-letter ISO 4217 fiat currency codes or cryptocurrency symbols (e.g., ['USD', 'EUR', 'BTC']). If omitted, the API will return rates for all 1,000+ supported assets. For a full list of va…

### `currency_fluctuation` (~222 tokens)

Currency Fluctuation

Retrieve exchange rate fluctuation metrics for currencies over a date range. For each requested currency returns: startRate, endRate, absolute change, and percent change. Useful for volatility analysis and comparing currency movements. startDate is required; endDate defaults to yesterday if omitted.

Input parameters:

- `base` (string): Base currency code (e.g. 'USD', 'EUR', 'GBP'). Defaults to 'USD'.
- `end_date` (string): End date of the time range in YYYY-MM-DD format. Defaults to the day before the current date if not provided.
- `start_date` (string, required): Start date of the time range in YYYY-MM-DD format (e.g. '2022-06-01').
- `symbols` (array): An array of 3-letter ISO 4217 fiat currency codes or cryptocurrency symbols (e.g., ['USD', 'EUR', 'BTC']). If omitted, the API will return rates for all 1,000+ supported assets. For a full list of va…

### `currency_geo_convert` (~154 tokens)

Currency Geo Convert

Convert an amount from a given currency to the local currency of an IP address's location. Returns the detected target currency, exchange rate, and converted amount. Useful for e-commerce checkout localization. Supports IPv4 and IPv6.

Input parameters:

- `amount` (number): Amount to convert. Must be a positive number. Defaults to 1.
- `from_currency` (string, required): Source currency code to convert from (e.g. 'USD', 'EUR', 'BTC').
- `ip` (string, required): IPv4 or IPv6 address of the user whose local currency to convert to.
- `updates` (string): Exchange rate update frequency: '1m' (default), '10m', '1h', or '1d'.

### `currency_supported` (~44 tokens)

Currency Supported

Get the supported currencies map. Each entry includes code, name, country data, status, availability dates, and icon. Covers 170+ fiat currencies and 830+ cryptocurrencies.

### `currency_symbols` (~19 tokens)

Currency Symbols

Get a map of supported currency symbols to currency names.

### `currency_symbol_info` (~71 tokens)

Currency Symbol Info

Validate a currency symbol and return its full name. Use this instead of 'currency_symbols' when you already have a symbol and just need to confirm it's valid or get its display name.

Input parameters:

- `symbol` (string, required): The currency symbol to look up (e.g. 'USD', 'EUR', 'BTC').

### `weather_current` (~202 tokens)

Current Weather

Get real-time weather for a location, including temperature, humidity, wind, pressure, air quality (AQI), and astronomy (sunrise/sunset/moon phase). Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_bulk_current` (~130 tokens)

Bulk Current Weather

Get real-time weather for up to 50 locations at once. Each location in the array can be a city name, lat/long pair, or IP address. Returns weather + astronomy data for each location wrapped in a 'bulk' array.

Input parameters:

- `locations` (array, required): Array of location objects (max 50). Each object can contain: "location" (string), "lat"+"long" (floats), or "ip" (string). Example: [{"location":"London"},{"lat":48.85,"long":2.35},{"ip":"8.8.8.8"}]

### `weather_forecast` (~359 tokens)

Weather Forecast

Get weather forecast for up to 16 days with daily, hourly, or minutely precision. Use EITHER 'forecast_days' OR 'start_date'+'end_date' to define the range, not both. Only current or future dates are allowed. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `end_date` (string): End date for forecast range (YYYY-MM-DD). Current or future dates only. Must be paired with 'start_date'. Max 16-day range.
- `forecast_days` (integer): Number of forecast days (1–16). Defaults to 7 if neither this nor start_date/end_date is provided. Do NOT combine with start_date/end_date.
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `precision` (string): Forecast granularity: 'daily' (default), 'hourly', or 'minutely'.
- `start_date` (string): Start date for forecast range (YYYY-MM-DD). Current or future dates only. Must be paired with 'end_date'. Max 16-day range.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_historical` (~257 tokens)

Historical Weather

Get historical weather data for a specific past date (back to 1940). Returns daily or hourly weather + astronomy for the given date. Only past dates are allowed — current or future dates are rejected. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `date` (string, required): Target date in YYYY-MM-DD format. Must be a past date (back to 1940).
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `precision` (string): Data granularity: 'daily' (default) or 'hourly'.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_time_series` (~310 tokens)

Weather Time Series

Get historical weather data over a date range (time series). Max range: 90 days for daily precision, 7 days for hourly. Only past dates are allowed — current or future dates are rejected. Data available back to 1940. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `end_date` (string, required): End date in YYYY-MM-DD format. Must be a past date. Max 90 days from start_date (daily) or 7 days (hourly).
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `precision` (string): Data granularity: 'daily' (default, max 90 days) or 'hourly' (max 7 days).
- `start_date` (string, required): Start date in YYYY-MM-DD format. Must be a past date.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_air_quality` (~367 tokens)

Air Quality

Get air quality data either real-time or forecast. Returns PM2.5, PM10, CO, NO₂, SO₂, ozone, dust, and UV index. Real-time mode also includes AQI summary indices (US & EU); forecast mode returns raw pollutant values only. Omit dates for real-time AQI. Provide 'start_date' and 'end_date' for hourly AQI forecast (max 6 days, current/future dates only). NOTE: Use this tool over 'weather_current' when you need standalone or forecast air quality data. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `end_date` (string): End date for AQI forecast (YYYY-MM-DD). Current/future dates only. Must be paired with 'start_date'. Max 6-day range.
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `start_date` (string): Start date for AQI forecast (YYYY-MM-DD). Current/future dates only. Must be paired with 'end_date'. Max 6-day range. Omit for real-time AQI.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_marine` (~376 tokens)

Marine Weather

Get marine/ocean weather, real-time or forecast, up to 16 days. Returns wave height, swell, wind speed/direction, and sea-surface data. Omit dates for real-time conditions. Provide 'start_date' and 'end_date' for forecast mode (max 16 days, current/future dates only). Coordinates (lat/long) are recommended for offshore/ocean queries since city names resolve to land. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `end_date` (string): End date for marine forecast (YYYY-MM-DD). Current/future dates only. Must be paired with 'start_date'. Max 16-day range.
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'. Recommended for offshore/ocean queries.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'. Recommended for offshore/ocean queries.
- `precision` (string): Data granularity: 'daily' (default), 'hourly', or 'minutely'.
- `start_date` (string): Start date for marine forecast (YYYY-MM-DD). Current/future dates only. Must be paired with 'end_date'. Max 16-day range. Omit for real-time conditions.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `weather_flood_forecast` (~271 tokens)

Flood Forecast

Get flood forecast data — river discharge and flow percentiles (mean, median, min/max, p25/p75). Forecast range up to 16 days. Only current or future dates are allowed. Data may be limited for locations far from rivers. Provide at least one of: 'location', lat+long, or 'ip'.

Input parameters:

- `end_date` (string, required): End date in YYYY-MM-DD format. Current or future dates only. Max 16 days from start_date.
- `ip` (string): IPv4 or IPv6 address. Required if 'location' and lat/long are not provided.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): Target location — city name, place name, or full address (e.g. "London", "Paris, France", "1600 Amphitheatre Parkway, Mountain View, CA").
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `start_date` (string, required): Start date in YYYY-MM-DD format. Current or future dates only.
- `time_zone` (string): Timezone for returned timestamps (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

### `ipgeolocation_lookup` (~226 tokens)

IP Geolocation Lookup

Look up geolocation data for an IP address, IPv6 address, or hostname. Returns location, network/ASN, currency, timezone and optionally security, dma_code, hostname, abuse contact, and user-agent data. 'ip' field is required — pass the IP or hostname to look up.

Input parameters:

- `excludes` (string): Comma-separated dot-path fields to exclude from the response (denylist). E.g. 'location.city,asn.organization'.
- `fields` (string): Comma-separated dot-path fields to include in the response (allowlist). E.g. 'location.city,asn.organization'.
- `include` (array): Additional data modules to include. Available: security, hostname, liveHostname, hostnameFallbackLive, user_agent, abuse, dma_code, geo_accuracy. Use '*' to include all modules. Note: 'security' and…
- `ip` (string, required): IPv4 address, IPv6 address, or hostname to look up.
- `lang` (string): Language for location name fields. Defaults to English.

### `ipgeolocation_bulk_lookup` (~246 tokens)

Bulk IP Geolocation Lookup

Look up geolocation data for up to 50,000 IP addresses or hostnames in one request. Returns an array of geolocation objects — same fields as the single lookup. Individual IP failures include a 'message' field; they don't block other results.

Input parameters:

- `excludes` (string): Comma-separated dot-path fields to exclude from the response (denylist). E.g. 'location.city,asn.organization'.
- `fields` (string): Comma-separated dot-path fields to include in the response (allowlist). E.g. 'location.city,asn.organization'.
- `include` (array): Additional data modules to include. Available: security, hostname, liveHostname, hostnameFallbackLive, user_agent, abuse, dma_code, geo_accuracy. Use '*' to include all modules. Note: 'security' and…
- `ips` (array, required): List of IPv4/IPv6 addresses or hostnames to look up (max 50,000). Example: ["8.8.8.8", "1.1.1.1"]
- `lang` (string): Language for location name fields. Defaults to English.

### `ip_security_lookup` (~124 tokens)

IP Threat Intelligence Lookup

IP threat intelligence for a single IP address. Returns a threat score plus VPN, proxy, Tor, residential proxy, relay, bot, spam, known-attacker, and cloud-provider detection.

Input parameters:

- `excludes` (string): Comma-separated dot-path fields to exclude from the response (denylist). E.g. 'location.city,asn.organization'.
- `fields` (string): Comma-separated dot-path fields to include in the response (allowlist). E.g. 'location.city,asn.organization'.
- `ip` (string, required): IPv4 or IPv6 address to check.

### `ip_security_bulk_lookup` (~165 tokens)

Bulk IP Threat Intelligence Lookup

IP threat intelligence for up to 50,000 IP addresses in one request. Returns an array of threat scores plus VPN, proxy, Tor, residential proxy, relay, bot, spam, known-attacker, and cloud-provider detection for each IP.

Input parameters:

- `excludes` (string): Comma-separated dot-path fields to exclude from the response (denylist). E.g. 'location.city,asn.organization'.
- `fields` (string): Comma-separated dot-path fields to include in the response (allowlist). E.g. 'location.city,asn.organization'.
- `ips` (array, required): List of IPv4/IPv6 addresses to check (max 50,000). Example: ["8.8.8.8", "1.1.1.1"]

### `whois_domain_lookup` (~78 tokens)

WHOIS Domain Lookup

Retrieve live WHOIS data for a domain name. Returns registrar details, registrant/admin/technical contacts, name servers, domain status, expiry dates, and raw WHOIS text.

Input parameters:

- `domain_name` (string, required): Domain name or URL to look up (e.g. 'example.com'). Sub-domains resolve to their root domain automatically.

### `whois_ip_lookup` (~84 tokens)

WHOIS IP Lookup

Retrieve live WHOIS ownership and network data for an IPv4 or IPv6 address. Returns network block info, CIDR ranges, organization details, technical/abuse contacts, and raw WHOIS text from the relevant RIR.

Input parameters:

- `ip` (string, required): IPv4 or IPv6 address to look up (e.g. '8.8.8.8').

### `whois_asn_lookup` (~153 tokens)

WHOIS ASN Lookup

Retrieve real-time WHOIS data for an Autonomous System Number. Returns AS name, organization, allocation status, associated CIDR route objects, upstream/downstream/peer ASNs, contact emails, and raw WHOIS text. Accepts the ASN with or without the 'AS' prefix (e.g. 'AS15169' or '15169').Warning: Large ASNs (e.g. major cloud/telecom providers) can return very large responses with thousands of routes and peers, which may consume significant tokens.

Input parameters:

- `asn` (string, required): Autonomous System Number to look up. Accepts with or without the 'AS' prefix (e.g. 'AS15169' or '15169').

### `whois_domain_history` (~103 tokens)

WHOIS Domain History

Retrieve historical WHOIS snapshots for a domain, with data going back to 1986. Returns a chronological list of records each containing registrar info, contacts, name servers, and domain status at time of capture.Warning: Long-established domains can return a large number of historical records, which may consume significant tokens.

Input parameters:

- `domain_name` (string, required): Domain name or URL to look up (e.g. 'example.com'). Sub-domains resolve to their root domain automatically.

### `whois_reverse_lookup` (~252 tokens)

WHOIS Reverse Lookup

Search WHOIS records in reverse to find all domains linked to an owner, email, company, or keyword. Provide exactly one of: keyword, email, owner, or company. keyword uses pattern matching, email supports wildcard regex (e.g. 'm*@gmail.com'), owner and company use full-text phrase matching. Results are paginated. Default mode returns 50 records per page with full WHOIS data; mini mode returns 100 records per page with key fields only.

Input parameters:

- `company` (string): Company/organization name to search using full-text phrase matching.
- `email` (string): Email to search. Supports wildcard regex with '*'.
- `exact` (boolean): If true, return only exact matches. Applies to keyword, owner, and company searches.
- `keyword` (string): Domain keyword to search using pattern matching.
- `mode` (string): Result mode: 'default' (50 records per page, full WHOIS data) or 'mini' (100 records per page, key fields only).
- `owner` (string): Registrant/owner name to search using full-text phrase matching.
- `page` (integer): Page number for paginated results. Defaults to 1.

### `whois_bulk_domain_lookup` (~106 tokens)

Bulk WHOIS Domain Lookup

Retrieve live WHOIS data for up to 100 domain names. Returns structured registrar info, contacts, name servers, status, and raw WHOIS text per domain. The response is an array under 'bulk_whois_response'. If a single domain fails its entry has status=false while the rest are still returned.

Input parameters:

- `domain_names` (array, required): List of domain names or URLs to look up (max 100). Example: ["google.com", "microsoft.com"]

### `dns_lookup` (~206 tokens)

DNS Lookup

Retrieve real-time DNS records for a hostname or IP address. Supports A, AAAA, MX, NS, SOA, SPF, TXT, and CNAME record types. At least one of host_name or ip_address must be provided. When ip_address is provided, record_types must be ['all'].

Input parameters:

- `format` (string): Response format: 'json' (default) or 'xml'.
- `host_name` (string): Hostname or URL to look up DNS records for (e.g. 'example.com').
- `ip_address` (string): IP address for PTR record lookup. When provided, record_types must be ['all']. Can be combined with host_name.
- `record_types` (array, required): List of DNS record types to retrieve. Allowed values: 'A', 'AAAA', 'MX', 'NS', 'SOA', 'SPF', 'TXT', 'CNAME', 'all'. Use ['all'] to retrieve every supported type in one request.

### `dns_history` (~161 tokens)

DNS History

Retrieve historical DNS records for a hostname. Returns paginated snapshots of DNS records captured over time, up to 100 per page. Supports A, AAAA, MX, NS, SOA, SPF, TXT, and CNAME record types.

Input parameters:

- `host_name` (string, required): Hostname or URL to look up DNS records for (e.g. 'example.com').
- `page` (integer): Page number for paginated results. Defaults to 1.
- `record_types` (array, required): List of DNS record types to retrieve. Allowed values: 'A', 'AAAA', 'MX', 'NS', 'SOA', 'SPF', 'TXT', 'CNAME', 'all'. Use ['all'] to retrieve every supported type in one request.

### `dns_reverse` (~246 tokens)

DNS Reverse Lookup

Find all hostnames associated with a specific DNS record value. Supports reverse IP lookup (all domains on an IP/CIDR), reverse MX lookup (all domains using a mail provider), reverse NS lookup (all domains on a name server), and more. Wildcard patterns using '*' are supported for MX, NS, SOA, SPF, TXT, CNAME. Results are paginated at up to 100 DNS records per page.

Input parameters:

- `exact` (boolean): If true, return only exact matches for NS, MX, CNAME, SOA, SPF, and TXT. Default: false.
- `page` (integer): Page number for paginated results. Defaults to 1.
- `record_type` (string, required): DNS record type to reverse-search on. Allowed values: 'A', 'AAAA', 'MX', 'NS', 'SOA', 'SPF', 'TXT', 'CNAME'.
- `value` (string, required): The value to query depending on record type. For A/AAAA: an IP address or CIDR block. For MX/NS/SOA/SPF/TXT/CNAME: a hostname or provider domain. Wildcard patterns with '*' are supported.

### `dns_bulk_lookup` (~171 tokens)

Bulk DNS Lookup

Retrieve real-time DNS records for up to 100 hostnames at once. Supports A, AAAA, MX, NS, SOA, SPF, TXT, and CNAME record types. The response is an array under 'bulk_dns_info'. If a single hostname fails its entry has status=false while the rest are still returned.

Input parameters:

- `domain_names` (array, required): List of hostnames or URLs to look up DNS records for (max 100). Example: ["google.com", "cloudflare.com"]
- `record_types` (array, required): List of DNS record types to retrieve. Allowed values: 'A', 'AAAA', 'MX', 'NS', 'SOA', 'SPF', 'TXT', 'CNAME', 'all'. Use ['all'] to retrieve every supported type in one request.

### `ssl_live_lookup` (~133 tokens)

SSL Live Lookup

Retrieve the live SSL certificate for a domain (end-user/leaf certificate only, no chain). Returns validity dates, serial number, signature algorithm, subject/issuer details, public key info, key usages, Subject Alternative Names, and the PEM-encoded certificate. To retrieve the full certificate chain use 'ssl_live_chain_lookup' instead.

Input parameters:

- `domain_name` (string, required): Domain name or URL to inspect for SSL certificate data (e.g. 'example.com' or 'https://example.com').
- `ssl_raw` (boolean): If true, also include the raw OpenSSL output in the response. Default: false.

### `ssl_live_chain_lookup` (~134 tokens)

SSL Live Chain Lookup

Retrieve the complete live SSL certificate chain for a domain. Includes the leaf certificate plus intermediate and root CA certificates when available. Each certificate includes chain order, validity window, subject and issuer details, public key details, key usages, SAN, and PEM output. To retrieve only the end-user certificate, use 'ssl_live_lookup' instead.

Input parameters:

- `domain_name` (string, required): Domain name or URL to inspect for SSL certificate data (e.g. 'example.com' or 'https://example.com').
- `ssl_raw` (boolean): If true, also include the raw OpenSSL output in the response. Default: false.

### `domain_check_availability` (~105 tokens)

Domain Availability Check

Check whether a single domain name is available for registration. Returns a boolean 'domainAvailability' field. Use source='whois' for a more authoritative check, source='dns' for a faster one.

Input parameters:

- `domain` (string, required): Domain name to check availability for (e.g. 'example.com').
- `source` (string): Data source for the availability check: 'dns' (faster) or 'whois' (more accurate). Defaults to 'dns'.

### `domain_check_availability_with_suggestions` (~143 tokens)

Domain Availability with Suggestions

Check domain name availability and receive alternative domain name suggestions across different TLDs and SLDs if the domain is taken. Returns a 'domain_available_response' array with availability status for the queried domain plus the requested number of suggestions (up to 100).

Input parameters:

- `count` (integer): Number of alternative domain name suggestions to return (max 100). Defaults to 5.
- `domain` (string, required): Domain name to check availability for (e.g. 'example.com').
- `source` (string): Data source for the availability check: 'dns' (faster) or 'whois' (more accurate). Defaults to 'dns'.

### `domain_bulk_check_availability` (~142 tokens)

Bulk Domain Availability Check

Check domain name availability for up to 100 domains at once. Returns a 'bulk_domain_availability_response' array one result per input domain. Each result includes 'domain', 'domainAvailability' (true/false), and 'status' (true if the check succeeded). Always verify 'status' before trusting 'domainAvailability'.

Input parameters:

- `domain_names` (array, required): List of domain names to check availability for (max 100). Example: ["example.com", "mybrand.io"]
- `source` (string): Data source for the availability check: 'dns' (faster) or 'whois' (more accurate). Defaults to 'dns'.

### `screenshot_capture` (~726 tokens)

Screenshot Capture

Capture a static screenshot of a webpage and return a JSON response containing the screenshot URL which can be downloaded or shared directly. **Always ask the user before calling this tool:**
\- Full page or just the visible viewport?
\- Specific element, or the whole page? (If a specific element is needed, help identify the CSS selector via web_fetch on the target URL first.)
\- Image format: PNG, JPG, WebP, or PDF?
\- Should ads or cookie banners be blocked for a cleaner result?
\- Any viewport size / device to simulate?

Use `screenshot_capture_scrolling` instead when the user wants a scrolling video/GIF of the page.

Input parameters:

- `block_ads` (boolean): Block advertisements before rendering.
- `dark_mode` (boolean): Enable dark mode for websites that support it via CSS prefers-color-scheme.
- `delay` (integer): Delay in milliseconds before rendering begins. Useful to let animations finish or dynamic content settle after page load.
- `extract_html` (boolean): If true, the response includes a URL to the raw HTML source of the page as a .html file. ⚠️ Token usage warning: downloading and reading that file can significantly increase token consumption — only…
- `extract_text` (boolean): If true, the response includes a URL to the plain-text content of the page as a .txt file. ⚠️ Token usage warning: reading that content will increase token usage — only enable if the user explicitly…
- `file_type` (string): Output image format. PNG (default) — lossless with transparency support. JPG — smaller file size, lossy. WebP — modern format, good compression. PDF — renders the page as a PDF document.
- `full_page` (boolean): If true, captures the entire scrollable page height — not just the visible viewport. Ideal for long landing pages, documentation, or blog posts.
- `height` (integer): Viewport height in pixels (default 867, max 4320).
- `image_quality` (integer): JPEG compression quality from 0 (smallest file) to 100 (best quality), default 80. Only applies when file_type is JPG — ignored for PNG, WebP, and PDF.
- `lazy_load` (boolean): If true, automatically scrolls the page before rendering to trigger lazy-loaded images and off-screen content.
- `no_cookie_banners` (boolean): Block cookie consent banners before rendering for a clean, overlay-free screenshot.
- `remove_selector` (string): CSS selector(s) for elements to remove from the page before rendering (e.g. '.cookie-bar, #live-chat'). Multiple selectors separated by commas.
- `selector` (string): CSS selector to capture only a specific element on the page (e.g. '#hero', '.pricing-table'). Falls back to full-page capture if the selector is not found.
- `url` (string, required): Full URL of the webpage to screenshot (e.g. 'https://example.com').
- `wait_for_event` (string): 'load' (default) — fires when the page load event completes. 'domcontentloaded' — fires earlier, before images/stylesheets finish. 'networkidle' — waits for all network activity to stop (slowest but…
- `width` (integer): Viewport width in pixels (default 1680, max 7680). Use to simulate specific device widths (e.g. 375 for iPhone, 768 for tablet).

### `screenshot_capture_scrolling` (~428 tokens)

Screenshot Capture Scrolling

Record a scrolling video or animated GIF of a webpage and return a JSON response containing the video download URL. **Always ask the user before calling this tool:**
\- What format? MP4 (default, best compatibility), WebM (smaller), or GIF (looping animation)?
\- How long should it scroll — how many seconds (up to 60)?
\- Scroll speed: slow, normal, or fast?
\- Should it scroll back to the top after reaching the bottom (great for looping GIFs)?
\- Any specific viewport size to simulate?

Use `screenshot_capture` instead for static screenshots (PNG, JPG, PDF).

Input parameters:

- `block_ads` (boolean): Block advertisements before rendering.
- `dark_mode` (boolean): Enable dark mode for websites that support it via CSS prefers-color-scheme.
- `delay` (integer): Delay in milliseconds before rendering begins. Useful to let animations finish or dynamic content settle after page load.
- `duration` (integer): How many seconds the scrolling should last (0–60). If left unset, it will take however long it takes to scroll the website.
- `file_type` (string): Output video format: MP4 (default, broadest compatibility), WEBM (smaller size), or GIF (looping animation).
- `height` (integer): Viewport height in pixels (default 867, max 4320).
- `no_cookie_banners` (boolean): Block cookie consent banners before rendering for a clean, overlay-free screenshot.
- `scroll_back` (boolean): If true, the page scrolls to the bottom then back to the top. Ideal for looping GIFs.
- `scroll_speed` (string): Scroll speed: 'fast', 'normal' (default), or 'slow'.
- `url` (string, required): Full URL of the webpage to screenshot (e.g. 'https://example.com').
- `width` (integer): Viewport width in pixels (default 1680, max 7680). Use to simulate specific device widths (e.g. 375 for iPhone, 768 for tablet).

### `screenshot_bulk_capture` (~136 tokens)

Bulk Screenshot Capture

Capture screenshots of up to 50 webpages in a single request. Returns a JSON response with per-URL results — each entry includes the screenshot download URL, fulfillment status, and any error message.

If any URL needs a specific element targeted via CSS selector, use web_fetch on that page first to identify the correct selector before calling this tool.

Note: `multiple_scrolling` is NOT supported in bulk mode — for scrolling video captures prefer `screenshot_capture_scrolling` per URL instead.

Input parameters:

- `urls` (array, required): List of screenshot config objects (max 50). Each object must include 'url'. All other fields are optional.

### `user_agent_parse` (~87 tokens)

Parse User Agent

Parse a single user-agent string to extract browser, device, OS, and engine details. Also identifies crawlers/bots and flags potential attack user-agents.

Input parameters:

- `user_agent` (string, required): The user-agent string to parse (e.g. "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...").

### `user_agent_bulk_parse` (~90 tokens)

Bulk Parse User Agents

Parse up to 100 user-agent strings in a single request. Returns an array of parsed objects — same fields as single parse. Individual parse failures include a 'message' field without blocking other results.

Input parameters:

- `ua_strings` (array, required): List of user-agent strings to parse (max 100). Example: ["Mozilla/5.0 (Windows ...)", "Googlebot/2.1 (...)"]

### `timezone_lookup` (~307 tokens)

Timezone Lookup

Look up timezone information for a location. Accepts one of: IP address, timezone name, city/address, lat/long, IATA code, ICAO code, or UN/LOCODE. At least one input is required — provide IP if location fields are not provided. Returns current time, UTC offset, DST status, and timezone metadata. Airport/LOCODE inputs also return venue details.

Input parameters:

- `iata_code` (string): 3-letter IATA airport code (e.g. 'JFK', 'LHR').
- `icao_code` (string): 4-letter ICAO airport code (e.g. 'KJFK', 'EGLL').
- `ip` (string): IPv4 or IPv6 address. Required if none of the other location fields are provided.
- `lang` (string): Language for location name fields. Defaults to English.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `lo_code` (string): 5-character UN/LOCODE for a city (e.g. 'USNYC', 'GBLON').
- `location` (string): City name or address (e.g. 'Tokyo, Japan', 'New York, US').
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `tz` (string): Timezone name (tz database format, e.g. 'America/New_York', 'Europe/London').

### `timezone_convert` (~425 tokens)

Timezone Converter

Convert a date/time from one timezone to another. Specify the source and destination timezone each using ONE of: timezone name (tz_from/tz_to), coordinates (lat/long_from + lat/long_to), city address (location_from/location_to), IATA code (iata_from/iata_to), ICAO code (icao_from/icao_to), or UN/LOCODE (locode_from/locode_to).

Input parameters:

- `iata_from` (string): Source 3-letter IATA airport code (e.g. 'LHR').
- `iata_to` (string): Destination 3-letter IATA airport code (e.g. 'JFK').
- `icao_from` (string): Source 4-letter ICAO airport code (e.g. 'EGLL').
- `icao_to` (string): Destination 4-letter ICAO airport code (e.g. 'KJFK').
- `lat_from` (number): Source latitude. Must be paired with 'long_from'.
- `lat_to` (number): Destination latitude. Must be paired with 'long_to'.
- `location_from` (string): Source city/address (e.g. 'London, UK').
- `location_to` (string): Destination city/address (e.g. 'New York, US').
- `locode_from` (string): Source UN/LOCODE (e.g. 'GBLON').
- `locode_to` (string): Destination UN/LOCODE (e.g. 'USNYC').
- `long_from` (number): Source longitude. Must be paired with 'lat_from'.
- `long_to` (number): Destination longitude. Must be paired with 'lat_to'.
- `time` (string, required): Datetime to convert. Formats: 'yyyy-MM-dd HH:mm' or 'yyyy-MM-dd HH:mm:ss'.
- `tz_from` (string): Source timezone name (e.g. 'America/New_York'). Use ONE source type only.
- `tz_to` (string): Destination timezone name (e.g. 'Asia/Tokyo'). Use ONE destination type only.

### `astronomy_lookup` (~283 tokens)

Astronomy Lookup

Get astronomy data for a location and date: sunrise/sunset, moon phase, twilight, golden/blue hour, solar noon, moonrise/moonset, and sun/moon position metrics. Provide one of: ip, location, or lat+long. At least one is required. Date format: YYYY-MM-DD (past or future), defaulting to today.

Input parameters:

- `date` (string): Date in YYYY-MM-DD format. Accepts past or future dates. Defaults to today.
- `elevation` (number): Elevation above sea level in meters (0–10,000). Defaults to 0.
- `ip` (string): IPv4 or IPv6 address for location. Required if 'location' and lat/long are not provided.
- `lang` (string): Language for location name fields. Defaults to English.
- `lat` (number): Latitude (-90 to 90). Must be paired with 'long'.
- `location` (string): City name or address (e.g. 'London', 'Tokyo, Japan'). Use EITHER this OR lat+long OR ip.
- `long` (number): Longitude (-180 to 180). Must be paired with 'lat'.
- `time_zone` (string): Preferred timezone for returned time values (tz database name, e.g. 'America/New_York'). Defaults to the resolved location's timezone.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp#diagnostics

## Score history

- 2026-08-03: 77
- 2026-08-02: 76
- 2026-08-01: 48
- 2026-07-31: 48
- 2026-07-30: 28
- 2026-07-29: 89
- 2026-07-28: 26
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/@apifreaks/mcp
- Socket report: https://socket.dev/npm/package/@apifreaks/mcp
- Repository: https://github.com/api-freaks/apifreaks-mcp
- Website: https://apifreaks.com/integrations/mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/api-freaks-apifreaks-mcp/apifreaks-mcp
