reliefweb-mcp-server
Server Details
Search ReliefWeb humanitarian reports, disasters, jobs, training, and country profiles via MCP.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/reliefweb-mcp-server
- GitHub Stars
- 2
- Server Listing
- @cyanheads/reliefweb-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Each tool maps to a distinct resource and action: country, disaster, job, report, training, and source. The get/search/list boundaries are explicit, and descriptions repeatedly clarify when to use retrieval versus search. No two tools appear to compete for the same request.
All tools use the same reliefweb_verb_resource snake_case pattern: get_*, list_*, and search_* followed by a clear resource name. The convention is applied uniformly across all 11 tools with no mixed casing or verb styles.
Eleven tools is well scoped for the ReliefWeb domain, covering the main content types with search and retrieval operations. Each tool earns its place, and the set is neither thin nor unwieldy.
The surface covers the core ReliefWeb entities: countries, disasters, jobs, reports, training, and sources, with search and get operations for the main content types. Minor gaps exist, such as no dedicated source detail tool beyond list_sources and no standalone appeal or response-plan search, but these are largely workable through embedded fields and filters.
Available Tools
11 toolsreliefweb_get_countryGet ReliefWeb Country ProfileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | Yes | ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Used to look up the country's ReliefWeb profile. | |
| archive | No | Archive mode: return a page of one curated list's ARCHIVED entries instead of the country record. The response carries the record identity, the selected list, and total / shown / offset, plus a next offset while more entries remain. Mutually exclusive with sections — sections slices the record, archive replaces it — and a call supplying both is rejected. A record over the response budget still answers an archive call with the page: a page is bounded by limit and carries none of the record prose, so it never outlines. | |
| sections | No | Sections of the country record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the profile itself and never reaches archived entries — use archive for those. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ReliefWeb numeric country ID. |
| iso3 | No | ISO 3166-1 alpha-3 code. |
| kind | No | full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned; archive when the call asked for a page of one curated list's archived entries, which is returned in place of the record. |
| name | No | Country name. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Requested and applied archive limits when the page size was clamped. |
| status | No | Humanitarian situation status. |
| archive | No | One page of a curated list's archived entries, returned in place of the record. |
| sections | No | Every section of the record, largest first. Pass the names back in `sections` to retrieve them. |
| urlAlias | No | Canonical ReliefWeb URL for this country page. |
| keyContent | No | Currently-active curated key content links maintained by ReliefWeb editors — the present curated set. The archived entries are reachable with archive: { list: "keyContent" }. |
| usefulLinks | No | Currently-active useful external links curated by ReliefWeb editors — the present set. The archived entries are reachable with archive: { list: "usefulLinks" }. |
| outlineNotice | No | How to re-call this tool for specific sections of the record. |
| profileOverview | No | Situation overview text from the ReliefWeb editorial team. |
| appealsResponsePlans | No | Currently-active humanitarian appeals and response plans for this country — the present set. The archived entries are reachable with archive: { list: "appealsResponsePlans" }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only and idempotent, and the description adds context they cannot carry: over-budget records come back as a section outline with per-section byte sizes, nothing is truncated, archive calls still answer regardless of record size, and mutually-exclusive selectors are rejected. That is precisely the kind of operational detail an agent needs before calling.
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 purpose, then selectors, then the budget/outline behavior — a sensible order with no padding sentences. The archive aside ('thousands of entries deep for a long-running crisis') is mildly rhetorical but justifies why archive mode exists, so it still 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 three-parameter tool with nested objects and a full output schema, the description covers everything the structured fields don't: selector exclusivity, outline-on-oversize behavior, sparse-section rejection, and non-truncation guarantees. Nothing an agent needs to invoke it correctly is missing.
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 earns above that by explaining what a section name must match (an outline's spelling), that a missing name is rejected with the names the record does carry, and that identity metadata returns alongside any slice. It doesn't restate limit/offset paging semantics, which the schema already handles.
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 ('Fetch a country profile from ReliefWeb by ISO3 code') and enumerates the contents the profile returns. The selector semantics (sections vs archive) are named up front, so an agent can separate this from reliefweb_list_countries or reliefweb_search_reports without reading the 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?
Explicitly frames 'sections' and 'archive' as two alternative selectors, 'at most one per call', and states that archive reaches the entries the profile leaves out — a real when-to-use rule. It doesn't route the agent to siblings for discovering an ISO3 code (reliefweb_list_countries) or for full-text retrieval, so removal of exclusions keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_get_disasterGet ReliefWeb DisasterARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ReliefWeb numeric disaster ID. Obtained from reliefweb_search_disasters results. | |
| archive | No | Archive mode: return a page of one curated list's ARCHIVED entries instead of the disaster record. The response carries the record identity, the selected list, and total / shown / offset, plus a next offset while more entries remain. Mutually exclusive with sections — sections slices the record, archive replaces it — and a call supplying both is rejected. A record over the response budget still answers an archive call with the page: a page is bounded by limit and carries none of the record prose, so it never outlines. | |
| sections | No | Sections of the disaster record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the record itself and never reaches archived entries — use archive for those. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ReliefWeb numeric disaster ID. |
| kind | No | full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned; archive when the call asked for a page of one curated list's archived entries, which is returned in place of the record. |
| name | No | Disaster name. |
| error | No | Present when the call failed. Absent on success. |
| glide | No | GLIDE number for cross-system correlation. |
| types | No | Disaster type names. |
| notice | No | Requested and applied archive limits when the page size was clamped. |
| status | No | Disaster status: alert, ongoing, past, or alert-archive. |
| archive | No | One page of a curated list's archived entries, returned in place of the record. |
| sections | No | Every section of the record, largest first. Pass the names back in `sections` to retrieve them. |
| urlAlias | No | Canonical ReliefWeb URL for this disaster. |
| countries | No | All countries tagged on this disaster. |
| dateEvent | No | Event date (ISO 8601), when available. |
| keyContent | No | Currently-active curated key content links from the ReliefWeb editorial team — the present curated set. The archived entries are reachable with archive: { list: "keyContent" }. |
| dateCreated | No | ReliefWeb index date (ISO 8601). |
| description | No | Full disaster description text. |
| primaryType | No | Primary disaster type. |
| usefulLinks | No | Currently-active useful external links curated by ReliefWeb editors — the present set. The archived entries are reachable with archive: { list: "usefulLinks" }. |
| outlineNotice | No | How to re-call this tool for specific sections of the record. |
| primaryCountry | No | Primary affected country. |
| profileOverview | No | Profile overview text from the ReliefWeb editorial team. |
| appealsResponsePlans | No | Currently-active appeals and response plans linked to this disaster — the present set. The archived entries are reachable with archive: { list: "appealsResponsePlans" }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/idempotent/openWorld already annotated, the description adds substantial non-obvious behavior: prose can run to tens of KB, oversized records return a section outline with byte sizes, nothing is truncated on any path, and sparse records reject unknown section names with the valid names. Archive mode's page semantics (bounded by limit, never outlines) are also disclosed.
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 purpose and the call-order hint, then behavior, then sizing caveats. Dense but each clause carries information; only "Nothing is truncated on any path" mildly repeats the outline/budget sentences.
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?
An output schema exists, so return values need not be explained, yet the description still covers the tricky paths (outline response, archive paging, identity metadata always included). Nothing an agent needs to invoke this correctly is missing.
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 baseline is 3 — the schema already documents id, sections, and the archive object in depth. The description restates the selector exclusivity and the outline-named sections convention, which is helpful framing but largely duplicative of what the schema already spells out.
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 ("Fetch a disaster record by ReliefWeb numeric ID") and enumerates the payload (description, affected countries, GLIDE number, profile overview, key content links, appeals). It also names the sibling it complements (reliefweb_search_disasters), so an agent can distinguish it from the search tools without opening a 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?
Explicitly routes the agent: "Use after reliefweb_search_disasters to retrieve full details." It also states a constraint the agent must respect (two alternative selectors, at most one per call) and which selector wins for archived entries versus record sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_get_jobGet ReliefWeb JobARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ReliefWeb numeric job ID. Obtained from reliefweb_search_jobs results. | |
| sections | No | Sections of the job record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ReliefWeb numeric job ID. |
| url | No | ReliefWeb node URL for this job listing. |
| body | No | Full vacancy description (Markdown) — duties, requirements, and conditions. |
| kind | No | full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Job title. |
| types | No | Job type names, such as Job or Consultancy. |
| status | No | Posting status: published while the vacancy is open, expired once it has closed. |
| themes | No | Humanitarian theme/sector names. |
| sources | No | Hiring organizations (short names). |
| sections | No | Every section of the record, largest first. Pass the names back in `sections` to retrieve them. |
| urlAlias | No | Canonical ReliefWeb URL for this job listing. |
| countries | No | Countries tagged on this job. |
| howToApply | No | Application instructions (Markdown) as published by the hiring organization. |
| dateChanged | No | Date this posting was last modified (ISO 8601). |
| dateClosing | No | Application closing date (ISO 8601). |
| dateCreated | No | Date this posting was indexed (ISO 8601). |
| outlineNotice | No | How to re-call this tool for specific sections of the record. |
| careerCategories | No | Career category names (humanitarian tracks). |
| experienceLevels | No | Required experience levels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, open world), and the description adds genuinely non-obvious behavior: a record exceeding the response budget returns a section outline with per-section byte sizes, the retry path is a re-call with sections, and 'nothing is truncated on either path' reassures the agent no silent data loss occurs.
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?
Five sentences, front-loaded with purpose and the sibling routing before the outline mechanics. Efficient overall, though the last three sentences restate the outline/sections behavior that the schema already documents at length, so there is some redundancy.
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?
An output schema exists, yet the description still covers the one thing an agent must anticipate operationally — the over-budget outline response and how to recover from it. With full schema coverage and clear annotations, nothing needed to invoke this correctly is missing.
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, and the description still adds workflow meaning: sections is tied to the outline response's section names and the two-pass fetch pattern, and it notes identity metadata is always returned regardless of requested sections. Minor duplication with the schema's own lengthy sections description keeps it just below 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?
States a specific verb and resource ('Fetch a job posting by ReliefWeb numeric ID') and enumerates what the payload contains: full vacancy description, application instructions, dates, organization, location and taxonomy metadata. This is clearly distinguishable from reliefweb_search_jobs, which is named as returning only summaries.
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?
Explicitly routes the agent: 'Use after reliefweb_search_jobs, which returns summaries without the description or application instructions.' It also states a usage-relevant fact that search tools would not surface — expired postings are reachable — and explains when to re-call with the sections parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_get_reportGet ReliefWeb ReportARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ReliefWeb numeric report ID. Obtained from reliefweb_search_reports results. | |
| sections | No | Sections of the report record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ReliefWeb numeric report ID. |
| body | No | Full report body text (Markdown). Present for most reports; absent for binary-only documents. |
| kind | No | full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Report title. |
| themes | No | Humanitarian theme/sector names. |
| formats | No | Content format names. |
| sources | No | Publishing organizations (short names). |
| fileUrls | No | Direct file download URLs attached to this report. |
| sections | No | Every section of the record, largest first. Pass the names back in `sections` to retrieve them. |
| urlAlias | No | Canonical ReliefWeb URL for this report. |
| countries | No | All countries tagged on this report. |
| languages | No | Language codes (ISO 639-1). |
| dateCreated | No | ReliefWeb index date (ISO 8601). |
| dateOriginal | No | Source publication date (ISO 8601). |
| outlineNotice | No | How to re-call this tool for specific sections of the record. |
| primaryCountry | No | Primary country name for this report. |
| headlineSummary | No | Short editorial summary from the headline block, when present. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing report sizes (10–100KB), the over-budget fallback (an outline naming every section with byte sizes), the recovery action (re-call with sections), and the guarantee that nothing is truncated on either path. This is exactly the operational context an agent needs to handle large responses.
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 sentences, front-loaded with the purpose before the workflow, size warning, and fallback mechanics. Every sentence carries distinct information with no repetition.
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?
With an output schema present, return structure needn't be explained, and the description covers the one thing the schema can't: how to react when the response exceeds the budget. An agent can call this correctly and recover from oversized records without further documentation.
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 baseline is 3; the description adds workflow meaning by framing 'sections' as the second leg of an outline-then-fetch pattern ('re-call with sections to pull only the ones needed'). The schema already documents sparse-record rejection and identity metadata, so the added value is real but incremental.
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 ('Fetch a single ReliefWeb report by its numeric ID') and enumerates scope: full body text, file attachments, all metadata. This clearly distinguishes it from the sibling search and list tools, which return only summaries.
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?
Explicitly places the tool in a workflow ('Use after reliefweb_search_reports to retrieve document content') and explains why the body is missing from search results (context budget). It lacks an explicit 'when not to use' exclusion, but the routing to the search sibling is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_get_trainingGet ReliefWeb TrainingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ReliefWeb numeric training ID. Obtained from reliefweb_search_training results. | |
| sections | No | Sections of the training record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | ReliefWeb numeric training ID. |
| url | No | ReliefWeb node URL for this training listing. |
| body | No | Full training description (Markdown) — content, audience, and logistics. |
| cost | No | Cost class as ReliefWeb records it, such as free or fee-based. |
| kind | No | full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Training title. |
| types | No | Training type names, such as Training/Workshop or Course. |
| cities | No | Host cities, for on-site training. |
| status | No | Listing status: published while the training is current, expired once concluded. |
| themes | No | Humanitarian theme/sector names. |
| dateEnd | No | Training end date (ISO 8601). |
| formats | No | Training format names: on-site or online. |
| sources | No | Organizing organizations (short names). |
| eventUrl | No | The organizer's own page for this training, when published. |
| sections | No | Every section of the record, largest first. Pass the names back in `sections` to retrieve them. |
| urlAlias | No | Canonical ReliefWeb URL for this training listing. |
| countries | No | Countries tagged on this training. |
| dateStart | No | Training start date (ISO 8601). |
| languages | No | Language codes of the listing (ISO 639-1). |
| dateCreated | No | Date this listing was indexed (ISO 8601). |
| howToRegister | No | Registration instructions (Markdown) as published by the organizer. |
| outlineNotice | No | How to re-call this tool for specific sections of the record. |
| feeInformation | No | Fee detail as published by the organizer — amounts, inclusions, and conditions. |
| careerCategories | No | Career category names (humanitarian tracks). |
| dateRegistration | No | Registration deadline (ISO 8601). |
| trainingLanguages | No | Language codes the training is delivered in (ISO 639-1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, and the description adds non-obvious behavior annotations don't: concluded listings are reachable, over-budget records come back as a section outline with byte sizes, and nothing is truncated on either path. The outline/sections mechanics are described somewhat redundantly with the schema's sections description, which costs a bit of uniqueness against a very strong baseline.
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 sentences, front-loaded with what is fetched, then when to use it, then the budget/outline edge case. Every sentence carries distinct information; no restating of the title or name.
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?
Output schema exists, so return shapes needn't be explained, and the description covers the one thing the schema can't: the two-path fetch behavior (full record vs. section outline) and the no-truncation guarantee. For a two-parameter read tool with rich schema and annotations, nothing an agent needs is missing.
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 baseline is 3; the description earns a bump by framing the sections parameter operationally — 're-call with sections to pull only the ones needed' — which explains intent rather than just shape. It stops short of adding format detail beyond the schema, which already specifies names come from outline responses.
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 (fetch) and resource (a training listing by ReliefWeb numeric ID) and enumerates the payload it returns (description, registration instructions, event link, cost, dates, languages, source). It explicitly distinguishes itself from reliefweb_search_training, so an agent can route 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 sequencing rule — 'Use after reliefweb_search_training, which returns summaries without the description, registration instructions, or cost detail' — naming both the alternative and the exact reason to escalate to this tool. Also states the re-call-with-sections path, so the two-call pattern is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_list_countriesList ReliefWeb CountriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (1–1000, default 100). Larger integers are clamped to 1000 with a notice when clamping is enabled; otherwise they are rejected. Each call counts against the 1,000-calls/day quota. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results. | |
| crisis_only | No | When true, filters to countries with an active humanitarian situation (status ongoing). Default false returns all countries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Countries tracked by ReliefWeb. |
| notice | No | Discloses requested and applied limits when clamped. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden. |
| totalCount | No | Total countries matching the filter before pagination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds useful behavioral context by stating that results include ISO3 codes and status, and by explaining the crisis_only filter's effect.
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 short sentences, front-loaded with the core purpose and filter behavior. Every sentence contributes useful information without repetition.
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?
Given the simple list operation, complete parameter descriptions, annotations covering safety, and an output schema, the description provides everything an agent needs to select and invoke the tool correctly.
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 limit, offset, and crisis_only are already fully documented in the schema. The description reinforces crisis_only's meaning but does not add syntax or behavior beyond what the schema provides for limit and offset.
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 uses a specific verb and resource: "List all countries and territories tracked by ReliefWeb." It also distinguishes the tool from its sibling reliefweb_get_country by explaining that the list returns ISO3 codes while get_country fetches a full profile.
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?
It clearly explains the optional crisis_only filter and routes the agent to reliefweb_get_country for profile details. It does not state explicit exclusions or when not to use the list tool, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_list_sourcesList ReliefWeb SourcesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Full-text search query. Matches against organization name and short name. | |
| type | No | Organization type. One of: Non-governmental Organization, International Organization, Academic and Research Institution, Other, Government, Media, Red Cross/Red Crescent Movement. Filters on type.name. | |
| limit | No | 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. Each call counts against the 1,000-calls/day quota. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Source organizations contributing content to ReliefWeb. |
| notice | No | Discloses requested and applied limits when clamped. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden. |
| totalCount | No | Total sources matching the query before pagination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds useful behavioral context beyond that: what fields come back (short names, types, URLs) and how the output is consumed downstream. Pagination and the daily quota live only in the schema, not the description.
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 filters lead, and the cross-tool handoff follows. No filler or restated name/title.
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?
With an output schema present and full schema coverage, the description need only supply orientation and downstream linkage, which it does well. The one gap is that pagination behavior and the call quota, relevant for a paginated list tool, are left entirely to the schema.
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 text, type enum, limit and offset are fully documented structurally. The description only echoes the text/type filters at a high level and adds no syntax or matching detail beyond the schema. 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 specific verb and resource ('Browse source organizations that contribute content to ReliefWeb') and names the exact filter dimensions. Among the siblings only this tool enumerates sources, and the description makes that scope unambiguous.
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 clear usage context: browse sources, optionally filter by name text or org type, then feed the resulting shortname into reliefweb_search_reports/jobs/training. It names the downstream alternatives but does not state when NOT to use this tool (e.g., when the source shortname is already known).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_search_disastersSearch ReliefWeb DisastersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. Use date.created:desc for newest first (default), date.created:asc for oldest, score:desc for relevance. | |
| text | No | Full-text search query. Matches against disaster name and description. | |
| glide | No | GLIDE number (global disaster identifier, e.g., EQ-2023-000053-TUR). Use for cross-system disaster correlation. | |
| limit | No | 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. Each call counts against the 1,000-calls/day quota. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results. | |
| status | No | Disaster status filter. One of: alert (newly declared), ongoing, past (resolved), alert-archive. Separate multiple values with commas; case, spacing, and punctuation are ignored, and any other value is rejected with the valid list. alert-archive is only reachable with include_archived=true — asking for it without that returns nothing. | |
| country | No | ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to disasters tagged with this country. | |
| date_to | No | Latest disaster creation 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. | |
| date_from | No | Earliest disaster creation date. Filters on date.created. 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_type | No | Disaster type name (e.g., Earthquake, Flood, Drought, Cyclone). Filters on type.name. | |
| include_archived | No | Include alert-archive disasters in results, alongside alert, ongoing, and past. Uses preset=analysis. Off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Matching disasters. |
| notice | No | Discloses requested and applied limits when clamped. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden. |
| totalCount | No | Total disasters matching the query before pagination. |
| appliedFilters | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, so the safety profile is covered; the description adds the non-obvious default preset scope (alert + ongoing + past) and the fact that alert-archive is unreachable without include_archived. It does not mention the daily quota or pagination behaviour, but those live in the schema.
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: capability first, default behaviour second, then the archived escape hatch and output wiring. No redundant restatement of the title and no filler.
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?
With 11 optional parameters, full schema coverage, and an output schema present, the description supplies exactly the missing connective tissue: default scope, the archive opt-in, and where the returned IDs are consumed. Nothing needed to call it correctly is absent.
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 every parameter is already documented in detail (status enum values, ISO 8601 handling, limit clamping, quota). The description's facet list only restates what the schema carries; the one piece of added meaning is the downstream reuse of returned IDs, which is about output rather than request parameters.
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?
Specific verb (Search) plus resource (disasters) plus the facets it filters on (type, country, status, date range, GLIDE). It also distinguishes itself from reliefweb_get_disaster by framing output as IDs to feed into that tool, so an agent can pick between them without opening schemas.
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?
Explicitly states that include_archived=true is the route for historical research and that returned IDs slot into reliefweb_get_disaster and reliefweb_search_reports. That names the primary alternatives and the conditions selecting them, though it does not say when to avoid this tool in favour of a narrower lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_search_jobsSearch ReliefWeb JobsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. Use date.created:desc for newest postings first (default), date.closing:asc to surface roles closing soonest, or score:desc for relevance. | |
| text | No | Full-text search query. Matches against job title, body, and key metadata fields. | |
| limit | No | 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. Each call counts against the 1,000-calls/day quota. | |
| theme | No | Sector or cross-cutting theme (e.g., Health, Food and Nutrition, Protection). Filters on theme.name. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results. | |
| source | No | Organization short name (e.g., UNHCR, OCHA, WFP). Filters on source.shortname. | |
| country | No | ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to jobs tagged with this country. | |
| experience | No | Experience level (e.g., 0-2 years, 3-4 years, 5-9 years). Filters on experience.name. | |
| career_category | No | ReliefWeb career-category name (e.g., Program/Project Management, Information and Communications Technology, Logistics/Procurement). Filters on career_categories.name. | |
| include_archived | No | Search expired postings alongside the open ones. Uses preset=analysis. Off by default — the open set is a small fraction of the archive, so turn this on for labour-market history rather than for a hiring snapshot. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Matching job listings. |
| notice | No | Discloses requested and applied limits when clamped. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden. |
| totalCount | No | Total jobs matching the query before pagination. |
| appliedFilters | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world reads, so the description's job is to add scope semantics — and it does: expired postings are excluded by default, and the archive is described as "far larger" than the open set, a real behavioral tradeoff. It does not mention rate limits in the prose (that lives only in the limit param), keeping it just 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?
Four sentences, front-loaded with purpose, then the default scope, then the archive override, then the text-search hint. No filler and no repetition of annotation content.
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 10-parameter search tool with an output schema and full schema coverage, the description supplies exactly the missing piece — what the default result set actually contains and when to widen it. Return format is correctly left to the output schema.
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 baseline is 3 — every parameter including sort, country and experience is already documented in the schema. The description restates the filter set and adds a light heuristic for `text`, but contributes no syntax or format detail beyond the structured fields.
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 ("Search humanitarian job listings on ReliefWeb") and enumerates the filter dimensions, which immediately separates it from reliefweb_get_job (single-record fetch). An agent can identify the correct tool without opening the 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?
Clearly explains the key branching decision — default open-postings scope vs. include_archived=true for labour-market history — and points text search at role titles/descriptions. It stops short of naming sibling tools (e.g., reliefweb_get_job for a known posting ID), so it is strong but not fully alternative-aware.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reliefweb_search_reportsSearch ReliefWeb ReportsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. Use date.original:desc for newest first (default), date.original:asc for oldest first, score:desc for relevance. | |
| text | No | Full-text search query. Matches against title, body, and key metadata fields. Use plain natural language or keywords. | |
| limit | No | 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. | |
| theme | No | 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. | |
| filter | No | Raw 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"}]}. | |
| format | No | 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. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through large result sets. | |
| source | No | Organization short name (e.g., UNHCR, OCHA, WFP). Filters on source.shortname. | |
| country | No | ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to content tagged with this country. | |
| date_to | No | 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. | |
| language | No | ISO 639-1 language code (e.g., en, fr, es, ar). Filters on language.code. | |
| date_from | No | 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. | |
| disaster_id | No | ReliefWeb numeric disaster ID. Filters to reports linked to a specific disaster. Get the ID from reliefweb_search_disasters. | |
| include_archived | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Matching reports (summaries only — use reliefweb_get_report for full body). |
| notice | No | 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. |
| totalCount | No | Total reports matching the query before pagination. |
| appliedFilters | No | 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. |
TDQS
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.
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.
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.
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.
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.
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.
reliefweb_search_trainingSearch ReliefWeb TrainingARead-onlyIdempotentInspect
Search humanitarian training and learning opportunities on ReliefWeb by country, format, date, source, career category, cost, listing language, and delivery 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cost | No | Training cost: free or fee-based. Case, spacing, and punctuation are ignored; blank is omitted. | |
| sort | No | Sort order. Use date.start:asc for soonest-starting training first (default), date.start:desc for latest-starting, date.created:desc for most recently posted, or score:desc for relevance. | |
| text | No | Full-text search query. Matches against training title and description. | |
| limit | No | 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. Each call counts against the 1,000-calls/day quota. | |
| format | No | Training format. Valid values: on-site, online. Filters on format.name. | |
| offset | No | Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results. | |
| source | No | Organization short name. Filters on source.shortname. | |
| country | No | ISO 3166-1 alpha-3 country code (e.g., KEN, ETH, COD). Filters to training tagged with this country. | |
| language | No | Listing language code (ISO 639-1, e.g., en, fr, es). Filters on language.code; use training_language for the course delivery language. | |
| date_start_to | No | Training start date upper bound. Filters on date.start — pair with date_start_from for a window. A bare calendar date resolves to end of that day in UTC, and a datetime carrying any offset is resolved to UTC. Supplying this alone searches everything up to it, with no lower bound injected. | |
| career_category | No | ReliefWeb career-category name (e.g., Program/Project Management, Information and Communications Technology, Logistics/Procurement). Filters on career_categories.name. | |
| date_start_from | No | Training start date lower bound. Filters on date.start — use to find training starting after a given date. A bare calendar date resolves to start of that day in UTC, and a datetime carrying any offset is resolved to UTC. Omit this and date_start_to together to default the search to training starting from now, unless include_archived is set, which leaves the range open. | |
| include_archived | No | Search concluded listings alongside the current ones. Uses preset=analysis. Off by default. Setting this also drops the start-from-now default bound, so an otherwise unbounded search reaches back through the whole record; pair it with date_start_from and date_start_to to study a specific period. | |
| training_language | No | Course delivery language code (ISO 639-1, e.g., en, fr, es). Filters on training_language.code independently of the listing language. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| items | No | Matching training opportunities. |
| notice | No | Discloses requested and applied limits when clamped. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden. |
| totalCount | No | Total training listings matching the query before pagination. |
| appliedFilters | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, and the description adds substantial non-obvious behavior: the injected 'start-from-now' default bound, default sort order, and the fact that include_archived drops that bound and reaches the whole record. It also flags that archived listings vastly outnumber current ones. This is exactly the kind of context annotations cannot convey.
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?
Dense and front-loaded with the facet list and date-field caveat first. There is mild redundancy in re-explaining the start-from-now default (both in the description body and in date_start_from), but every sentence carries useful 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?
For a 14-parameter, zero-required search tool with an output schema present, the description covers the critical edge cases an agent needs: default date scoping, sort default, and the archived-search caveat. Return values need not be explained since an output schema exists.
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, but the description adds meaning beyond the schema by distinguishing training date fields (date.start/date.end) from report date fields and explaining the default sort behavior. The parameter-level detail is otherwise largely mirrored in the schema.
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 ('Search humanitarian training and learning opportunities on ReliefWeb') and enumerates the filterable facets. It is clearly distinguishable from siblings like reliefweb_search_reports and reliefweb_search_jobs, and the get_training sibling covers single-listing retrieval.
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 explicit when-to guidance: use date_start_from/date_start_to for a window, include_archived=true to include concluded listings, and explains that omitting both date bounds scopes to training starting from now. It lacks explicit naming of sibling alternatives (e.g., use get_training for a specific listing), which keeps it below a 5.
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.
11 tool updates
- Changed
reliefweb_get_country3 fields changed- changed
Input schema / properties / archive / properties / limit / descriptionPrevious value: -"Maximum archived entries in one page (1-100)."New value: +"Maximum archived entries in one page (1-100). Larger integers are clamped with a notice when clamping is enabled; otherwise they are rejected." - changed
Input schema / properties / archive / properties / limit / maximumPrevious value: -100New value: +9007199254740991 - added
Output schema / properties / noticeAdded value: +{ + "description": "Requested and applied archive limits when the page size was clamped.", + "type": "string" +}
- Changed
reliefweb_get_disaster3 fields changed- changed
Input schema / properties / archive / properties / limit / descriptionPrevious value: -"Maximum archived entries in one page (1-100)."New value: +"Maximum archived entries in one page (1-100). Larger integers are clamped with a notice when clamping is enabled; otherwise they are rejected." - changed
Input schema / properties / archive / properties / limit / maximumPrevious value: -100New value: +9007199254740991 - added
Output schema / properties / noticeAdded value: +{ + "description": "Requested and applied archive limits when the page size was clamped.", + "type": "string" +}
- Changed
reliefweb_get_job2 fields changed- changed
Output schema / properties / body / descriptionPrevious value: -"Full vacancy description (HTML) — duties, requirements, and conditions."New value: +"Full vacancy description (Markdown) — duties, requirements, and conditions." - changed
Output schema / properties / howToApply / descriptionPrevious value: -"Application instructions (HTML) as published by the hiring organization."New value: +"Application instructions (Markdown) as published by the hiring organization."
- Changed
reliefweb_get_report1 field changed- changed
Output schema / properties / body / descriptionPrevious value: -"Full report body text (HTML). Present for most reports; absent for binary-only documents."New value: +"Full report body text (Markdown). Present for most reports; absent for binary-only documents."
- Changed
reliefweb_get_training2 fields changed- changed
Output schema / properties / body / descriptionPrevious value: -"Full training description (HTML) — content, audience, and logistics."New value: +"Full training description (Markdown) — content, audience, and logistics." - changed
Output schema / properties / howToRegister / descriptionPrevious value: -"Registration instructions (HTML) as published by the organizer."New value: +"Registration instructions (Markdown) as published by the organizer."
- Changed
reliefweb_list_countries3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of results to return (1–1000, default 100). Each call counts against the 1,000-calls/day quota."New value: +"Number of results to return (1–1000, default 100). Larger integers are clamped to 1000 with a notice when clamping is enabled; otherwise they are rejected. Each call counts against the 1,000-calls/day quota." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - changed
Output schema / properties / notice / descriptionPrevious 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. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden."
- Changed
reliefweb_list_sources3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of results to return (1–1000, default 10). 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. Each call counts against the 1,000-calls/day quota." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - changed
Output schema / properties / notice / descriptionPrevious 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. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden."
- Changed
reliefweb_search_disasters5 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Number of results to return (1–1000, default 10). 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. Each call counts against the 1,000-calls/day quota." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `unknown_status`: A status token does not name a ReliefWeb disaster status. `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field 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_status`: A status token does not name a ReliefWeb disaster status. `invalid_query`: ReliefWeb rejected the query — possible causes include malformed text, an unrecognized sort field, 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "unknown_status", - "invalid_query", - "upstream_error" -]New value: +[ + "invalid_date", + "unknown_status", + "invalid_query", + "upstream_error" +] - changed
Output schema / properties / notice / descriptionPrevious 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. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden."
- Changed
reliefweb_search_jobs5 fields changed- changed
Input schema / properties / career_category / descriptionPrevious value: -"Humanitarian career track (e.g., Programme and Project Management, Information and Communications Technology, Logistics and Telecommunications). Filters on career_categories.name."New value: +"ReliefWeb career-category name (e.g., Program/Project Management, Information and Communications Technology, Logistics/Procurement). Filters on career_categories.name." - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of results to return (1–1000, default 10). 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. Each call counts against the 1,000-calls/day quota." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `invalid_query`: ReliefWeb rejected the query — typically an unrecognized sort field. `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_query`: ReliefWeb rejected the query — possible causes include malformed text or an unrecognized sort field. `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." - changed
Output schema / properties / notice / descriptionPrevious 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. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden."
- Changed
reliefweb_search_reports5 fields changed- changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "unknown_format", - "invalid_query", - "upstream_error" -]New value: +[ + "invalid_date", + "unknown_format", + "invalid_query", + "upstream_error" +] - changed
Output schema / properties / notice / descriptionPrevious 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."
- Changed
reliefweb_search_training15 fields changed- changed
Input schema / properties / career_category / descriptionPrevious value: -"Humanitarian career track (e.g., Programme and Project Management, Information and Communications Technology). Filters on career_categories.name."New value: +"ReliefWeb career-category name (e.g., Program/Project Management, Information and Communications Technology, Logistics/Procurement). Filters on career_categories.name." - added
Input schema / properties / costAdded value: +{ + "description": "Training cost: free or fee-based. Case, spacing, and punctuation are ignored; blank is omitted.", + "type": "string" +} - changed
Input schema / properties / language / descriptionPrevious value: -"ISO 639-1 language code (e.g., en, fr, es). Filters on language.code."New value: +"Listing language code (ISO 639-1, e.g., en, fr, es). Filters on language.code; use training_language for the course delivery language." - changed
Input schema / properties / limit / descriptionPrevious value: -"Number of results to return (1–1000, default 10). 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. Each call counts against the 1,000-calls/day quota." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +9007199254740991 - added
Input schema / properties / training_languageAdded value: +{ + "description": "Course delivery language code (ISO 639-1, e.g., en, fr, es). Filters on training_language.code independently of the listing language.", + "type": "string" +} - added
Output schema / properties / appliedFilters / properties / costAdded value: +{ + "description": "Canonical training cost filter applied.", + "type": "string" +} - changed
Output schema / properties / appliedFilters / properties / language / descriptionPrevious value: -"Language code filter applied."New value: +"Listing language code filter applied." - added
Output schema / properties / appliedFilters / properties / trainingLanguageAdded value: +{ + "description": "Course delivery language code filter applied.", + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field 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: `unknown_cost`: The cost value does not name a ReliefWeb training cost category. `invalid_date`: A date bound contains impossible calendar or time components. `invalid_query`: ReliefWeb rejected the query — possible causes include malformed text, an unrecognized sort field, 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." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "invalid_query", - "upstream_error" -]New value: +[ + "unknown_cost", + "invalid_date", + "invalid_query", + "upstream_error" +] - added
Output schema / properties / items / items / properties / costAdded value: +{ + "description": "Training cost category when supplied by the listing.", + "type": "string" +} - changed
Output schema / properties / items / items / properties / languages / descriptionPrevious value: -"Language codes (ISO 639-1)."New value: +"Listing language codes (ISO 639-1)." - added
Output schema / properties / items / items / properties / trainingLanguagesAdded value: +{ + "description": "Course delivery language codes (ISO 639-1).", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / notice / descriptionPrevious 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. For empty pages, names the match count and last reachable offset when records matched; otherwise echoes filters and suggests how to broaden."
5 tool updates
- Changed
reliefweb_get_country1 field changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Sections of the country record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the profile itself and never reaches archived entries — use archive for those."New value: +"Sections of the country record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the profile itself and never reaches archived entries — use archive for those."
- Changed
reliefweb_get_disaster1 field changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Sections of the disaster record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the record itself and never reaches archived entries — use archive for those."New value: +"Sections of the disaster record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the record itself and never reaches archived entries — use archive for those."
- Changed
reliefweb_get_job1 field changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Sections of the job record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."New value: +"Sections of the job record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."
- Changed
reliefweb_get_report1 field changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Sections of the report record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."New value: +"Sections of the report record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."
- Changed
reliefweb_get_training1 field changed- changed
Input schema / properties / sections / descriptionPrevious value: -"Sections of the training record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."New value: +"Sections of the training record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Records are sparse, so a name this record does not carry is rejected with the names it does. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated."
11 tool updates
- Changed
reliefweb_get_country6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "kind" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `not_found`: No country profile found for the given ISO3 code. `selector_conflict`: The call supplied both sections and archive, which select different things. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "selector_conflict" + ], + "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" +} - removed
Output schema / requiredRemoved value: -[ - "kind" -]
- Changed
reliefweb_get_disaster6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "kind" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `not_found`: No disaster found with the given ID. `selector_conflict`: The call supplied both sections and archive, which select different things. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found", + "selector_conflict" + ], + "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" +} - removed
Output schema / requiredRemoved value: -[ - "kind" -]
- Changed
reliefweb_get_job6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "kind" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `not_found`: No job posting found with the given ID. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found" + ], + "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" +} - removed
Output schema / requiredRemoved value: -[ - "kind" -]
- Changed
reliefweb_get_report6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "kind" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `not_found`: No report found with the given ID. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found" + ], + "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" +} - removed
Output schema / requiredRemoved value: -[ - "kind" -]
- Changed
reliefweb_get_training6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "kind" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `not_found`: No training listing found with the given ID. Other values are possible when a failure originates below the handler.", + "examples": [ + "not_found" + ], + "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" +} - removed
Output schema / requiredRemoved value: -[ - "kind" -]
- Changed
reliefweb_list_countries6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `invalid_query`: ReliefWeb rejected the request as malformed rather than failing to serve it. `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": [ + "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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "totalCount" -]
- Changed
reliefweb_list_sources6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `invalid_query`: ReliefWeb rejected the request as malformed rather than failing to serve it. `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": [ + "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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "totalCount" -]
- Changed
reliefweb_search_disasters6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "appliedFilters", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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_status`: A status token does not name a ReliefWeb disaster status. `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field 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_status", + "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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "appliedFilters", - "totalCount" -]
- Changed
reliefweb_search_jobs6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "appliedFilters", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `invalid_query`: ReliefWeb rejected the query — typically an unrecognized sort field. `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": [ + "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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "appliedFilters", - "totalCount" -]
- Changed
reliefweb_search_reports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "appliedFilters", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "appliedFilters", - "totalCount" -]
- Changed
reliefweb_search_training6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "items", + "appliedFilters", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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: `invalid_query`: ReliefWeb rejected the query — an unrecognized sort field 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": [ + "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" +} - removed
Output schema / requiredRemoved value: -[ - "items", - "appliedFilters", - "totalCount" -]
5 tool updates
- Changed
reliefweb_get_country10 fields changed- added
Input schema / properties / archiveAdded value: +{ + "description": "Archive mode: return a page of one curated list's ARCHIVED entries instead of the country record. The response carries the record identity, the selected list, and total / shown / offset, plus a next offset while more entries remain. Mutually exclusive with sections — sections slices the record, archive replaces it — and a call supplying both is rejected. A record over the response budget still answers an archive call with the page: a page is bounded by limit and carries none of the record prose, so it never outlines.", + "properties": { + "limit": { + "default": 25, + "description": "Maximum archived entries in one page (1-100).", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "list": { + "description": "Which curated list to page. The archived entries of that list are the ones the profile itself leaves out.", + "enum": [ + "keyContent", + "appealsResponsePlans", + "usefulLinks" + ], + "type": "string" + }, + "offset": { + "default": 0, + "description": "Zero-based index of the first archived entry to return. Send back the nextOffset from the previous page to continue.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "list" + ], + "type": "object" +} - added
Input schema / properties / sectionsAdded value: +{ + "description": "Sections of the country record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the profile itself and never reaches archived entries — use archive for those.", + "items": { + "description": "A section name exactly as the outline response spelled it.", + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / appealsResponsePlans / descriptionPrevious value: -"Currently-active humanitarian appeals and response plans for this country — the present set, not the full historical archive."New value: +"Currently-active humanitarian appeals and response plans for this country — the present set. The archived entries are reachable with archive: { list: \"appealsResponsePlans\" }." - added
Output schema / properties / archiveAdded value: +{ + "additionalProperties": false, + "description": "One page of a curated list's archived entries, returned in place of the record.", + "properties": { + "entries": { + "description": "The archived entries in this page, in ReliefWeb's own archive order.", + "items": { + "additionalProperties": false, + "description": "One archived entry.", + "properties": { + "date": { + "description": "Publication date, carried by appeals and response plans.", + "type": "string" + }, + "title": { + "description": "Entry title.", + "type": "string" + }, + "url": { + "description": "Entry URL.", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "list": { + "description": "The curated list this page was read from.", + "enum": [ + "keyContent", + "appealsResponsePlans", + "usefulLinks" + ], + "type": "string" + }, + "nextOffset": { + "description": "Offset to send back to read the next page. Absent when this page reaches the end of the archive.", + "type": "number" + }, + "offset": { + "description": "Zero-based index of the first entry in this page.", + "type": "number" + }, + "shown": { + "description": "Number of entries in this page.", + "type": "number" + }, + "total": { + "description": "Total archived entries in that list for this record.", + "type": "number" + } + }, + "required": [ + "list", + "total", + "shown", + "offset", + "entries" + ], + "type": "object" +} - changed
Output schema / properties / keyContent / descriptionPrevious value: -"Currently-active curated key content links maintained by ReliefWeb editors — the present curated set, not the full historical archive."New value: +"Currently-active curated key content links maintained by ReliefWeb editors — the present curated set. The archived entries are reachable with archive: { list: \"keyContent\" }." - added
Output schema / properties / kindAdded value: +{ + "description": "full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned; archive when the call asked for a page of one curated list's archived entries, which is returned in place of the record.", + "enum": [ + "full", + "outline", + "archive" + ], + "type": "string" +} - added
Output schema / properties / outlineNoticeAdded value: +{ + "description": "How to re-call this tool for specific sections of the record.", + "type": "string" +} - added
Output schema / properties / sectionsAdded value: +{ + "description": "Every section of the record, largest first. Pass the names back in `sections` to retrieve them.", + "items": { + "additionalProperties": false, + "description": "One retrievable section of the record: its name and its serialized size.", + "properties": { + "bytes": { + "description": "Serialized byte size of the section", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "name": { + "description": "Section identifier — pass in `sections` to retrieve it", + "type": "string" + } + }, + "required": [ + "name", + "bytes" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / usefulLinks / descriptionPrevious value: -"Currently-active useful external links curated by ReliefWeb editors — the present set, not the full historical archive."New value: +"Currently-active useful external links curated by ReliefWeb editors — the present set. The archived entries are reachable with archive: { list: \"usefulLinks\" }." - changed
Output schema / requiredPrevious value: -[ - "id", - "name" -]New value: +[ + "kind" +]
- Changed
reliefweb_get_disaster10 fields changed- added
Input schema / properties / archiveAdded value: +{ + "description": "Archive mode: return a page of one curated list's ARCHIVED entries instead of the disaster record. The response carries the record identity, the selected list, and total / shown / offset, plus a next offset while more entries remain. Mutually exclusive with sections — sections slices the record, archive replaces it — and a call supplying both is rejected. A record over the response budget still answers an archive call with the page: a page is bounded by limit and carries none of the record prose, so it never outlines.", + "properties": { + "limit": { + "default": 25, + "description": "Maximum archived entries in one page (1-100).", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "list": { + "description": "Which curated list to page. The archived entries of that list are the ones the profile itself leaves out.", + "enum": [ + "keyContent", + "appealsResponsePlans", + "usefulLinks" + ], + "type": "string" + }, + "offset": { + "default": 0, + "description": "Zero-based index of the first archived entry to return. Send back the nextOffset from the previous page to continue.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "list" + ], + "type": "object" +} - added
Input schema / properties / sectionsAdded value: +{ + "description": "Sections of the disaster record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated. This names parts of the record itself and never reaches archived entries — use archive for those.", + "items": { + "description": "A section name exactly as the outline response spelled it.", + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / appealsResponsePlans / descriptionPrevious value: -"Currently-active appeals and response plans linked to this disaster — the present set, not the full historical archive."New value: +"Currently-active appeals and response plans linked to this disaster — the present set. The archived entries are reachable with archive: { list: \"appealsResponsePlans\" }." - added
Output schema / properties / archiveAdded value: +{ + "additionalProperties": false, + "description": "One page of a curated list's archived entries, returned in place of the record.", + "properties": { + "entries": { + "description": "The archived entries in this page, in ReliefWeb's own archive order.", + "items": { + "additionalProperties": false, + "description": "One archived entry.", + "properties": { + "date": { + "description": "Publication date, carried by appeals and response plans.", + "type": "string" + }, + "title": { + "description": "Entry title.", + "type": "string" + }, + "url": { + "description": "Entry URL.", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "list": { + "description": "The curated list this page was read from.", + "enum": [ + "keyContent", + "appealsResponsePlans", + "usefulLinks" + ], + "type": "string" + }, + "nextOffset": { + "description": "Offset to send back to read the next page. Absent when this page reaches the end of the archive.", + "type": "number" + }, + "offset": { + "description": "Zero-based index of the first entry in this page.", + "type": "number" + }, + "shown": { + "description": "Number of entries in this page.", + "type": "number" + }, + "total": { + "description": "Total archived entries in that list for this record.", + "type": "number" + } + }, + "required": [ + "list", + "total", + "shown", + "offset", + "entries" + ], + "type": "object" +} - changed
Output schema / properties / keyContent / descriptionPrevious value: -"Currently-active curated key content links from the ReliefWeb editorial team — the present curated set, not the full historical archive."New value: +"Currently-active curated key content links from the ReliefWeb editorial team — the present curated set. The archived entries are reachable with archive: { list: \"keyContent\" }." - added
Output schema / properties / kindAdded value: +{ + "description": "full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned; archive when the call asked for a page of one curated list's archived entries, which is returned in place of the record.", + "enum": [ + "full", + "outline", + "archive" + ], + "type": "string" +} - added
Output schema / properties / outlineNoticeAdded value: +{ + "description": "How to re-call this tool for specific sections of the record.", + "type": "string" +} - added
Output schema / properties / sectionsAdded value: +{ + "description": "Every section of the record, largest first. Pass the names back in `sections` to retrieve them.", + "items": { + "additionalProperties": false, + "description": "One retrievable section of the record: its name and its serialized size.", + "properties": { + "bytes": { + "description": "Serialized byte size of the section", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "name": { + "description": "Section identifier — pass in `sections` to retrieve it", + "type": "string" + } + }, + "required": [ + "name", + "bytes" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / usefulLinks / descriptionPrevious value: -"Currently-active useful external links curated by ReliefWeb editors — the present set, not the full historical archive."New value: +"Currently-active useful external links curated by ReliefWeb editors — the present set. The archived entries are reachable with archive: { list: \"usefulLinks\" }." - changed
Output schema / requiredPrevious value: -[ - "id", - "name" -]New value: +[ + "kind" +]
- Added
reliefweb_get_job - Changed
reliefweb_get_report5 fields changed- added
Input schema / properties / sectionsAdded value: +{ + "description": "Sections of the report record to return, named by the sections[].name values an outline response lists. Omit for the whole record, or for a section outline when the record is over the response budget. Identity metadata — the record's ID, its name, and its canonical URL — comes back alongside whatever is requested. The call is self-contained — the record is re-fetched and sliced, so no prior call has to be repeated.", + "items": { + "description": "A section name exactly as the outline response spelled it.", + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / kindAdded value: +{ + "description": "full when the record — or the sections asked for — is returned in whole; outline when the record exceeded the response budget and only its section index is returned.", + "enum": [ + "full", + "outline" + ], + "type": "string" +} - added
Output schema / properties / outlineNoticeAdded value: +{ + "description": "How to re-call this tool for specific sections of the record.", + "type": "string" +} - added
Output schema / properties / sectionsAdded value: +{ + "description": "Every section of the record, largest first. Pass the names back in `sections` to retrieve them.", + "items": { + "additionalProperties": false, + "description": "One retrievable section of the record: its name and its serialized size.", + "properties": { + "bytes": { + "description": "Serialized byte size of the section", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "name": { + "description": "Section identifier — pass in `sections` to retrieve it", + "type": "string" + } + }, + "required": [ + "name", + "bytes" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "id", - "title" -]New value: +[ + "kind" +]
- Added
reliefweb_get_training
5 tool updates
- Changed
reliefweb_get_disaster1 field changed- changed
Output schema / properties / status / descriptionPrevious value: -"Disaster status (alert, current, past, archive)."New value: +"Disaster status: alert, ongoing, past, or alert-archive."
- Changed
reliefweb_search_disasters4 fields changed- changed
Input schema / properties / include_archived / descriptionPrevious value: -"Include alert-archive and archive disasters in results. Uses preset=analysis. Off by default."New value: +"Include alert-archive disasters in results, alongside alert, ongoing, and past. Uses preset=analysis. Off by default." - changed
Input schema / properties / status / descriptionPrevious value: -"Disaster status filter. Values: alert (newly declared), current (ongoing), past (resolved), alert-archive, archive. Separate multiple values with commas. Default preset includes alert, current, past."New value: +"Disaster status filter. One of: alert (newly declared), ongoing, past (resolved), alert-archive. Separate multiple values with commas; case, spacing, and punctuation are ignored, and any other value is rejected with the valid list. alert-archive is only reachable with include_archived=true — asking for it without that returns nothing." - changed
Output schema / properties / appliedFilters / properties / status / descriptionPrevious value: -"Status filter applied (comma-joined when multiple)."New value: +"Status filter applied, in canonical spelling (comma-joined when multiple)." - changed
Output schema / properties / items / items / properties / status / descriptionPrevious value: -"Disaster status (alert, current, past, archive)."New value: +"Disaster status: alert, ongoing, past, or alert-archive."
- Changed
reliefweb_search_jobs3 fields changed- added
Input schema / properties / include_archivedAdded value: +{ + "description": "Search expired postings alongside the open ones. Uses preset=analysis. Off by default — the open set is a small fraction of the archive, so turn this on for labour-market history rather than for a hiring snapshot.", + "type": "boolean" +} - added
Output schema / properties / appliedFilters / properties / presetAdded value: +{ + "description": "ReliefWeb preset the query used: latest (open postings only, default) or analysis when include_archived.", + "type": "string" +} - changed
Output schema / properties / appliedFilters / requiredPrevious value: -[ - "sort", - "limit", - "offset" -]New value: +[ + "sort", + "preset", + "limit", + "offset" +]
- Changed
reliefweb_search_reports5 fields changed- changed
Input schema / properties / format / descriptionPrevious 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." - changed
Input schema / properties / include_archived / descriptionPrevious 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." - changed
Input schema / properties / theme / descriptionPrevious 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." - changed
Output schema / properties / appliedFilters / properties / format / descriptionPrevious value: -"Format name filter applied."New value: +"Format name filter applied, in its canonical ReliefWeb spelling." - changed
Output schema / properties / appliedFilters / properties / preset / descriptionPrevious 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."
- Changed
reliefweb_search_training5 fields changed- changed
Input schema / properties / date_start_from / descriptionPrevious value: -"Training start date lower bound. Filters on date.start — use to find training starting after a given date. A bare calendar date resolves to start of that day in UTC, and a datetime carrying any offset is resolved to UTC. Omit this and date_start_to together to default the search to training starting from now."New value: +"Training start date lower bound. Filters on date.start — use to find training starting after a given date. A bare calendar date resolves to start of that day in UTC, and a datetime carrying any offset is resolved to UTC. Omit this and date_start_to together to default the search to training starting from now, unless include_archived is set, which leaves the range open." - added
Input schema / properties / include_archivedAdded value: +{ + "description": "Search concluded listings alongside the current ones. Uses preset=analysis. Off by default. Setting this also drops the start-from-now default bound, so an otherwise unbounded search reaches back through the whole record; pair it with date_start_from and date_start_to to study a specific period.", + "type": "boolean" +} - changed
Output schema / properties / appliedFilters / properties / dateStartFrom / descriptionPrevious value: -"Training start date lower bound applied — the caller-supplied value, or the current timestamp when neither date bound was given."New value: +"Training start date lower bound applied — the caller-supplied value, or the current timestamp when neither date bound was given and include_archived was off." - added
Output schema / properties / appliedFilters / properties / presetAdded value: +{ + "description": "ReliefWeb preset the query used: latest (current listings only, default) or analysis when include_archived.", + "type": "string" +} - changed
Output schema / properties / appliedFilters / requiredPrevious value: -[ - "sort", - "limit", - "offset" -]New value: +[ + "sort", + "preset", + "limit", + "offset" +]
6 tool updates
- Changed
reliefweb_list_countries1 field changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty — echoes the active filter 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."
- Changed
reliefweb_list_sources1 field changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty — echoes the active filters 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."
- Changed
reliefweb_search_disasters7 fields changed- added
Input schema / properties / date_from / anyOfAdded 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" + } +] - changed
Input schema / properties / date_from / descriptionPrevious value: -"Earliest disaster creation date (ISO 8601). Filters on date.created."New value: +"Earliest disaster creation date. Filters on date.created. 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." - removed
Input schema / properties / date_from / typeRemoved value: -"string" - added
Input schema / properties / date_to / anyOfAdded 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" + } +] - changed
Input schema / properties / date_to / descriptionPrevious value: -"Latest disaster creation date (ISO 8601). Pair with date_from for a date range."New value: +"Latest disaster creation 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." - removed
Input schema / properties / date_to / typeRemoved value: -"string" - changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty — echoes filters applied and suggests how to broaden."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."
- Changed
reliefweb_search_jobs1 field changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty — echoes filters applied and suggests how to broaden."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."
- Changed
reliefweb_search_reports7 fields changed- added
Input schema / properties / date_from / anyOfAdded 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" + } +] - changed
Input schema / properties / date_from / descriptionPrevious 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." - removed
Input schema / properties / date_from / typeRemoved value: -"string" - added
Input schema / properties / date_to / anyOfAdded 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" + } +] - changed
Input schema / properties / date_to / descriptionPrevious 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." - removed
Input schema / properties / date_to / typeRemoved value: -"string" - changed
Output schema / properties / notice / descriptionPrevious 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."
- Changed
reliefweb_search_training8 fields changed- added
Input schema / properties / date_start_from / anyOfAdded value: +[ + { + "const": "", + "type": "string" + }, + { + "description": "Calendar date (2024-06-01) or full ISO 8601 datetime (2024-06-01T00: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" + } +] - changed
Input schema / properties / date_start_from / descriptionPrevious value: -"Training start date lower bound (ISO 8601). Filters on date.start — use to find training starting after a given date."New value: +"Training start date lower bound. Filters on date.start — use to find training starting after a given date. A bare calendar date resolves to start of that day in UTC, and a datetime carrying any offset is resolved to UTC. Omit this and date_start_to together to default the search to training starting from now." - removed
Input schema / properties / date_start_from / typeRemoved value: -"string" - added
Input schema / properties / date_start_to / anyOfAdded value: +[ + { + "const": "", + "type": "string" + }, + { + "description": "Calendar date (2024-12-31) or full ISO 8601 datetime (2024-12-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" + } +] - changed
Input schema / properties / date_start_to / descriptionPrevious value: -"Training start date upper bound (ISO 8601). Filters on date.start — pair with date_start_from for a window."New value: +"Training start date upper bound. Filters on date.start — pair with date_start_from for a window. A bare calendar date resolves to end of that day in UTC, and a datetime carrying any offset is resolved to UTC. Supplying this alone searches everything up to it, with no lower bound injected." - removed
Input schema / properties / date_start_to / typeRemoved value: -"string" - changed
Output schema / properties / appliedFilters / properties / dateStartFrom / descriptionPrevious value: -"Training start date lower bound applied."New value: +"Training start date lower bound applied — the caller-supplied value, or the current timestamp when neither date bound was given." - changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty — echoes filters applied and suggests how to broaden."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."
4 tool updates
- Changed
reliefweb_get_country3 fields changed- changed
Output schema / properties / appealsResponsePlans / descriptionPrevious value: -"Active humanitarian appeals and response plans for this country."New value: +"Currently-active humanitarian appeals and response plans for this country — the present set, not the full historical archive." - changed
Output schema / properties / keyContent / descriptionPrevious value: -"Curated key content links maintained by ReliefWeb editors."New value: +"Currently-active curated key content links maintained by ReliefWeb editors — the present curated set, not the full historical archive." - changed
Output schema / properties / usefulLinks / descriptionPrevious value: -"Useful external links curated by ReliefWeb editors."New value: +"Currently-active useful external links curated by ReliefWeb editors — the present set, not the full historical archive."
- Changed
reliefweb_get_disaster3 fields changed- changed
Output schema / properties / appealsResponsePlans / descriptionPrevious value: -"Active appeals and response plans linked to this disaster."New value: +"Currently-active appeals and response plans linked to this disaster — the present set, not the full historical archive." - changed
Output schema / properties / keyContent / descriptionPrevious value: -"Curated key content links from the ReliefWeb editorial team."New value: +"Currently-active curated key content links from the ReliefWeb editorial team — the present curated set, not the full historical archive." - changed
Output schema / properties / usefulLinks / descriptionPrevious value: -"Useful external links curated by ReliefWeb editors."New value: +"Currently-active useful external links curated by ReliefWeb editors — the present set, not the full historical archive."
- Changed
reliefweb_search_jobs1 field changed- added
Input schema / properties / sortAdded value: +{ + "description": "Sort order. Use date.created:desc for newest postings first (default), date.closing:asc to surface roles closing soonest, or score:desc for relevance.", + "type": "string" +}
- Changed
reliefweb_search_training1 field changed- added
Input schema / properties / sortAdded value: +{ + "description": "Sort order. Use date.start:asc for soonest-starting training first (default), date.start:desc for latest-starting, date.created:desc for most recently posted, or score:desc for relevance.", + "type": "string" +}
4 tool updates
- Changed
reliefweb_list_countries2 fields changed- changed
Input schema / properties / crisis_only / descriptionPrevious value: -"When true, filters to countries with an active humanitarian situation (status alert or current). Default false returns all countries."New value: +"When true, filters to countries with an active humanitarian situation (status ongoing). Default false returns all countries." - changed
Output schema / properties / items / items / properties / status / descriptionPrevious value: -"Humanitarian situation status. Active situations have status alert or current."New value: +"Humanitarian situation status: ongoing (active crisis) or normal (non-crisis)."
- Changed
reliefweb_list_sources2 fields changed- changed
Input schema / properties / type / descriptionPrevious value: -"Organization type. Must match exact API values: \"Government\", \"International Organization\", \"Non-governmental Organization\", \"Academia\", \"United Nations\", \"Other\". Filters on type.name."New value: +"Organization type. One of: Non-governmental Organization, International Organization, Academic and Research Institution, Other, Government, Media, Red Cross/Red Crescent Movement. Filters on type.name." - added
Input schema / properties / type / enumAdded value: +[ + "Non-governmental Organization", + "International Organization", + "Academic and Research Institution", + "Other", + "Government", + "Media", + "Red Cross/Red Crescent Movement" +]
- Changed
reliefweb_search_disasters1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to disasters tagged with this primary country."New value: +"ISO 3166-1 alpha-3 country code (e.g., SYR, AFG, UKR). Filters to disasters tagged with this country."
- Changed
reliefweb_search_training2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Training format (e.g., Workshop, E-learning, Conference, Seminar). Filters on format.name."New value: +"Training format. Valid values: on-site, online. Filters on format.name." - added
Input schema / properties / format / enumAdded value: +[ + "on-site", + "online" +]
6 tool updates
- Changed
reliefweb_list_countries1 field changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes the active filter and suggests how to broaden. Absent on successful result pages.", + "type": "string" +}
- Changed
reliefweb_list_sources1 field changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes the active filters and suggests how to broaden. Absent on successful result pages.", + "type": "string" +}
- Changed
reliefweb_search_disasters2 fields changed- added
Output schema / properties / appliedFiltersAdded 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 creation date filter applied.", + "type": "string" + }, + "dateTo": { + "description": "Latest creation date filter applied.", + "type": "string" + }, + "disasterType": { + "description": "Disaster type name filter applied.", + "type": "string" + }, + "glide": { + "description": "GLIDE number 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" + }, + "sort": { + "description": "Sort order the query used (resolved, including the default).", + "type": "string" + }, + "status": { + "description": "Status filter applied (comma-joined when multiple).", + "type": "string" + }, + "text": { + "description": "Full-text query the search used.", + "type": "string" + } + }, + "required": [ + "sort", + "preset", + "limit", + "offset" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "items", - "totalCount" -]New value: +[ + "items", + "appliedFilters", + "totalCount" +]
- Changed
reliefweb_search_jobs2 fields changed- added
Output schema / properties / appliedFiltersAdded 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": { + "careerCategory": { + "description": "Career category name filter applied.", + "type": "string" + }, + "country": { + "description": "Country code as normalized (uppercased ISO3).", + "type": "string" + }, + "experience": { + "description": "Experience level filter applied.", + "type": "string" + }, + "limit": { + "description": "Result limit the query used.", + "type": "number" + }, + "offset": { + "description": "Pagination offset the query used.", + "type": "number" + }, + "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", + "limit", + "offset" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "items", - "totalCount" -]New value: +[ + "items", + "appliedFilters", + "totalCount" +]
- Changed
reliefweb_search_reports2 fields changed- added
Output schema / properties / appliedFiltersAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "items", - "totalCount" -]New value: +[ + "items", + "appliedFilters", + "totalCount" +]
- Changed
reliefweb_search_training2 fields changed- added
Output schema / properties / appliedFiltersAdded 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": { + "careerCategory": { + "description": "Career category name filter applied.", + "type": "string" + }, + "country": { + "description": "Country code as normalized (uppercased ISO3).", + "type": "string" + }, + "dateStartFrom": { + "description": "Training start date lower bound applied.", + "type": "string" + }, + "dateStartTo": { + "description": "Training start date upper bound applied.", + "type": "string" + }, + "format": { + "description": "Training 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" + }, + "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" + } + }, + "required": [ + "sort", + "limit", + "offset" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "items", - "totalCount" -]New value: +[ + "items", + "appliedFilters", + "totalCount" +]
1 tool update
- Changed
reliefweb_list_sources1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"Organization type (e.g., Government, International Organization, NGO, Academia). Filters on type.name."New value: +"Organization type. Must match exact API values: \"Government\", \"International Organization\", \"Non-governmental Organization\", \"Academia\", \"United Nations\", \"Other\". Filters on type.name."
6 tool updates
- Changed
reliefweb_list_countries1 field changed- changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based offset for pagination. Use with limit and totalCount to page through results."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results."
- Changed
reliefweb_list_sources1 field changed- changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based offset for pagination. Use with limit and totalCount to page through results."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results."
- Changed
reliefweb_search_disasters3 fields changed- changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based offset for pagination. Use with limit and totalCount to page through results."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results." - removed
Output schema / properties / messageRemoved value: -{ - "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", - "type": "string" -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", + "type": "string" +}
- Changed
reliefweb_search_jobs3 fields changed- changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based offset for pagination. Use with limit and totalCount to page through results."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results." - removed
Output schema / properties / messageRemoved value: -{ - "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", - "type": "string" -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", + "type": "string" +}
- Changed
reliefweb_search_reports3 fields changed- changed
Input schema / properties / offset / descriptionPrevious 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." - removed
Output schema / properties / messageRemoved value: -{ - "description": "Recovery hint when results are empty — echoes the filters applied and suggests how to broaden. Absent on successful result pages.", - "type": "string" -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes the filters applied and suggests how to broaden. Absent on successful result pages.", + "type": "string" +}
- Changed
reliefweb_search_training3 fields changed- changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based offset for pagination. Use with limit and totalCount to page through results."New value: +"Zero-based offset for pagination. Use with limit and the totalCount enrichment field to page through results." - removed
Output schema / properties / messageRemoved value: -{ - "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", - "type": "string" -} - added
Output schema / properties / noticeAdded value: +{ + "description": "Recovery hint when results are empty — echoes filters applied and suggests how to broaden.", + "type": "string" +}
9 tool updates
- First observed
reliefweb_get_country - First observed
reliefweb_get_disaster - First observed
reliefweb_get_report - First observed
reliefweb_list_countries - First observed
reliefweb_list_sources - First observed
reliefweb_search_disasters - First observed
reliefweb_search_jobs - First observed
reliefweb_search_reports - First observed
reliefweb_search_training
Related MCP Connectors
ReliefWeb MCP — the UN OCHA humanitarian information service.
Search US lobbying disclosures and foreign-agent registrations via MCP.
Search events, conference weeks, cities, venues and artist schedules via remote MCP.
Search events, conference weeks, cities, venues and artist schedules via remote MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceSearch GBIF species taxonomy, occurrence records, datasets, and publishers via MCP.399 npm1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSearch and query government open-data portals (Socrata SODA API) via MCP.453 npm4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSearch and analyze global news coverage and US television transcripts via the GDELT Project's real-time APIs via MCP.673 npm10Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSearch USGS and EMSC seismic data for real-time feeds, event queries, and earthquake counts via MCP.475 npm3Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.