Skip to content
Eden Engine

Indonesia Village Weather Forecast: 3-Day, 3-Hourly (BMKG)

bmkgforecast/village-forecast

BMKG's 3-day weather forecast for one Indonesian village or urban ward, looked up by its level IV administrative (adm4) code: in 3-hour steps, air temperature in degrees Celsius, humidity, cloud cover, precipitation, wind speed and direction, and the weather condition in Indonesian and English. Updated twice a day. BMKG data, passed through unmodified and served by Eden Engine; not an official BMKG product.

activeper callv1

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.

Data source

Badan Meteorologi, Klimatologi, dan Geofisika (BMKG)

Sumber: BMKG (Badan Meteorologi, Klimatologi, dan Geofisika). Data from BMKG (Badan Meteorologi, Klimatologi, dan Geofisika), Indonesia's Meteorology, Climatology, and Geophysics Agency, which asks that it be credited as the data source (https://data.bmkg.go.id/prakiraan-cuaca/). Credit: BMKG (Badan Meteorologi, Klimatologi, dan Geofisika). Served by Eden Engine; not an official BMKG product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "bmkgforecast/village-forecast" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "bmkgforecast/village-forecast" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "bmkgforecast/village-forecast", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "bmkgforecast/village-forecast", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 20, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "adm4"
  ],
  "properties": {
    "adm4": {
      "type": "string",
      "pattern": "^[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{4}$",
      "description": "Indonesian level IV administrative area code (a village, desa, or urban ward, kelurahan) in the Ministry of Home Affairs format 'PP.KK.CC.VVVV' (province.regency.district.village). For example 31.71.03.1001 is Kemayoran, Central Jakarta. There is no name search; BMKG refers callers to Ministry of Home Affairs Decree No. 100.1.1-6117 of 2022 for the codes."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "lokasi",
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "cuaca"
        ],
        "properties": {
          "cuaca": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "datetime",
                  "t",
                  "hu",
                  "weather_desc_en",
                  "utc_datetime",
                  "local_datetime"
                ],
                "properties": {
                  "t": {
                    "type": "number",
                    "description": "Air temperature in degrees Celsius."
                  },
                  "hu": {
                    "type": "number",
                    "description": "Relative humidity in percent."
                  },
                  "tp": {
                    "type": "number",
                    "description": "Precipitation amount for the step (BMKG's parameter list does not state its unit)."
                  },
                  "vs": {
                    "type": [
                      "number",
                      "string",
                      "null"
                    ],
                    "description": "Visibility, numeric form; null in the capture."
                  },
                  "wd": {
                    "type": "string",
                    "description": "Direction the wind blows from, as a compass abbreviation such as 'E'."
                  },
                  "ws": {
                    "type": "number",
                    "description": "Wind speed in km/h."
                  },
                  "tcc": {
                    "type": "number",
                    "description": "Total cloud cover in percent."
                  },
                  "image": {
                    "type": "string",
                    "description": "URL of BMKG's weather icon for the step, passed through as a string; this tool does not fetch it."
                  },
                  "wd_to": {
                    "type": "string",
                    "description": "Direction the wind blows toward."
                  },
                  "wd_deg": {
                    "type": "number",
                    "description": "Wind direction in degrees."
                  },
                  "vs_text": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Visibility as text, in km per BMKG's documentation; null in the capture."
                  },
                  "weather": {
                    "type": "number",
                    "description": "BMKG's numeric weather code."
                  },
                  "datetime": {
                    "type": "string",
                    "description": "Forecast step start as an ISO 8601 UTC timestamp, for example '2026-10-20T00:00:00Z'."
                  },
                  "time_index": {
                    "type": "string",
                    "description": "BMKG's time-index label for the step, for example '10-11'."
                  },
                  "utc_datetime": {
                    "type": "string",
                    "description": "Forecast step in UTC, 'YYYY-MM-DD HH:mm:ss'."
                  },
                  "weather_desc": {
                    "type": "string",
                    "description": "Weather condition in Indonesian, for example 'Cerah'."
                  },
                  "analysis_date": {
                    "type": "string",
                    "description": "When BMKG produced the forecast, UTC, 'YYYY-MM-DDTHH:mm:ss'."
                  },
                  "local_datetime": {
                    "type": "string",
                    "description": "Forecast step in the village's local time, 'YYYY-MM-DD HH:mm:ss'."
                  },
                  "weather_desc_en": {
                    "type": "string",
                    "description": "Weather condition in English, for example 'Sunny'."
                  }
                },
                "description": "One forecast step, 3 hours apart.",
                "additionalProperties": true
              }
            },
            "description": "The forecast grouped by day (3 days), each day a list of 3-hourly steps (up to 8 per day; the first day may have fewer)."
          },
          "lokasi": {
            "type": "object",
            "properties": {
              "lat": {
                "type": "number",
                "description": "Latitude of the village in decimal degrees; south is negative."
              },
              "lon": {
                "type": "number",
                "description": "Longitude of the village in decimal degrees."
              },
              "adm1": {
                "type": "string",
                "description": "Province code, for example '31'."
              },
              "adm2": {
                "type": "string",
                "description": "Regency or city code, for example '31.71'."
              },
              "adm3": {
                "type": "string",
                "description": "District code, for example '31.71.03'."
              },
              "adm4": {
                "type": "string",
                "description": "Village (desa) or urban ward (kelurahan) code, as requested."
              },
              "desa": {
                "type": "string",
                "description": "Village or ward name."
              },
              "type": {
                "type": "string",
                "description": "Level of the location, 'adm4'."
              },
              "kotkab": {
                "type": "string",
                "description": "Regency or city name."
              },
              "provinsi": {
                "type": "string",
                "description": "Province name."
              },
              "timezone": {
                "type": "string",
                "description": "Time zone of the location: an IANA name such as 'Asia/Jakarta' at the top level, a UTC offset such as '+0700' inside each `data` entry."
              },
              "kecamatan": {
                "type": "string",
                "description": "District name."
              }
            },
            "description": "The location again, with the time zone as a UTC offset.",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "description": "One entry per location (one for an adm4 request). Each holds `lokasi` and `cuaca`."
    },
    "lokasi": {
      "type": "object",
      "required": [
        "adm4"
      ],
      "properties": {
        "lat": {
          "type": "number",
          "description": "Latitude of the village in decimal degrees; south is negative."
        },
        "lon": {
          "type": "number",
          "description": "Longitude of the village in decimal degrees."
        },
        "adm1": {
          "type": "string",
          "description": "Province code, for example '31'."
        },
        "adm2": {
          "type": "string",
          "description": "Regency or city code, for example '31.71'."
        },
        "adm3": {
          "type": "string",
          "description": "District code, for example '31.71.03'."
        },
        "adm4": {
          "type": "string",
          "description": "Village (desa) or urban ward (kelurahan) code, as requested."
        },
        "desa": {
          "type": "string",
          "description": "Village or ward name."
        },
        "kotkab": {
          "type": "string",
          "description": "Regency or city name."
        },
        "provinsi": {
          "type": "string",
          "description": "Province name."
        },
        "timezone": {
          "type": "string",
          "description": "Time zone of the location: an IANA name such as 'Asia/Jakarta' at the top level, a UTC offset such as '+0700' inside each `data` entry."
        },
        "kecamatan": {
          "type": "string",
          "description": "District name."
        }
      },
      "description": "The requested village: administrative codes and names, coordinates and time zone.",
      "additionalProperties": true
    }
  },
  "description": "BMKG's 3-day village forecast, passed through unchanged.",
  "additionalProperties": true
}