Skip to main content
Glama

Search ReliefWeb Reports

reliefweb_search_reports
Read-onlyIdempotent

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.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "reliefweb_search_reports"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNoSort order. Use date.original:desc for newest first (default), date.original:asc for oldest first, score:desc for relevance.
textNoFull-text search query. Matches against title, body, and key metadata fields. Use plain natural language or keywords.
limitNoNumber of results to return (1–1000, default 10). Larger integers are clamped to 1000 with a notice when clamping is enabled; otherwise they are rejected. Use a smaller value for targeted lookups; larger for bulk research. Each call counts against the 1,000-calls/day quota.
themeNoSector or cross-cutting theme (e.g., Health, Food and Nutrition, Shelter and Non-Food Items, Protection). Open-ended — matches theme.name exactly as ReliefWeb spells it.
filterNoRaw ReliefWeb filter object for compound conditions not covered by named params. Example: {"operator": "AND", "conditions": [{"field": "format.name", "value": "Map"}, {"field": "language.code", "value": "fr"}]}.
formatNoContent format filter. One of: News and Press Release, Situation Report, Map, Infographic, Analysis, Other, Assessment, Manual and Guideline, Appeal, UN Document, Evaluation and Lessons Learned. Case, spacing, and punctuation are ignored; any other value is rejected with the valid list.
offsetNoZero-based offset for pagination. Use with limit and the totalCount enrichment field to page through large result sets.
sourceNoOrganization short name (e.g., UNHCR, OCHA, WFP). Filters on source.shortname.
countryNoISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to content tagged with this country.
date_toNoLatest publication date. Pair with date_from for a date range. A bare calendar date resolves to end of that day in UTC, so the range covers it in full; a datetime carrying any offset is resolved to UTC.
languageNoISO 639-1 language code (e.g., en, fr, es, ar). Filters on language.code.
date_fromNoEarliest publication date. Filters on date.original (source publication date). A bare calendar date such as 2024-01-15 is accepted and resolves to start of that day in UTC; a datetime carrying any offset is resolved to UTC.
disaster_idNoReliefWeb numeric disaster ID. Filters to reports linked to a specific disaster. Get the ID from reliefweb_search_disasters.
include_archivedNoNo effect on reports. Reports have no archived class — every report is already in scope, whatever this is set to. Kept so existing calls that pass it keep working; it is meaningful on reliefweb_search_jobs, reliefweb_search_training, and reliefweb_search_disasters.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
itemsNoMatching reports (summaries only — use reliefweb_get_report for full body).
noticeNoDiscloses requested and applied limits when clamped, an ignored empty raw filter, and empty-page guidance with the match count and last reachable offset or suggestions to broaden the search.
totalCountNoTotal reports matching the query before pagination.
appliedFiltersNoThe resolved filter set the query actually ran with, after normalization and defaults. Echoes back so the agent can confirm how its inputs were interpreted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results to return (1–1000, default 10). Use a smaller value for targeted lookups; larger for bulk research. Each call counts against the 1,000-calls/day quota."New value: +"Number of results to return (1–1000, default 10). Larger integers are clamped to 1000 with a notice when clamping is enabled; otherwise they are rejected. Use a smaller value for targeted lookups; larger for bulk research. Each call counts against the 1,000-calls/day quota."
    • changedInput schema / properties / limit / maximum
      Previous value: -1000New value: +9007199254740991
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `unknown_format`: The format value does not name a ReliefWeb report format. `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field, an invalid raw filter object, or a malformed date. `upstream_error`: The ReliefWeb API was unreachable, timed out, or returned a server error. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_date`: A date bound contains impossible calendar or time components. `unknown_format`: The format value does not name a ReliefWeb report format. `invalid_query`: ReliefWeb rejected the query — possible causes include malformed text, an unrecognized sort field, an invalid raw filter object, or a malformed date. `upstream_error`: The ReliefWeb API was unreachable, timed out, or returned a server error. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "unknown_format",
      -  "invalid_query",
      -  "upstream_error"
      -]New value: +[
      +  "invalid_date",
      +  "unknown_format",
      +  "invalid_query",
      +  "upstream_error"
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Present only when the page is empty. Names the match count and the last reachable offset when the query matched records; otherwise echoes the filters applied and suggests how to broaden."New value: +"Discloses requested and applied limits when clamped, an ignored empty raw filter, and empty-page guidance with the match count and last reachable offset or suggestions to broaden the search."
  2. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "items",
      +      "appliedFilters",
      +      "totalCount"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `unknown_format`: The format value does not name a ReliefWeb report format. `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field, an invalid raw filter object, or a malformed date. `upstream_error`: The ReliefWeb API was unreachable, timed out, or returned a server error. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "unknown_format",
      +            "invalid_query",
      +            "upstream_error"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "items",
      -  "appliedFilters",
      -  "totalCount"
      -]
  3. Changed5 schema fields changed
    • changedInput schema / properties / format / description
      Previous value: -"Content format filter. Valid values: Situation Report, Assessment, Analysis, Map, Infographic, Manual and Guideline, News and Press Release, Policy Document, Appeal, Financial Report, Evaluation and Lessons Learned, Other."New value: +"Content format filter. One of: News and Press Release, Situation Report, Map, Infographic, Analysis, Other, Assessment, Manual and Guideline, Appeal, UN Document, Evaluation and Lessons Learned. Case, spacing, and punctuation are ignored; any other value is rejected with the valid list."
    • changedInput schema / properties / include_archived / description
      Previous value: -"Include archived and to-review content in addition to published. Uses preset=analysis. Off by default."New value: +"No effect on reports. Reports have no archived class — every report is already in scope, whatever this is set to. Kept so existing calls that pass it keep working; it is meaningful on reliefweb_search_jobs, reliefweb_search_training, and reliefweb_search_disasters."
    • changedInput schema / properties / theme / description
      Previous value: -"Sector or cross-cutting theme (e.g., Health, Food and Nutrition, Shelter and NFI, Protection). Matches theme.name."New value: +"Sector or cross-cutting theme (e.g., Health, Food and Nutrition, Shelter and Non-Food Items, Protection). Open-ended — matches theme.name exactly as ReliefWeb spells it."
    • changedOutput schema / properties / appliedFilters / properties / format / description
      Previous value: -"Format name filter applied."New value: +"Format name filter applied, in its canonical ReliefWeb spelling."
    • changedOutput schema / properties / appliedFilters / properties / preset / description
      Previous value: -"ReliefWeb preset the query used: latest (default) or analysis when include_archived."New value: +"ReliefWeb preset the query used. Always latest for reports — no preset changes which reports match."
  4. Changed7 schema fields changed
    • addedInput schema / properties / date_from / anyOf
      Added value: +[
      +  {
      +    "const": "",
      +    "type": "string"
      +  },
      +  {
      +    "description": "Calendar date (2024-01-15) or full ISO 8601 datetime (2024-01-15T00:00:00+00:00).",
      +    "pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / date_from / description
      Previous value: -"Earliest publication date (ISO 8601, e.g., 2024-01-15T00:00:00+00:00). Filters on date.original (source publication date)."New value: +"Earliest publication date. Filters on date.original (source publication date). A bare calendar date such as 2024-01-15 is accepted and resolves to start of that day in UTC; a datetime carrying any offset is resolved to UTC."
    • removedInput schema / properties / date_from / type
      Removed value: -"string"
    • addedInput schema / properties / date_to / anyOf
      Added value: +[
      +  {
      +    "const": "",
      +    "type": "string"
      +  },
      +  {
      +    "description": "Calendar date (2024-01-31) or full ISO 8601 datetime (2024-01-31T23:59:59+00:00).",
      +    "pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / date_to / description
      Previous value: -"Latest publication date (ISO 8601). Pair with date_from for a date range."New value: +"Latest publication date. Pair with date_from for a date range. A bare calendar date resolves to end of that day in UTC, so the range covers it in full; a datetime carrying any offset is resolved to UTC."
    • removedInput schema / properties / date_to / type
      Removed value: -"string"
    • changedOutput schema / properties / notice / description
      Previous value: -"Recovery hint when results are empty — echoes the filters applied and suggests how to broaden. Absent on successful result pages."New value: +"Present only when the page is empty. Names the match count and the last reachable offset when the query matched records; otherwise echoes the filters applied and suggests how to broaden."
  5. Changed2 schema fields changed
    • addedOutput schema / properties / appliedFilters
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The resolved filter set the query actually ran with, after normalization and defaults. Echoes back so the agent can confirm how its inputs were interpreted.",
      +  "properties": {
      +    "country": {
      +      "description": "Country code as normalized (uppercased ISO3).",
      +      "type": "string"
      +    },
      +    "dateFrom": {
      +      "description": "Earliest publication date filter applied.",
      +      "type": "string"
      +    },
      +    "dateTo": {
      +      "description": "Latest publication date filter applied.",
      +      "type": "string"
      +    },
      +    "disasterId": {
      +      "description": "Disaster ID filter applied.",
      +      "type": "number"
      +    },
      +    "format": {
      +      "description": "Format name filter applied.",
      +      "type": "string"
      +    },
      +    "language": {
      +      "description": "Language code filter applied.",
      +      "type": "string"
      +    },
      +    "limit": {
      +      "description": "Result limit the query used.",
      +      "type": "number"
      +    },
      +    "offset": {
      +      "description": "Pagination offset the query used.",
      +      "type": "number"
      +    },
      +    "preset": {
      +      "description": "ReliefWeb preset the query used: latest (default) or analysis when include_archived.",
      +      "type": "string"
      +    },
      +    "rawFilter": {
      +      "description": "True when a raw compound filter object was merged into the query.",
      +      "type": "boolean"
      +    },
      +    "sort": {
      +      "description": "Sort order the query used (resolved, including the default).",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Source short name filter applied.",
      +      "type": "string"
      +    },
      +    "text": {
      +      "description": "Full-text query the search used.",
      +      "type": "string"
      +    },
      +    "theme": {
      +      "description": "Theme name filter applied.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "sort",
      +    "preset",
      +    "limit",
      +    "offset"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "items",
      -  "totalCount"
      -]New value: +[
      +  "items",
      +  "appliedFilters",
      +  "totalCount"
      +]
  6. Changed3 schema fields changed
    • changedInput schema / properties / offset / description
      Previous value: -"Zero-based offset for pagination. Use with limit and totalCount from the response to page through large result sets."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through large result sets."
    • removedOutput schema / properties / message
      Removed value: -{
      -  "description": "Recovery hint when results are empty — echoes the filters applied and suggests how to broaden. Absent on successful result pages.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Recovery hint when results are empty — echoes the filters applied and suggests how to broaden. Absent on successful result pages.",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/open-world/idempotent profile, and the description adds real context beyond them: results are paginated summaries, body text is excluded at 10–100KB per document, and each call draws on a 1,000-call/day quota. The archived-class caveat is useful domain behavior. Slight redundancy in stating the body exclusion twice keeps it just short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the get_report handoff, and every remaining sentence carries a caveat an agent would otherwise get wrong. The body-exclusion point is made twice in adjacent sentences, which is the only real waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations declaring safety, and 100% schema coverage, the description only needed to add the non-obvious operational facts — quota cost, body exclusion, archived no-op — and it covers all three.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the 14 params is documented in the schema (sort tokens, ISO codes, date resolution, clamp behavior). The description adds only the high-level filter dimension list and the include_archived caveat, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (search humanitarian reports on ReliefWeb) plus the full filter surface, and explicitly separates itself from reliefweb_get_report. An agent can distinguish it from the sibling search tools (jobs, training, disasters) from the resource noun alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative tool and the exact condition that selects it: results are summaries only, so call get_report when document content is needed. It also tells the agent that include_archived is a no-op here but meaningful on other sibling tools, which prevents a wasted call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.