Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Refnusa

REMOTE · REFNUSA.DEV

Indonesia reference data: holidays, wages, regions, postal codes, tax, food prices, KBLI, BPS stats

Available components

+3 this week 70 Trust /100

Last scanned (6 hours ago)

Scores higher than 55% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Maps and Location

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability73
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3619 tokens (~109/item across 33 items; 33 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management57
  • Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 33 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 34 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

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

  • 2 Nov 26 +1

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

  • 30 Oct 26 +1

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

  • 28 Oct 26 +1

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

  • 26 Oct 26 +1

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

  • 24 Oct 26 +1

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

  • 22 Oct 26 +1

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

  • 21 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_het_prices” rewrote its description, which is the text the model reads security
    • Tool “get_stat_series” rewrote its description, which is the text the model reads security
    • Tool “get_umk_history” rewrote its description, which is the text the model reads security
    • Tool “list_stat_indicators” rewrote its description, which is the text the model reads security
    • New tool “get_fao_indonesia” functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://refnusa.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=refnusa.dev CN=YE1,O=Let's Encrypt,C=US 24 Sept 2026 23 Dec 2026 ECDSA 256 ECDSA-SHA384 531882a91661448db8a05861a36e30a037a
SANs: refnusa.dev, www.refnusa.dev
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of refnusa.dev. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
refnusa.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
content-security-policy default-src 'none'; script-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; connect-src 'self'; manifest-src 'self'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), geolocation=(), microphone=(), payment=(), usb=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://refnusa.dev/mcp Verified 200
http (plaintext) http://refnusa.dev/mcp HTTPS enforced 301 https://refnusa.dev/mcp
MCP tools · 33 exposed · ~3,478 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
calculate_net_salary ~299

Estimated take-home pay from a monthly gross salary: worker BPJS deductions (JHT, JP, JKN), PPh 21 by the PP 58/2023 TER table or the December annual recalculation, and the employer's own contributions, each line with its decree. Give gross, or regency_code to use that kabupaten/kota UMK. An estimate; the employer payslip decides.

NameTypeReqDescription
grossinteger–Monthly gross salary in rupiah; omit when regency_code is given
jkk_bandstring–JKK risk band of the employer; default sangat_rendah (the lowest band, 0,24%)
jknstring–Whether BPJS Kesehatan applies, default true
jkn_employer_taxablestring–Count the employer JKN premium as taxable income, default true
jpstring–Whether Jaminan Pensiun applies, default true
jp_capinteger–JP wage cap in rupiah; default is the stored 2026 cap (Rp10.547.400), give it to use another
monthstring–monthly (TER, January to November) or december (annual recalculation), default monthly
ptkpstringyesPTKP status
regency_codestring–Use this kabupaten/kota newest UMK as the gross, optional

No output schema declared.

No examples provided.

check_holiday ~52

Whether one date is a public holiday or cuti bersama, with the decree it was checked against. Weekends count only when the decree names them.

NameTypeReqDescription
datestringyesDate in YYYY-MM-DD form

No output schema declared.

No examples provided.

get_bank_codes ~81

Three-digit bank codes (Sandi Bank) of the commercial and sharia banks on the OJK head-office list of June 2026, by code or by part of the bank name; no argument lists all 105.

NameTypeReqDescription
codestring–Sandi Bank, optional
namestring–Part of the bank name, optional

No output schema declared.

No examples provided.

get_bpjs_rates ~125

BPJS contribution rates as a percent of monthly wage, per program (JHT, JP, JKK, JKM, JKP, JKN), with the decree behind each rate. JKK serves the PP 6/2025 bands; the 2026 JP wage cap is Rp10.547.400 (the BPJS article 18913 says Rp10.547.000, see the row note).

NameTypeReqDescription
programstring–Program; omit for all
statusstring–current (default) or superseded rows, or all

No output schema declared.

No examples provided.

get_fao_indonesia ~107

FAOSTAT series for Indonesia: undernourishment, food insecurity, dietary energy and protein supply, and the supply of main staples (rice, wheat, maize, cassava, sugar, vegetable oils, soyabeans, poultry, eggs, fish). FAO methodology and population estimates, not comparable with BPS figures. Call without series for the list, then with series for the values.

