Get Report Links (Research)
researchmcp-research_report_links
Resolve report_ids to public EDITED Research article URLs.
Links are built at read time from the report's WordPress slug — nothing is
stored in the index — so this works for every report regardless of when it
was embedded. Call it after any search, list, or get tool whose results you cite,
batching all cited report_ids into one call, so your final answer includes
clickable EDITED Research URLs. Note the public article page requires
login: when the user wants the content itself rather than a link, prefer
research_read_report.
Try queries like
research_report_links(report_ids=[152777, 160001]) on ids from the search hits you are about to cite; "share a link to report 152777", "give me the URLs".
Parameters
| Name | Type | Required | Constraints | Description |
|---|---|---|---|---|
report_ids | integer[] | yes | max items: 20 | report_id values from a previous search/list/get tool. 1..20 per call — split larger sets across calls. |
Returns
- On success: {"links": {report_id (str): url | null}}.
nullmeans - WordPress returned no slug for that id (unknown or unpublished
- report) — surface "link unavailable", never invent a URL.
- On WordPress failure: {"error": str}.
Try it
Loading interactive widget…
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_report_links",
"arguments": {}
}
}'
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_report_links",
arguments: {},
});
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_report_links",
{},
)
Input schema
{
"type": "object",
"properties": {
"report_ids": {
"description": "report_id values from a previous search/list/get tool. 1..20 per call — split larger sets across calls.",
"items": {
"type": "integer"
},
"maxItems": 20,
"minItems": 1,
"type": "array"
}
},
"required": [
"report_ids"
]
}