# io.github.cyanheads/reliefweb-mcp-server

> Search ReliefWeb humanitarian reports, disasters, jobs, training, and country profiles via MCP.

- name: io.github.cyanheads/reliefweb-mcp-server
- version: 0.2.3
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Freliefweb-mcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Freliefweb-mcp-server/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "reliefweb-mcp-server": {
      "type": "http",
      "url": "https://reliefweb.caseyjhand.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-100% +updated-11d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: reliefweb_get_country (destructiveHint); reliefweb_get_job (destructiveHint); reliefweb_search_reports (destructiveHint); …
- pass `tools.token_cost`: about 6,737 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 5 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @cyanheads/reliefweb-mcp-server@0.2.3, @cyanheads/reliefweb-mcp-server@0.2.3

- tools: 11, about 6,737 tokens to load them all
- tool set hash: 28e404d09395eb844b5d76a2abff27d4
- tools last changed: 2026-10-09T13:48:02.985Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.cyanheads/reliefweb-mcp-server.svg)](https://protogrid.dev/servers/io.github.cyanheads/reliefweb-mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-09 `reliefweb_get_training` changed (inputSchema)
- 2026-10-09 `reliefweb_get_job` changed (inputSchema)
- 2026-10-09 `reliefweb_get_country` changed (inputSchema)
- 2026-10-09 `reliefweb_get_disaster` changed (inputSchema)
- 2026-10-09 `reliefweb_get_report` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Freliefweb-mcp-server/changes

## Dependencies

- npm @cyanheads/reliefweb-mcp-server@0.2.3: unknown
- npm @cyanheads/reliefweb-mcp-server@0.2.3: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://reliefweb.caseyjhand.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm @cyanheads/reliefweb-mcp-server@0.2.3
- npm @cyanheads/reliefweb-mcp-server@0.2.3

## Tools (11)

- `reliefweb_get_country`: Fetch a country profile from ReliefWeb by ISO3 code, including overview, humanitarian situation summary, key content links, active appeals and response plans, and useful external links. Country profiles are curated by OCHA editors and provide the authoritative situation summary for humanitarian responders. Each curated list also has an archive — thousands of entries deep for a long-running crisis — which the profile leaves out. Two alternative selectors, at most one per call: sections names parts of the profile to return, archive pages one list's archived entries in place of the profile. A profile over the response budget comes back as a section outline naming every section and its byte size. Nothing is truncated on any path.
- `reliefweb_get_disaster`: Fetch a disaster record by ReliefWeb numeric ID including description, affected countries, GLIDE number, profile overview, key content links, and active appeals or response plans. Use after reliefweb_search_disasters to retrieve full details. Each curated list also has an archive, which the record leaves out. Two alternative selectors, at most one per call: sections names parts of the record to return, archive pages one list's archived entries in place of the record. Description and profile overview can together run to tens of KB for major disasters. A record over the response budget comes back as a section outline naming every section and its byte size. Nothing is truncated on any path.
- `reliefweb_get_job`: Fetch a job posting by ReliefWeb numeric ID with the full vacancy description, application instructions, dates, hiring organization, and location and taxonomy metadata. Use after reliefweb_search_jobs, which returns summaries without the description or application instructions. Reaches expired postings as well as open ones. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.
- `reliefweb_get_report`: Fetch a single ReliefWeb report by its numeric ID with full body text, file attachments, and all metadata. Use after reliefweb_search_reports to retrieve document content — body is excluded from search results to manage context budget. Report bodies can be 10–100KB. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.
- `reliefweb_get_training`: Fetch a training listing by ReliefWeb numeric ID with the full description, registration instructions, event link, cost and fee information, dates, languages, and organizing source. Use after reliefweb_search_training, which returns summaries without the description, registration instructions, or cost detail. Reaches concluded listings as well as current ones. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.
- `reliefweb_list_countries`: List all countries and territories tracked by ReliefWeb, optionally filtered to active humanitarian situations. Returns ISO3 codes and status for each entry — use the ISO3 code with reliefweb_get_country to fetch a full profile. Set crisis_only=true to limit results to countries with active humanitarian situations.
- `reliefweb_list_sources`: Browse source organizations that contribute content to ReliefWeb, optionally filtered by name text or organization type. Returns short names, types, and URLs. Use the shortname value with the source filter in reliefweb_search_reports, reliefweb_search_jobs, and reliefweb_search_training.
- `reliefweb_search_disasters`: Search active and historical disasters on ReliefWeb by type, country, status, date range, and GLIDE number. Default preset covers alert, ongoing, and past disasters. Use include_archived=true to reach alert-archive entries as well, for historical research. Returns IDs suitable for use with reliefweb_get_disaster and as disaster_id filter in reliefweb_search_reports.
- `reliefweb_search_jobs`: Search humanitarian job listings on ReliefWeb by country, organization, career category, theme, and experience level. Returns current open positions — expired postings are excluded by default. Use include_archived=true to search the full history of postings, which is far larger than the open set. Use text search for role titles and job descriptions.
- `reliefweb_search_reports`: Search humanitarian reports on ReliefWeb with filtering by country, disaster, format, theme, language, source, and date. Returns paginated summaries — use reliefweb_get_report to fetch full body text. Report body is excluded from results (10–100KB each); call get_report when document content is needed. Every report is reachable by default — reports have no archived class, so include_archived has no effect here. Note: each call counts against the 1,000 calls/day quota.
- `reliefweb_search_training`: Search humanitarian training and learning opportunities on ReliefWeb by country, format, date, source, career category, and language. Covers on-site and online capacity-building events. Training date fields use date.start / date.end — different from report date fields. Use date_start_from and date_start_to to find upcoming training within a window. Results default to soonest-starting first (date.start:asc). With neither date bound supplied the search is scoped to training starting from now, so the first page is upcoming opportunities; supply either bound to search an explicit range, including a historical one. Use include_archived=true to search concluded listings as well, which are far more numerous than the current ones.