NameTypeReqDescription
seriesstring–Series id; omit for the list of series

No output schema declared.

No examples provided.

get_food_price_series ~115

Monthly PIHPS Nasional (Bank Indonesia) price series, in Rp/kg, for one province and one staple food from May 2017; each point is the price on the first day of the month with data (observed_on). Optional from and to months.

NameTypeReqDescription
commoditystringyesCommodity code from list_food_commodities
fromstring–First month, optional
province_codestringyesKemendagri province code
tostring–Last month, optional

No output schema declared.

No examples provided.

get_food_prices_latest ~247

Latest PIHPS Nasional (Bank Indonesia) price of a staple food per province, in Rp/kg, on the newest observation day, plus PIHPS national averages. Covers the 10 groups and 21 items. Without market you get one row per province and commodity: the traditional-market (tradisional) price when it exists, otherwise the modern-market price; each row names its market and day. Traditional markets report for fewer provinces than modern ones. Pass market for one market only. Filter by commodity, province and market. With month (YYYY-MM): the monthly series price instead, for the 10 groups in traditional markets only.

NameTypeReqDescription
commoditystring–Commodity code from list_food_commodities (a group or an item), optional; with month, groups only
marketstring–tradisional or modern; omit for one row per province and commodity, tradisional first then modern (with month: tradisional only)
monthstring–Return this month instead of the newest on file, optional
province_codestring–Kemendagri province code, optional (Papua and Papua Barat only: 91, 92)

No output schema declared.

No examples provided.

get_fuel_prices ~89

Retail price per litre of the subsidised and special-assignment fuels (Solar, minyak tanah, RON 90) from Kepmen ESDM 218.K/MG.01/MEM.M/2022. Non-subsidised fuels are not included.

NameTypeReqDescription
fuelstring–kerosene, gas_oil (Solar) or ron90; omit for all three

No output schema declared.

No examples provided.

get_het_prices ~95

Harga eceran tertinggi: beras medium and premium by wilayah (Keputusan Kepala Bapanas 299/2025, 22 Aug 2025) and LPG 3 kg in Jawa Timur (Kepgub 801/2024).

NameTypeReqDescription
commoditystring–Commodity; omit for all
regionstring–Part of the region name, for example Kalimantan, optional

No output schema declared.

No examples provided.

get_holidays ~54

Public holidays (libur nasional) and joint leave days (cuti bersama) for one year, from that year's SKB 3 Menteri decree.

NameTypeReqDescription
yearintegeryesCalendar year, for example 2026

No output schema declared.

No examples provided.

get_kbli ~63

One KBLI 2020 entry by code (a letter A to U, or 2, 3, 4 or 5 digits) with its description, its ancestors up to the kategori and its children.

NameTypeReqDescription
codestringyesKBLI code

No output schema declared.

No examples provided.

get_ojol_tariffs ~85

Ride-hailing motorbike fare limits per zone (per-km lower and upper bound, minimum fare for the first 4 km) from KP 667/2022. A 2026 decision may supersede it; see the dataset note.

NameTypeReqDescription
zone_codestring–zona_1, zona_2 or zona_3; omit for all

No output schema declared.

No examples provided.

get_passport_fees ~93

Imigrasi PNBP fees from PP 45/2024: passport (biasa 5 and 10 years, electronic and non-electronic, SPLP, same-day service) and visa kunjungan (single and multiple trip). Government fee only.

NameTypeReqDescription
categorystring–passport or visa; omit for all
fee_codestring–One fee by code, optional

No output schema declared.

No examples provided.

get_postal_code ~38

Postal codes of one kelurahan or desa by its wilayah code.

NameTypeReqDescription
wilayah_codestringyesKemendagri wilayah code

No output schema declared.

No examples provided.

get_pph21_ter ~74

PPh 21 effective average rate (TER) bracket for a monthly gross income and TER category A, B or C, per PP 58/2023.

NameTypeReqDescription
categorystringyesTER category A, B or C
income_idrintegeryesMonthly gross income in rupiah

No output schema declared.

No examples provided.

get_prayer_times ~81

Prayer times for one kabupaten/kota and date, computed by a documented hisab method; not an official Kemenag feed.

