lokalapi – Indonesian reference data
Server Details
Official Indonesian region codes and KBLI 2025 business codes, pay-per-call via x402 (USDC on Base).
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: kbli_convert handles single-code conversion, kbli_convert_batch handles bulk conversion, kbli_search finds codes by text, wilayah_get resolves codes to names, wilayah_search finds regions by name, and lokalapi_info explains the service. The single/batch distinction is explicit in both name and description, so no meaningful overlap remains.
Tools follow a consistent domain_action pattern (kbli_convert, kbli_search, wilayah_get, wilayah_search) with kbli_convert_batch as a natural variant. lokalapi_info is the only minor deviation, using a service name rather than a domain+verb pattern, but it is still readable and predictable.
Six tools is well-scoped for an Indonesian reference-data API covering two domains (KBLI codes and wilayah regions) plus a meta/info tool. Each tool earns its place: single and batch conversion for different workloads, separate get/search for both domains, and one free onboarding tool.
The surface covers the core workflows: KBLI 2020→2025 conversion (single and batch), KBLI search, wilayah code lookup, and wilayah name search, plus service information. Minor gaps exist, such as no batch wilayah lookup or reverse KBLI conversion, but these are unlikely to block typical agent tasks.
Available Tools
6 toolskbli_convertAInspect
Convert a KBLI 2020 business code to its KBLI 2025 equivalent(s) using the official BPS conversion table (2026). Flags one-to-many splits. Needed to update OSS/NIB licences after the June 2026 switch. Costs $0.02 per call (x402, USDC on Base; see lokalapi_info).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 5-digit KBLI 2020 code, e.g. '63122' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the pricing model ($0.02 per call via x402/USDC on Base), the versioned source table, and that one-to-many splits are flagged. It omits error/edge behavior (e.g., invalid or unmapped codes) and any auth note beyond the payment pointer to lokalapi_info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core action before the operational and pricing details; there is little waste. The cost sentence is long but it is the only place that information appears, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must stand alone; it covers purpose, split semantics, use case, and cost. The main gap is that it never describes the shape of the returned mapping (e.g., single code vs. list on splits), though 'equivalent(s)' hints at it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'code' parameter is already documented in the schema (pattern ^\d{5}$, example '63122'). The description adds no format or validation detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Convert a KBLI 2020 business code to its KBLI 2025 equivalent(s)') and names the authoritative table driving the mapping. The singular 'a ... code' implicitly contrasts with the kbli_convert_batch sibling, but no sibling is called out by name, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger context ('Needed to update OSS/NIB licences after the June 2026 switch'), which tells the agent when this tool is relevant. It does not explicitly exclude alternatives or route to kbli_convert_batch/kbli_search, so usage is clear but not exhaustively bounded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kbli_convert_batchAInspect
Convert up to 50 KBLI 2020 business codes to KBLI 2025 in one call (official BPS conversion table, 2026), e.g. all codes of a company's OSS/NIB licence. Per code: status one_to_one, split, merged, not_found or invalid, the KBLI 2025 candidates, and needs_review with the reason; plus a summary. format=csv returns a spreadsheet. Charged only if at least one code converts. Costs $0.50 per call (x402, USDC on Base; see lokalapi_info).
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | KBLI 2020 codes (5 digits), at most 50 unique, e.g. ['62019', '46900'] | |
| format | No | csv: one line per old -> new code pair (default json) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: pricing ($0.50, x402/USDC on Base), the conditional charge (only if at least one code converts), the per-code status taxonomy (one_to_one, split, merged, not_found, invalid, needs_review with reason), the returned summary, and the csv variant's effect. Only rate limits and invalid/oversized-input behavior go unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with verb and resource, and the dense semicolon-separated clauses keep the pricing, status vocabulary, and format behavior compact. Slightly overstuffed for a single paragraph, but nearly every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, yet the description sketches the return payload (statuses, candidates, needs_review, summary) and the billing model, which is what an agent needs to call it correctly. Missing only edge-case handling (duplicates, invalid codes, over-limit input) and any mention of siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by clarifying the business-code context and the 'up to 50' practical cap, and by explaining what format=csv actually produces (a spreadsheet) beyond the schema's terse 'one line per pair'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Convert), a specific resource (KBLI 2020 business codes -> KBLI 2025), and the batch scope (up to 50 in one call, e.g. an OSS/NIB licence), which cleanly separates it from the singular kbli_convert sibling. An agent can pick this over the single-code tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (all codes of a company's OSS/NIB licence) and explains the csv format choice, so the context of when this tool fits is clear. It never states exclusions or explicitly routes single-code lookups to kbli_convert, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kbli_searchAInspect
Find the right KBLI 2025 business classification code (5-digit, mandatory in Indonesia's OSS business licensing since 15 June 2026) from a free-text business activity in Indonesian or English. Returns official BPS titles, descriptions and hierarchy. Costs $0.02 per call (x402, USDC on Base; see lokalapi_info).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Business activity, e.g. 'kafe', 'software development', 'nickel mining', or a KBLI code | |
| level | No | Classification level (default kelompok = 5-digit code) | |
| limit | No | Max results (1-25, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does the most important part: it declares the tool is paid ($0.02 per call, x402, USDC on Base) and points to lokalapi_info, which is critical since an agent could otherwise invoke it blindly. It also states what comes back (official BPS titles, descriptions, hierarchy). It does not cover rate limits, failure/empty-result behavior, or whether calls are billed only on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then return content, then cost. No filler, and the most decision-relevant fact (paid call) is stated explicitly rather than buried. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with no output schema and no annotations, the description covers purpose, return payload, cost model, and the pointer to lokalapi_info, which is close to sufficient. It stops short of explaining result ranking/exactness, empty-result behavior, or how the 'level' hierarchy relates to the 5-digit default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents q, level, and limit including examples and defaults; baseline 3 applies. The description only adds the language dimension ('Indonesian or English') and the reverse-lookup capability, both of which partly duplicate the schema's own q examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ('Find the right KBLI 2025 business classification code') plus scope (5-digit, mandatory in OSS licensing) and input type (free-text business activity in Indonesian or English). It never names or contrasts with the sibling kbli_convert, and the phrase 'or a KBLI code' as an input actually blurs the boundary with that converter, so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no routing to kbli_convert, kbli_convert_batch, or wilayah_* siblings. The only pointer is 'see lokalapi_info' for payment mechanics, which is not usage guidance for the search task itself. Usage must be inferred from the purpose sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lokalapi_infoAInspect
Free. Explains the paid tools, prices and how an agent pays per call via x402 (USDC on Base). Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does so meaningfully: it declares the call itself is 'Free' and reveals that other tools have prices payable via x402 (USDC on Base), which is critical auth/cost context for an agent. It does not state whether an API key or wallet setup is required to merely read the info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the most decision-relevant fact ('Free') front-loaded and the call-to-action ('Call this first') at the end. Every clause earns its place, though the x402/Base parenthetical adds detail some agents will not need before first call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter info tool with no output schema, the description tells the agent what it will learn (paid tools, prices, payment mechanics) and when to call. It could be slightly more complete by indicating the shape of the returned explanation, but nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No syntax or format guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it 'Explains the paid tools, prices and how an agent pays per call via x402'. An agent can tell this is a meta/info tool rather than a data lookup like kbli_search or wilayah_get. It stops short of naming any sibling explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first' is an explicit, actionable sequencing directive that tells the agent when to invoke it relative to the rest of the toolset. It gives a clear positive trigger but no exclusion cases (e.g. when it is unnecessary to re-call).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wilayah_getAInspect
Resolve an official Indonesian region code (Kemendagri 2025, e.g. '34.71' or '34.04.12.2001') to its name, type and full administrative hierarchy. Costs $0.002 per call (x402, USDC on Base; see lokalapi_info).
| Name | Required | Description | Default |
|---|---|---|---|
| kode | Yes | Region code, e.g. '34.71' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a real behavioral cost: $0.002 per call, paid via x402 in USDC on Base, with a pointer to lokalapi_info. It omits error behaviour for invalid/unknown codes and whether results for partial codes (e.g. province vs village) differ in shape, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the purpose and return values are front-loaded, and the pricing/payment caveat follows in a compact clause. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must define the return payload, and it does ('name, type and full administrative hierarchy'). Combined with the cost/payment disclosure and the pointer to lokalapi_info, an agent has everything needed to call it and anticipate the billing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already gives the '34.71' example, so the baseline is 3; the description adds value by showing a second, deeper code format ('34.04.12.2001') and the authoritative source/version (Kemendagri 2025), clarifying accepted code granularity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Resolve'), resource ('official Indonesian region code'), and the exact output shape (name, type, full administrative hierarchy). The name/verb pairing distinguishes it from the search-style sibling wilayah_search, though it never explicitly names that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb: call this when you already hold a region code and need its name/hierarchy. However, it never states when to prefer this over wilayah_search (i.e. name-to-code lookup) or what to do if the code is unknown, and the only routing pointer is to lokalapi_info for payment details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wilayah_searchAInspect
Search official Indonesian administrative regions (province, regency/city, district, village) by name and get the official Kemendagri 2025 code plus full hierarchy. Handles 'Kab.', 'Kota', 'Kec.' prefixes. Costs $0.005 per call (x402, USDC on Base; see lokalapi_info).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Region name, e.g. 'Sleman', 'Kota Yogyakarta', 'Sinduharjo' | |
| level | No | ||
| limit | No | Max results (1-25, default 10) | |
| parent | No | Restrict to children of this code, e.g. '34.04' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does notable work: it discloses the pay-per-call model ($0.005, x402, USDC on Base), points to lokalapi_info for the payment flow, and states that prefixed inputs ('Kab.', 'Kota', 'Kec.') are normalized. It does not cover rate limits, empty-match behavior, or error modes, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core capability is front-loaded, the prefix-handling caveat follows, and the cost/payment pointer is appended where it belongs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating what comes back (official code plus full hierarchy). It also covers the payment dimension. Remaining gaps are minor: no mention of result-limit behavior or what happens on no matches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents q, limit, and parent. The description adds genuine meaning beyond it by confirming that prefixed names are accepted and that results are name-driven, which the schema's plain q description does not state. It says nothing extra about level or parent, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Search), a precise resource (official Indonesian administrative regions), the lookup axis (by name), and the payoff (Kemendagri 2025 code plus full hierarchy). 'By name' implicitly distinguishes it from the sibling wilayah_get, which would take a code, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: search when you have a region name and need its official code or hierarchy, and consult lokalapi_info for payment details. However, no explicit when-to-use/when-not guidance is given, and the alternative wilayah_get is never named, so the agent must infer the routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
kbli_convert - First observed
kbli_convert_batch - First observed
kbli_search - First observed
lokalapi_info - First observed
wilayah_get - First observed
wilayah_search
Related MCP Connectors
Indonesia reference data: holidays, wages, regions, postal codes, tax, food prices, KBLI, BPS stats
Indonesian public data: regions, postal codes, holidays, prayer times, BMKG, schools, wages
Brazil CNPJ, CEP, Selic/IPCA/PTAX, holidays, banks/ISPB for agents. Pay per call in USDC (x402).
Pay-per-call US public data for agents: OFAC, SEC, FMCSA, NPI, VIN recalls, SAM.gov. x402 USDC.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePay-per-call Nigerian phone, bank-account, NIN/BVN and state reference data for AI agents over x402 (USDC), no API key.21 npmMIT
- FlicenseNot gradedqualityBmaintenancePay-per-call structured data for autonomous AI agents. x402-metered, MCP-native.-
- AlicenseBqualityCmaintenancePay-per-call AI agent APIs on Base via x402. Multiple tools across patents, law, AI, geo, weather, crypto, and more. Always growing.2019MIT
- AlicenseAqualityDmaintenancePay-per-call x402 data products on Base mainnet — sanctions screening, aviation weather, mortgage rates, US property dossier, title chain, wallet balance, and agent session auth. Every call settles in USDC with an on-chain receipt, no accounts or API keys.7131 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.