Public Search API Documentation
API Version: 1.0.0-beta · Stability Policy: beta
Overview
The Climate Insights Directory Public Search API allows AI agents, researcher scripts, and automated tools to discover and cite civil-society climate documents. The API endpoints follow RFC 9457 Problem Details for HTTP APIs.
Stability policy: The current stability stage is beta. Breaking changes will be announced at least 10 days in advance (Terms of Use 8.2). Result ranking and ordering changes are not breaking changes. See Versioning and deprecation.
Versioning and deprecation
A breaking change is one that stops an existing client from working, such as renaming or removing a parameter or a response field, or changing a field's type. Changes to result ranking or order are not breaking. A breaking change follows these steps:
- It is announced in the Changelog on this page at least 10 days before the current version stops answering.
- The new version ships at a new path,
/api/v2/search, while/api/v1/searchkeeps answering, so both versions are live at the same time. - During that window
/api/v1/searchanswers as before, and every response carries aDeprecationheader (the version is deprecated) and aSunsetheader (the date it stops answering). - After the
Sunsetdate,/api/v1/searchanswers410 Gonewith a Problem Details body that links to the new version.
Endpoints
GET /api/v1/search- Primary search endpointPOST /api/mcp- Model Context Protocol (MCP) endpointGET /api/v1/openapi.json- OpenAPI 3.1 specification documentGET /.well-known/api-catalog- RFC 9727 API CatalogGET /opensearch.xml- OpenSearch 1.1 description
Parameters
The search endpoint accepts 16 parameters. Unknown parameters return a 400 Problem Details response.
| Parameter | Description | Repeatable |
|---|---|---|
q | Free-text query terms and field operators (cidid:, intitle:, ispublisher:, insummary:, doctype:, hasconcept:, geography:, lang:). Max 200 characters. | |
page | 1-based page number (integer >= 1). | |
page_size | Results per page (1 to 50, default 20). | |
response_format | Response detail level: concise or detailed (default detailed). | |
sort | Sort ordering: relevance, published, or published_asc. | |
organization | Filter by publishing organization slug. | yes |
published_from | Filter by minimum publication date (YYYY-MM-DD). | |
published_to | Filter by maximum publication date (YYYY-MM-DD). | |
added | Filter by corpus ingestion date (YYYY-MM-DD). | |
climate_tags | Filter by climate tags (repeatable vocabulary facet). | yes |
geography | Filter by primary geography (repeatable vocabulary facet). | yes |
geography_discussed | Filter by regions discussed (repeatable vocabulary facet). | yes |
frame_perspective | Filter by frame or perspective (repeatable vocabulary facet). | yes |
analysis_type | Filter by analysis type (repeatable vocabulary facet). | yes |
document_type | Filter by document type (repeatable vocabulary facet). | yes |
language | Filter by ISO language code (repeatable vocabulary facet). | yes |
Example Request and Response
Request URL combining a field operator inside q and a repeated facet:
GET https://climateinsightsdirectory.org/api/v1/search?q=flooding+intitle%3Ajamaica&climate_tags=Adaptation&climate_tags=MitigationAbbreviated 200 OK response body:
{
"query_echo": {
"q": "climate",
"filters": {},
"warnings": []
},
"total": {
"value": 1,
"relation": "eq"
},
"page": 1,
"page_size": 20,
"self": "https://climateinsightsdirectory.org/api/v1/search?q=climate",
"stability": "beta",
"ai_marking": {
"digital_source_type": {
"uri": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
"name": "Created using Generative AI"
},
"notice": "Summary and key insights are generated using artificial intelligence."
},
"results": [
{
"id": "cape-ca-001",
"url": "https://climateinsightsdirectory.org/document/cape-ca-001",
"title": "Sample Document",
"publisher": {
"name": "CAPE",
"organization": "cape"
},
"document_type": "report",
"language": "en",
"date_published": "2026-01-01",
"source_url": "https://example.org/doc.pdf",
"generator": "Climate Insights Directory",
"generated_fields": [
"summary"
]
}
]
}AI Marking and Provenance
To ensure transparency for downstream AI agents and research tools, the API distinguishes human-curated and publisher-extracted metadata from AI-generated fields:
ai_marking: Top-level object declaring overall AI provenance using IPTC Digital Source Type metadata (trainedAlgorithmicMedia) and a standard disclosure notice.generated_fields: Array of field names on each result item (such assummary,key_insights, or facet tags) that were generated or enriched by language models.ai_generated: Boolean flag on an individualAiUnit(e.g.summaryor items inkey_insights), set totruewhen the text was machine-generated.unit: Identifier or fragment URI on anAiUnitlinking the generated text to its specific anchor on the document record (e.g.{id}#summaryor{id}#insight-1).date_modified: date string inYYYY-MM-DDform (ornull) indicating when the AI-generated unit was last generated or modified.
Model Context Protocol (MCP) Endpoint
The Climate Insights Directory provides a Streamable HTTP MCP endpoint at https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcp. It exposes two tools for AI agents:search and fetch.
Tools
search
Search civil-society climate documents by query and filters.
Arguments:
querypagepage_sizeresponse_formatsortorganizationpublished_frompublished_toaddedclimate_tagsgeographygeography_discussedframe_perspectiveanalysis_typedocument_typelanguage
fetch
Fetch the full record and rendered Markdown of a specific document.
Arguments:
id
Client Setup
Claude
Open Settings > Connectors, choose Add custom connector and enter the endpoint URL:
https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcpClaude Code
Run the following command:
claude mcp add --transport http climate-insights-directory "https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcp"ChatGPT
Add a custom MCP connector with the endpoint URL:
https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcpGemini CLI
Run the following command:
gemini mcp add --transport http climate-insights-directory "https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcp"Antigravity
Add to configuration under mcpServers:
{
"mcpServers": {
"climate-insights-directory": {
"serverUrl": "https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcp"
}
}
}Hermes
Run the following command:
hermes mcp add climate-insights-directory --url "https://climateinsightsdirectory.org/api/mcp?utm_source=docs&utm_medium=mcp"Error Types (RFC 9457)
unknown-parameter
Returned when a request contains parameter names that are not recognized in the accepted parameter list.
"type": "https://climateinsightsdirectory.org/api-docs#unknown-parameter"invalid-parameter-value
Returned when a parameter value fails format or range validation (e.g. non-integer page numbers, invalid date formats, or unknown enum options).
"type": "https://climateinsightsdirectory.org/api-docs#invalid-parameter-value"result-window-exceeded
Returned when the requested page depth exceeds maximum allowed result pagination depth (page * page_size > 1000).
"type": "https://climateinsightsdirectory.org/api-docs#result-window-exceeded"record-not-found
Returned by the fetch tool when no document matching the specified id is found.
"type": "https://climateinsightsdirectory.org/api-docs#record-not-found"record-withdrawn
Returned by the fetch tool when the requested document has been withdrawn or is no longer available.
"type": "https://climateinsightsdirectory.org/api-docs#record-withdrawn"Changelog
- 2026-10-14: Added Model Context Protocol (MCP) endpoint (
/api/mcp) providingsearchandfetchtools. - 2026-10-05: Initial release of Public Search API v1 (beta). Added OpenAPI 3.1 specification, RFC 9727 linkset, OpenSearch 1.1, and RFC 9457 error handling.