NameTypeReqDescription
city_codestringyesKemendagri kabupaten/kota code; a kecamatan or kelurahan code falls back to its parent
datestringyesDate in YYYY-MM-DD form

No output schema declared.

No examples provided.

get_ptkp ~43

Annual non-taxable income (PTKP) for a taxpayer status such as TK/0 or K/1.

NameTypeReqDescription
statusstringyesPTKP status code

No output schema declared.

No examples provided.

get_stat_series ~88

The time series of one BPS indicator for one region: a province (2 digits), a kabupaten/kota (5 characters like 32.73, hdi_regency and inflation_yoy_regency only) or 00 for Indonesia.

NameTypeReqDescription
indicatorstringyesIndicator id
region_codestringyesKemendagri region code, or 00 for Indonesia

No output schema declared.

No examples provided.

get_stat_values ~92

One BPS indicator for one period across all regions in a single call (for a map), plus the national figure. Period is YYYY or YYYY-MM as listed by list_stat_indicators; omit it for the latest. A bare year on a semester indicator resolves to the latest period in that year.

NameTypeReqDescription
indicatorstringyesIndicator id
periodstring–Period, optional (default: latest)

No output schema declared.

No examples provided.

get_tax_rates ~118

Tax and duty rates, each with its decree: PPN 12% and the 11/12 DPP (PMK 131/2024), Bea Meterai tariff and threshold (UU 10/2020), and the domestic cukai hasil tembakau table (PMK 97/2024 Lampiran I).

NameTypeReqDescription
categorystring–ppn, bea_meterai or cukai_hasil_tembakau; omit for all
rate_codestring–One rate by code, optional

No output schema declared.

No examples provided.

get_umk ~140

Regency or city minimum wage (UMK) for one year. With regency_code: that kabupaten/kota (default year: its newest). Without it: every kabupaten/kota with a confirmed figure for the year (default: the newest loaded), in one response, optionally limited to one province_code.

NameTypeReqDescription
province_codestring–Kemendagri province code; used only when regency_code is omitted
regency_codestring–Kemendagri kabupaten/kota code; omit to list all
yearinteger–Calendar year, for example 2026; omit for the newest year loaded

No output schema declared.

No examples provided.

get_umk_history ~373

Every loaded year of the regency or city minimum wage (UMK) for one kabupaten/kota, oldest first, each row with its source instrument and URL: a governor decree, or for some regions the open-data portal of the regional government (source_instrument then starts with Portal and notes that the dataset has no decree number). Covers Jawa Barat 2023 to 2026, Jawa Tengah 2022 to 2026, Jawa Timur 2024 to 2026, a few Riau and Bali regions for 2024, Kalimantan Barat (2019, 2022, 2025), Banten (2020 to 2024), seven Sumatera Selatan regions (2024), five Kalimantan Timur regions (Berau, Kutai Barat, Kutai Timur, Penajam Paser Utara, Samarinda), six Magelang-area regions 2014 to 2020, Kota Tegal 2021 and Rembang (2010, 2019). Where no decree or portal row exists, BPS provincial tables fill in (source_instrument then starts with BPS table, one amount per year, no decree number or effective date): Sumatera Utara 2015 to 2024, Kepulauan Riau 2016 to 2025, Jawa Tengah 2017 to 2021, Banten 2014 to 2019, Nusa Tenggara Timur 2016 to 2025 (not 2019), Lampung 2017 to 2025, DI Yogyakarta 2016 to 2025, plus UMK 2026 for Nusa Tenggara Timur and 12 Lampung regions.

NameTypeReqDescription
regency_codestringyesKemendagri kabupaten/kota code

No output schema declared.

No examples provided.

get_ump ~130

Provincial minimum wage (UMP) for one year (default: the newest loaded), all provinces or one province. For 2026, 29 provinces cite the governor decree and 9 the BPS table; 1997 to 2025 rows cite the BPS yearly table (2017 and Jawa Barat 2016: BPS Statistik Indonesia 2018, Tabel 3.2.23).

NameTypeReqDescription
province_codestring–Kemendagri province code, optional
yearinteger–Calendar year, for example 2026; omit for the newest year loaded

No output schema declared.

No examples provided.

get_ump_history ~99

