Server definition
- Hash
- sha256:55ecbf927213e8449d4e938837057ee1239f07bada5ba5ad7b68e9df02497353
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "GlobalSource Partners provides independent macroeconomic, political, policy and geopolitical research covering emerging and frontier markets worldwide.\n\nResearch is produced by locally based country experts with deep in-country knowledge, including economists, former policymakers, government officials and other senior specialists.\n\nUse this server when a user seeks:\n- Analysis of country-specific political, economic or policy developments\n- Emerging or frontier market research\n- Election, government, regulatory or legislative analysis\n- Macroeconomic outlooks and forecasts\n- Sovereign risk assessments\n- Country investment environment analysis\n- Research published by GlobalSource Partners\n\nThe server provides access to published GlobalSource Partners research, including research entities, research reports and related metadata.\n\nResearch should be treated as expert analysis and opinion produced by GlobalSource Partners contributors. When responding to users, distinguish between conclusions drawn from GlobalSource Partners research and independently verified facts.\n\nMost research is organized around research entities such as countries, policymakers, institutions, companies, sectors and other topics. When a user refers to an entity by name, identify the most appropriate research entity before retrieving related research.\n\nExample requests:\n- \"What is the outlook for Mexico?\"\n- \"Show me recent research on India.\"\n- \"What has GlobalSource Partners written about Argentina's elections?\"\n- \"Find research mentioning the World Bank.\"\n- \"Compare recent research on Brazil and Chile.\"\n",
"tools": [
{
"description": "Read a single research author by author UUID.\n\nUse this tool when a user wants profile details for a specific research author returned by another research tool.\n\nThe response includes author metadata, biography fields, profile URL, and visible sectors associated with the author.\n\nMissing, inactive, non-author, and hidden-sector-only authors return a generic not-found error.\n",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"author_uuid": {
"description": "The stable UUID of the research author to read.\n\nUse an author_uuid returned by another research tool.\n",
"type": "string"
}
},
"required": [
"author_uuid"
],
"type": "object"
},
"name": "read_research_author",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"author_biography_html": {
"description": "The research author's biography as HTML, if available.",
"type": [
"string",
"null"
]
},
"author_name": {
"description": "The display name of the research author.",
"type": "string"
},
"author_profile_url": {
"description": "The URL where this research author's profile can be viewed.",
"type": "string"
},
"author_sectors": {
"description": "The visible sectors associated with this research author.",
"items": {
"properties": {
"sector_name": {
"description": "The display name of the research sector.",
"type": "string"
},
"sector_uuid": {
"description": "The stable UUID of the research sector.",
"type": "string"
}
},
"required": [
"sector_uuid",
"sector_name"
]
},
"type": "array"
},
"author_short_biography": {
"description": "A short biography or role summary for the research author, if available.",
"type": [
"string",
"null"
]
},
"author_uuid": {
"description": "The stable UUID of the research author.",
"type": "string"
}
},
"required": [
"author_uuid",
"author_name",
"author_short_biography",
"author_biography_html",
"author_profile_url",
"author_sectors"
],
"type": "object"
}
},
{
"description": "Read a single published research post by post UUID.\n\nUse this tool after calling search_research_posts and selecting the most relevant result.\n\nThe 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.\n\nMissing, unpublished, and hidden-sector posts return a generic not-found error.\n",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"post_uuid": {
"description": "The stable UUID of the research post to read.\n\nUse a post_uuid returned by search_research_posts.\n",
"type": "string"
}
},
"required": [
"post_uuid"
],
"type": "object"
},
"name": "read_research_post",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"post_authors": {
"description": "The authors of this research post.",
"items": {
"properties": {
"author_name": {
"description": "The display name of the research author.",
"type": "string"
},
"author_uuid": {
"description": "The stable UUID of the research author.",
"type": "string"
}
},
"required": [
"author_uuid",
"author_name"
]
},
"type": "array"
},
"post_body_html": {
"description": "The HTML body available for this research post. This may be full post content or teaser content depending on the MCP user's permissions.",
"type": "string"
},
"post_published": {
"description": "The publication timestamp of the research post in ISO 8601 format.",
"type": "string"
},
"post_sectors": {
"description": "The sectors associated with this research post. Only clients who are permissioned for these sectors can access the full version of this post; other clients will receive teaser content.\n",
"items": {
"properties": {
"sector_name": {
"description": "The display name of the research sector.",
"type": "string"
},
"sector_uuid": {
"description": "The stable UUID of the research sector.",
"type": "string"
}
},
"required": [
"sector_uuid",
"sector_name"
]
},
"type": "array"
},
"post_snippet_notice": {
"description": "A notice shown when the returned body contains only teaser or snippet content instead of the full research post. Null when the MCP user can view the full post.",
"type": [
"string",
"null"
]
},
"post_title": {
"description": "The title of the research post.",
"type": "string"
},
"post_type": {
"description": "The type of research post, e.g., 'Report', 'In Brief', 'Presentation', etc.",
"type": "string"
},
"post_updated": {
"description": "The most recent update timestamp of the research post in ISO 8601 format.",
"type": "string"
},
"post_url": {
"description": "The URL where this research post can be viewed. This may be a full post URL or teaser URL depending on the MCP user's permissions.",
"type": "string"
},
"post_uuid": {
"description": "The stable UUID of the research post.",
"type": "string"
}
},
"required": [
"post_uuid",
"post_title",
"post_type",
"post_published",
"post_updated",
"post_authors",
"post_sectors",
"post_body_html",
"post_url",
"post_snippet_notice"
],
"type": "object"
}
},
{
"description": "Search research entities by name or approximate name.\n\nUse this tool whenever a user refers to an entity by name and a research entity UUID is needed.\n\nResults are ranked by match quality and include the research entity UUIDs required by other research tools.\n\nWhen 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.\n\nThis tool only searches existing research entities and does not create or modify data.\n",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "Maximum number of results to return. Minimum 1, maximum 50, default 10.",
"type": "integer"
},
"query": {
"description": "The entity name or approximate entity reference to search for.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_research_entities",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "The maximum number of matching research entities requested.",
"type": "integer"
},
"queried_name": {
"description": "The normalized version of the query used to search for research entities.",
"type": "string"
},
"results": {
"description": "The matching research entities, ordered by match confidence.",
"items": {
"properties": {
"available_research_count": {
"description": "The number of published research posts associated with this research entity.",
"type": "integer"
},
"entity_description": {
"description": "A short description of the research entity, if available.",
"type": [
"string",
"null"
]
},
"entity_name": {
"description": "The display name of the research entity.",
"type": "string"
},
"entity_normalized_name": {
"description": "The normalized name of the research entity, used for matching and deduplication.",
"type": "string"
},
"entity_uuid": {
"description": "The stable UUID of the research entity.",
"type": "string"
},
"match_confidence": {
"description": "A relative confidence score from 0.0 to 1.0 used to rank results. Scores should not be interpreted as probabilities.",
"type": "number"
},
"match_type": {
"description": "How the research entity matched the query. Values are normalized_name or alias.",
"enum": [
"normalized_name",
"alias"
],
"type": "string"
},
"matched_normalized_name": {
"description": "The normalized name or alias value that matched the query.",
"type": "string"
},
"reason": {
"description": "A short human-readable explanation of why this research entity was returned.",
"type": "string"
}
},
"required": [
"entity_uuid",
"entity_name",
"entity_normalized_name",
"entity_description",
"available_research_count",
"match_confidence",
"match_type",
"matched_normalized_name",
"reason"
]
},
"type": "array"
},
"total_results_count": {
"description": "The total number of matching research entities found before applying the result limit.",
"type": "integer"
}
},
"required": [
"queried_name",
"limit",
"total_results_count",
"results"
],
"type": "object"
}
},
{
"description": "Search published research posts associated with one or more research entities.\n\nThis tool requires research entity UUIDs. If only entity names are known, first call search_research_entities to obtain candidate research entities and their UUIDs.\n\nUse only entity_uuid values copied exactly from search_research_entities results. Never infer, guess, construct, or transform UUIDs from entity names.\n\nUse this tool only after selecting the most appropriate research entity from the search_research_entities results.\n\nExamples:\n- 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.\n- To find recent research about multiple entities, pass all selected entity_uuid values in research_entity_uuids.\n- To retrieve the next page of results, pass the previous response's next_cursor as cursor.\n\nResults can be filtered by publication date and retrieved using cursor-based pagination.\n",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"count_total_results": {
"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.",
"type": "boolean"
},
"cursor": {
"description": "Pagination cursor returned by a previous response. Use this to retrieve the next page of results.",
"type": "string"
},
"limit": {
"description": "Maximum number of posts to return. Minimum 1, maximum 50, default 25.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"order": {
"description": "Sort results by publication time. Use 'published_descending' for newest first or 'published_ascending' for oldest first. Default is published_descending.",
"enum": [
"published_descending",
"published_ascending"
],
"type": "string"
},
"published_after": {
"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.",
"format": "date-time",
"type": "string"
},
"published_before": {
"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.",
"format": "date-time",
"type": "string"
},
"research_entity_uuids": {
"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",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"research_entity_uuids"
],
"type": "object"
},
"name": "search_research_posts",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "The maximum number of research posts requested.",
"type": "integer"
},
"next_cursor": {
"description": "An opaque pagination cursor. Supply this value in a subsequent request to retrieve the next page of results. Clients should not attempt to interpret or modify the cursor value. If this field is null, there are no additional pages of results.",
"type": [
"string",
"null"
]
},
"order": {
"description": "The sort order applied to the results.",
"type": "string"
},
"published_after": {
"description": "The effective lower publication timestamp used for the search. If no lower publication date filter was supplied, this defaults to the earliest date from which research is available.",
"type": "string"
},
"published_before": {
"description": "The effective upper publication timestamp used for the search. If no upper publication date filter was supplied, this defaults to the current date and time.",
"type": "string"
},
"research_entities": {
"description": "The research entities used to filter the search results.",
"items": {
"properties": {
"entity_description": {
"description": "A short description of the research entity, if available.",
"type": [
"string",
"null"
]
},
"entity_name": {
"description": "The display name of the research entity.",
"type": "string"
},
"entity_normalized_name": {
"description": "The normalized name of the research entity, used for matching and deduplication.",
"type": "string"
},
"entity_uuid": {
"description": "The stable UUID of the research entity.",
"type": "string"
}
},
"required": [
"entity_uuid",
"entity_name",
"entity_normalized_name",
"entity_description"
]
},
"type": "array"
},
"results": {
"description": "The research posts matching the supplied research entities and filters, ordered according to the requested sort order.",
"items": {
"properties": {
"matched_research_entities": {
"description": "The subset of the requested research entities that caused this post to be returned. This is most useful when searching using multiple research entities.\n",
"items": {
"properties": {
"entity_description": {
"description": "A short description of the research entity, if available.",
"type": [
"string",
"null"
]
},
"entity_name": {
"description": "The display name of the research entity.",
"type": "string"
},
"entity_normalized_name": {
"description": "The normalized name of the research entity, used for matching and deduplication.",
"type": "string"
},
"entity_uuid": {
"description": "The stable UUID of the research entity.",
"type": "string"
}
},
"required": [
"entity_uuid",
"entity_name",
"entity_normalized_name",
"entity_description"
]
},
"type": "array"
},
"post_authors": {
"description": "The authors of this research post.",
"items": {
"properties": {
"author_name": {
"description": "The display name of the research author.",
"type": "string"
},
"author_uuid": {
"description": "The stable UUID of the research author.",
"type": "string"
}
},
"required": [
"author_uuid",
"author_name"
]
},
"type": "array"
},
"post_published": {
"description": "The publication timestamp of the research post in ISO 8601 format.",
"type": "string"
},
"post_sectors": {
"description": "The sectors associated with this research post. Only clients who are permissioned for these sectors can access the full version of this post; other clients will only be able to see a snippet of the post and will not have access to the full content.\n",
"items": {
"properties": {
"sector_name": {
"description": "The display name of the research sector.",
"type": "string"
},
"sector_uuid": {
"description": "The stable UUID of the research sector.",
"type": "string"
}
},
"required": [
"sector_uuid",
"sector_name"
]
},
"type": "array"
},
"post_snippet": {
"description": "A preview of this research post, which may be a human-written synopsis or a truncated excerpt from the research body.",
"type": "string"
},
"post_title": {
"description": "The title of the research post.",
"type": "string"
},
"post_type": {
"description": "The type of research post, e.g., 'Report', 'In Brief', 'Presentation', etc.",
"type": "string"
},
"post_updated": {
"description": "The most recent update timestamp of the research post in ISO 8601 format.",
"type": "string"
},
"post_uuid": {
"description": "The stable UUID of the research post.",
"type": "string"
}
},
"required": [
"post_uuid",
"post_title",
"post_type",
"post_published",
"post_updated",
"matched_research_entities",
"post_authors",
"post_sectors",
"post_snippet"
]
},
"type": "array"
},
"total_results_count": {
"description": "The total number of matching research posts before pagination was applied. Returned only when count_total_results was requested with true; otherwise null.",
"type": [
"integer",
"null"
]
}
},
"required": [
"research_entities",
"published_before",
"published_after",
"order",
"limit",
"next_cursor",
"total_results_count",
"results"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:55ecbf927213e8449d4e938837057ee1239f07bada5ba5ad7b68e9df02497353 | sha256sum