Updated 20:14 ET

Searches the newest published research for your account. A full-archive and instrument search is not available yet.

Developers

The same research, programmatically

Read the same rights-checked research through a REST API or read-only MCP tools. Both use one access service, so rights and plan checks match the web reader every time.

REST: authentication and a first request

API and MCP access belong to the Developer and Enterprise plans only. A Pro reader plan does not include them. Keys belong to an organization, are scoped, metered, and can be revoked at any time. See plans.

Create a key in API keys (organization admins). The key is displayed once and stored only as a hash. Send it as a bearer token, never in a URL:

curl · list reports
curl -H "Authorization: Bearer $THULO_API_KEY" \
  "https://insights.thulo.app/v1/research?limit=5&instrument=NVDA"

Base URL: https://insights.thulo.app/v1. Timestamps are UTC ISO 8601. Errors use application/problem+json with a trace_id. Lists are cursor-paginated: pass the next_cursor you receive as cursor (default 20, maximum 100).

curl · one report by slug
curl -H "Authorization: Bearer $THULO_API_KEY" \
  "https://insights.thulo.app/v1/research/by-slug/<slug>"
JavaScript · fetch
const res = await fetch("https://insights.thulo.app/v1/research?limit=5&instrument=NVDA", {
  headers: { Authorization: `Bearer ${process.env.THULO_API_KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { items, next_cursor } = await res.json();
for (const r of items) console.log(r.as_of, r.instrument.ticker, r.title);
Python · requests
import os, requests

r = requests.get(
    "https://insights.thulo.app/v1/research",
    params={"limit": 5, "instrument": "NVDA"},
    headers={"Authorization": f"Bearer {os.environ['THULO_API_KEY']}"},
    timeout=20,
)
r.raise_for_status()
page = r.json()
for item in page["items"]:
    print(item["as_of"], item["instrument"]["ticker"], item["title"])

Each item carries content_sha256 and, for entitled readers, the full body. Hash the body you received to check it against the fingerprint, the same check the web page runs. See how to verify a report. A 404 for a publication means it is unavailable to you: it may not exist, may be withdrawn, or may be outside your rights. The API deliberately does not say which. body is null when your plan or rights do not include the full text.

MCP tools

Read-only tools for AI assistants over MCP (HTTPS, OAuth 2.1). They apply the same plan entitlement, publication rights and rate limits as the REST API.

Server URL: https://insights.thulo.app/mcp

Available MCP tools
ToolWhat it does
search_researchSearch licensed publications by ticker, market, date and keywords
get_researchRead entitled publication revision
list_coverageList enabled instruments/regions for entitled customer
get_citationsRead licensed public citation metadata; never return raw evidence

Webhooks

Developer-plan organizations can receive signed notifications for new, corrected and retracted publications. Endpoints must be public HTTPS addresses; private network targets are refused. Deliveries are retried a limited number of times and then dead-lettered. Signature details will be documented with the webhook service.

Developers | Thulo Research