List Reports (Research)
researchmcp-research_list_reports
Browse reports newest-first by publish date, paginated via cursor.
Use when the user wants to discover what reports exist within a publish-date
window — "what reports do we have from last month" — without forcing a
contrived topic query. Filters by publish date only: there
is no coverage-area or category filter, and the date window is the report's
publish date, not the season it is about. For topic or coverage queries
("Runway coverage", "denim SS25"), use research_article_search instead.
Parameters:
start_date, end_date: optional inclusive bounds (YYYY-MM-DD). Use
research_analyze_query to convert natural-language windows.
limit: page size, 1..100, default 20.
cursor: opaque token from a previous response's next_cursor to
fetch the next page. Omit on the first call.
"what reports do we have from last month", "list reports since January", "anything published this week".
Parameters
| Name | Type | Required | Constraints | Description |
|---|---|---|---|---|
start_date | string | null | no | default: null | Inclusive lower bound (YYYY-MM-DD). Reports on or after this date. |
end_date | string | null | no | default: null | Inclusive upper bound (YYYY-MM-DD). Reports on or before this date. |
limit | integer | no | default: 20 · 1–100 | Page size, 1..100. Default 20. |
cursor | string | null | no | default: null | Opaque pagination token from a previous response's next_cursor. |
Returns
- On success: {"total": int, "reports": list[ReportSummary],
- "next_cursor": str | None}. Each report carries
report_id, title,date,modified, andexcerpt. For a public link to a- report_id call
research_report_links; for the full article text - call
research_read_report. totalis the number of reports on this page (it feeds themcp.tool.result_countmetric); usenext_cursor(None on the- last page) to gauge whether more exist.
- On retrieval failure or invalid cursor/limit: {"error": str}.
Try it
Code examples
- curl
- TypeScript
- Python
curl -s https://mcp.edited.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-06-18" \
-H "x-api-key: $MCP_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "researchmcp-research_list_reports",
"arguments": {
"start_date": null,
"end_date": null,
"limit": 20,
"cursor": null
}
}
}'
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client({ name: "demo", version: "1.0.0" }, { capabilities: {} });
await client.connect(
new StreamableHTTPClientTransport(new URL("https://mcp.edited.com/mcp"), {
requestInit: { headers: { "x-api-key": process.env.MCP_API_KEY ?? "" } },
}),
);
const result = await client.callTool({
name: "researchmcp-research_list_reports",
arguments: {
"start_date": null,
"end_date": null,
"limit": 20,
"cursor": null
},
});
import os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
headers = {"x-api-key": os.environ["MCP_API_KEY"]}
async with streamablehttp_client("https://mcp.edited.com/mcp", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(
"researchmcp-research_list_reports",
{"start_date": None, "end_date": None, "limit": 20, "cursor": None},
)
Input schema
{
"type": "object",
"properties": {
"start_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive lower bound (YYYY-MM-DD). Reports on or after this date."
},
"end_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Inclusive upper bound (YYYY-MM-DD). Reports on or before this date."
},
"limit": {
"default": 20,
"description": "Page size, 1..100. Default 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Opaque pagination token from a previous response's `next_cursor`."
}
}
}