---
summary: "Add worldbank_search_projects — search the World Bank lending portfolio by text, country, region, status, and board approval date (#8)"
breaking: false
security: false
---

# 0.3.0 — 2026-08-09

## Added

- **`worldbank_search_projects`** tool — search the World Bank lending portfolio (loans, credits, and grants) by free text, country, region, status, and board-approval date window. Backed by a new `ProjectsService` (`src/services/projects/`) wrapping the World Bank Projects API (`search.worldbank.org/api/v3/projects`) — a third upstream, sharing no code with `WorldBankApiService` or `PipService`: a different host, results keyed by project ID in an object rather than listed, offset paging on `os`/`rows`, and an unmatched exact filter answered as HTTP 200 with `total: 0` rather than an error. [#8](https://github.com/cyanheads/worldbank-mcp-server/issues/8)
- **Countries are ISO2 on this tool** (`BR`, `IN`, `ZA`) or a World Bank regional code (`3A`, `4E`) — the one place this server departs from the ISO3 its other tools take. An ISO3 code is rejected at the schema rather than passed upstream, where it would return a silent zero-hit; `worldbank_get_country` reports the `iso2` field for either form.
- **`status`** (`Active`/`Closed`/`Dropped`/`Pipeline`) and **`region`** (the nine World Bank operational regions) are Zod enums read off the endpoint's own facets, so a typo can't reach upstream as an unmatched filter.
- An empty result names the cause: when a country filter was in force, the search re-runs it alone and the notice states whether the codes match nothing at all or the other filters emptied an otherwise-matching set.
- **`include_abstract`** input (default `false`) — abstracts run to a median of roughly 1,200 characters and are published for about half the portfolio, so a full page of them roughly doubles the response.
- **`WORLDBANK_PROJECTS_BASE_URL`** env var (default `https://search.worldbank.org/api/v3`), added to `.env.example`, `server.json` (both stdio and HTTP package entries), and `src/config/server-config.ts`.

## Changed

- **Server-level `instructions`** now note that lending operations are a third dataset, reachable via `worldbank_search_projects`, identified by ISO2 country codes.