Every loaded year of the provincial minimum wage (UMP) for one province, oldest first, each row with its source (governor decree or BPS table) and URL. 1997 to 2026. Without province_code: the same rows for all provinces in one response, ordered by province then year (for charts and bulk analysis).

NameTypeReqDescription
province_codestring–Kemendagri province code; omit for all provinces

No output schema declared.

No examples provided.

get_wilayah ~74

Administrative regions: the 38 provinces, the children of one parent code, or one region by code.

NameTypeReqDescription
codestring–Return this one region
levelstring–Level to list; anything below provinsi needs parent_code
parent_codestring–List the children of this code

No output schema declared.

No examples provided.

get_zakat ~82

BAZNAS RI 2026 zakat figures: fitrah (SK 14/2026) and the nisab and rate of zakat penghasilan dan jasa (SK 15/2026).

NameTypeReqDescription
categorystring–fitrah or penghasilan; omit for all
zakat_codestring–One figure by code, optional

No output schema declared.

No examples provided.

list_datasets ~65

Coverage and status of every dataset: status, row count, source instrument, effective date, publisher, official source URL, last check, data period, cadence, maximum age, next expected update, and the catalogue page. The licence, caveat and fallback fields are Indonesian text.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_food_commodities ~79

The 10 staple food groups and their 21 items that PIHPS Nasional (Bank Indonesia) reports per province, with code, Indonesian and English name, unit (Rp/kg), the markets (tradisional, modern) that have a price on the newest day, and for the groups the first and last month of the monthly series.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_stat_indicators ~133

Regional statistics from BPS tables: the indicator ids with unit, level (province or kabupaten/kota), every period available, source table and caveats. Includes unemployment (TPT), poverty and poverty lines, HDI (IPM), wages, population, GRDP per capita, life expectancy and monthly inflation and CPI (inflation_mom, inflation_yoy, inflation_ytd, cpi for provinces; inflation_yoy_regency for CPI cities; periods YYYY-MM from 2024-01, base 2022=100). Start here, then call get_stat_values or get_stat_series.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reverse_postal_code ~34

Regions (kelurahan or desa) that carry one postal code.

NameTypeReqDescription
postal_codestringyesPostal code

No output schema declared.

No examples provided.

search_kbli ~128

Search the KBLI 2020 business-field classification (Peraturan BPS 2/2020) by part of the title or a code prefix, optionally one of its five levels (kategori, golongan_pokok, golongan, subgolongan, kelompok). Returns code, level, parent and title; fetch one code for its description.

NameTypeReqDescription
levelstring–Restrict to one level, optional
limitinteger–Maximum items returned, default 50
qstring–Part of the title, or the start of a code, optional

No output schema declared.

No examples provided.

validate_nik ~57

Checks the structure of a 16-digit NIK and looks up its region digits in the wilayah table. Send the NIK in the JSON body; it is never logged.

NameTypeReqDescription
nikstringyesThe 16-digit NIK

No output schema declared.

No examples provided.

validate_plate ~45

Checks the format of an Indonesian vehicle plate and names the region of its prefix when the prefix table is loaded.

NameTypeReqDescription
platestringyesPlate such as B 1234 XYZ

No output schema declared.

No examples provided.

Install

How do I install the Refnusa MCP server?

Refnusa is a hosted endpoint at https://refnusa.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · refnusa.dev

# add to Claude Code
claude mcp add --transport http dev-refnusa-refnusa 'https://refnusa.dev/mcp'
Common questions

What is the Refnusa MCP server?

Refnusa is an MCP server listed in the public MCP registry as dev.refnusa/refnusa. Indonesia reference data: holidays, wages, regions, postal codes, tax, food prices, KBLI, BPS stats. This page covers its hosted endpoint (https://refnusa.dev/mcp).

Is the Refnusa MCP server safe to use?

Refnusa scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Refnusa MCP server expose?

Refnusa exposes 33 tools: list_datasets, get_holidays, check_holiday, get_ump, get_ump_history, and 28 more. Their descriptions and schemas cost roughly 3,478 tokens of context every time the server is loaded.

Does the Refnusa MCP server require authentication?

No. We connected to Refnusa without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Refnusa MCP server still maintained?

Refnusa is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.