
Search expert emerging-markets research on economics, politics, policy and sovereign risk.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Read a single research author by author UUID. Use this tool when a user wants profile details for a specific research author returned by another research tool. The response includes author metadata, biography fields, profile URL, and visible sectors associated with the author. Missing, inactive, non-author, and hidden-sector-only authors return a generic not-found error.
The stable UUID of the research author to read. Use an author_uuid returned by another research tool.
Read a single research author by author UUID. Use this tool when a user wants profile details for a specific research author returned by another research tool. The response includes author metadata, biography fields, profile URL, and visible sectors associated with the author. Missing, inactive, non-author, and hidden-sector-only authors return a generic not-found error.
| Argument | Type | Description |
|---|---|---|
| author_uuid* | string | The stable UUID of the research author to read. Use an author_uuid returned by another research tool. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"author_uuid"
],
"properties": {
"author_uuid": {
"type": "string",
"description": "The stable UUID of the research author to read.\n\nUse an author_uuid returned by another research tool.\n"
}
}
}Read a single published research post by post UUID. Use this tool after calling search_research_posts and selecting the most relevant result. The response includes post metadata, authors, sectors, body HTML, and a URL. Depending on the authenticated MCP user's permissions, the body HTML and URL may expose either the full research post or teaser content. Missing, unpublished, and hidden-sector posts return a generic not-found error.
| Argument | Type | Description |
|---|---|---|
| post_uuid* | string | The stable UUID of the research post to read. Use a post_uuid returned by search_research_posts. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"post_uuid"
],
"properties": {
"post_uuid": {
"type": "string",
"description": "The stable UUID of the research post to read.\n\nUse a post_uuid returned by search_research_posts.\n"
}
}
}Search research entities by name or approximate name. Use this tool whenever a user refers to an entity by name and a research entity UUID is needed. Results are ranked by match quality and include the research entity UUIDs required by other research tools. When multiple results are returned, review the entity name, description, match type, match confidence, and available research count to determine the most appropriate entity before using its entity_uuid in another tool. This tool only searches existing research entities and does not create or modify data.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return. Minimum 1, maximum 50, default 10. |
| query* | string | The entity name or approximate entity reference to search for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of results to return. Minimum 1, maximum 50, default 10."
},
"query": {
"type": "string",
"description": "The entity name or approximate entity reference to search for."
}
}
}Search published research posts associated with one or more research entities. This tool requires research entity UUIDs. If only entity names are known, first call search_research_entities to obtain candidate research entities and their UUIDs. Use only entity_uuid values copied exactly from search_research_entities results. Never infer, guess, construct, or transform UUIDs from entity names. Use this tool only after selecting the most appropriate research entity from the search_research_entities results. Examples: - To find research about "United States", first call search_research_entities with "United States", review the returned matches, select the most appropriate entity, and then call this tool with the selected entity_uuid. - To find recent research about multiple entities, pass all selected entity_uuid values in research_entity_uuids. - To retrieve the next page of results, pass the previous response's next_cursor as cursor. Results can be filtered by publication date and retrieved using cursor-based pagination.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of posts to return. Minimum 1, maximum 50, default 25. |
| order | string | Sort results by publication time. Use 'published_descending' for newest first or 'published_ascending' for oldest first. Default is published_descending. |
| cursor | string | Pagination cursor returned by a previous response. Use this to retrieve the next page of results. |
| published_after | string | Only return posts published after this timestamp. Provide a complete RFC 3339 timestamp including a timezone, for example 2026-08-01T00:00:00Z. Date-only values such as 2026-08-01 are not accepted. |
| published_before | string | Only return posts published before this timestamp. Provide a complete RFC 3339 timestamp including a timezone, for example 2026-08-01T00:00:00Z. Date-only values such as 2026-08-01 are not accepted. |
| count_total_results | boolean | Whether to include the total number of matching posts. Use false unless the total count is specifically needed. Calculating the total count may increase response time for large result sets. |
| research_entity_uuids* | array | One or more research entity UUIDs to search against. This field is required. At least one research entity UUID must be supplied. Do not pass entity names. If the user provides entity names rather than UUIDs, first call the "search_research_entities" tool and use the returned UUIDs from that tool. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"research_entity_uuids"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum number of posts to return. Minimum 1, maximum 50, default 25."
},
"order": {
"enum": [
"published_descending",
"published_ascending"
],
"type": "string",
"description": "Sort results by publication time. Use 'published_descending' for newest first or 'published_ascending' for oldest first. Default is published_descending."
},
"cursor": {
"type": "string",
"description": "Pagination cursor returned by a previous response. Use this to retrieve the next page of results."
},
"published_after": {
"type": "string",
"format": "date-time",
"description": "Only return posts published after this timestamp. Provide a complete RFC 3339 timestamp including a timezone, for example 2026-08-01T00:00:00Z. Date-only values such as 2026-08-01 are not accepted."
},
"published_before": {
"type": "string",
"format": "date-time",
"description": "Only return posts published before this timestamp. Provide a complete RFC 3339 timestamp including a timezone, for example 2026-08-01T00:00:00Z. Date-only values such as 2026-08-01 are not accepted."
},
"count_total_results": {
"type": "boolean",
"description": "Whether to include the total number of matching posts. Use false unless the total count is specifically needed. Calculating the total count may increase response time for large result sets."
},
"research_entity_uuids": {
"type": "array",
"items": {
"type": "string"
},
"description": "One or more research entity UUIDs to search against.\n\nThis field is required.\n\nAt least one research entity UUID must be supplied.\n\nDo not pass entity names.\n\nIf the user provides entity names rather than UUIDs, first call the \"search_research_entities\" tool and use the returned UUIDs from that tool.\n"
}
}
}