Skip to content
MCP Server · v1.0.0 · 2024-11-05

Connect your AI
to 33,000+ multi-market filings

Our MCP (Model Context Protocol) server gives Claude, Cursor, VS Code, Windsurf and any compatible AI agent direct access to insider signals, Yahoo fundamentals, historical backtests and filings across 37 markets (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin and more). Zero local setup: one URL, one key, you are live.

Install guide ↓Generate an API key ↗REST API reference ↗
29
MCP tools
JSON-RPC 2.0
< 200ms
typical latency
Paris server
1.3M+
filings
37 markets
3 horizons
forward backtests
T+30 · T+90 · T+365
Context

Why an MCP server?

MCP (Model Context Protocol) is the open standard Anthropic published in 2024 to connect AI agents to external data sources. Think USB-C: your AI plugs into the server once and reaches everything it exposes, with no glue code.

On Insiders Trades, the MCP server turns our 14 REST endpoints into 29 richly documented tools (with JSON Schema definitions), optimised for consumption by an LLM:

  • Plain-language descriptions that spell out exactly when to call each tool.
  • Strict input schemas (type plus min/max constraints) so the model never passes invalid parameters.
  • Composite tools that combine several endpoints in one call (e.g. get_company_full_profile returns identity plus latest trades plus backtest stats in a single shot).
  • Temporal metadata on every response (latencyMs, generatedAt) so the agent can reason about freshness.
Everything the REST API does (see docs) is also exposed over MCP. On top of that you gain 6 composite tools that chain several requests together, tuned for vague prompts like« tell me everything about LVMH ».
Architecture

Communication flow

The server runs at POST https://insiders-trades.com/api/mcp. Plain HTTP transport (no stdio), JSON-RPC 2.0 envelope, open CORS (Access-Control-Allow-Origin: *).

┌─────────────────┐ 1. initialize ┌────────────────────┐
│ │ ────────────────────▶ │ │
│ AI client │ 2. tools/list │ MCP server │
│ (Claude, │ ────────────────────▶ │ POST /api/mcp │
│ Cursor, │ 3. tools/call │ JSON-RPC 2.0 │
│ Windsurf…) │ ────────────────────▶ │ │
│ │ +arguments │ executeTool() │
└────────▲────────┘ │ routing + auth │
 │ │ │ │
 │ │ ▼ │
 │ content[0].text │ Bearer <key> │
 │ (JSON stringified) │ │ │
 │ │ ▼ │
 └────────────────────────────────┤ Prisma / Postgres │
 │ (read-only) │
 └────────────────────┘

On the client side there is nothing to code: Claude Desktop / Cursor / Windsurf / VS Code (+ the Continue extension) speak JSON-RPC MCP natively. Just add the URL to their config file.

JSON-RPC 2.0

Protocol envelope

Supported methods

MethodTypeAuth requiredDescription
initializerequestnoInitial handshake · exchanges protocol versions and capabilities
initializednotificationnoClient confirmation (no response, HTTP 204)
tools/listrequestyesReturns the tool catalog with each inputSchema (JSON Schema)
tools/callrequestyesRuns a tool and returns the result in content[0].text
resources/listrequestyesLists static resources (strategy://, markets://, audits://, glossary://)
resources/templates/listrequestyesURI templates (audits://{slug})
resources/readrequestyesReads a resource's content by URI
prompts/listrequestyesLists MCP prompts (reusable LLM templates)
prompts/getrequestyesResolves a prompt into messages with interpolated arguments
pingrequestnoHeartbeat · returns {}

Example tools/call request

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "tools/call",
 "params": {
 "name": "search_top_signals",
 "arguments": {
 "direction": "BUY",
 "lookbackDays": 7,
 "minScore": 50,
 "limit": 5
 }
 }
}
The result is a JSON string inside content[0].text(MCP convention, models parse text natively). The parsed object always carries a meta field with the latency.
Security

Authentication

Every tools/list and tools/call must include your Insiders Trades API key. Two formats are accepted in production, in order of priority:

  1. Authorization: Bearer <key> · preferred, supported by modern MCP clients (Claude Desktop ≥ 3.7, Cursor, Windsurf).
  2. X-Api-Key: <key> · alternative header.
HTTP config with header
{
  "mcpServers": {
    "insiders-trades": {
      "url": "https://insiders-trades.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${INSIDERS_TRADES_API_KEY}"
      }
    }
  }
}
Never share your key in plaintext inside a versioned config.Use environment variables or a secrets manager. Most MCP clients accept injection via ${{env:VAR}}.

To generate a key, head to /account/api-keys (5 seconds). The key is shown only once, so copy it right away. It shares the same quota as the REST API: Pro 334 requests per UTC day, Quant 3,334 requests per UTC day.

Catalog

29 tools available

Grouped into 4 families by use. Each tool returns a self-contained JSON payload with latency metadata.

Discovery

8 tools · return lists

Your first entry point. Used by the AI when the user asks a fuzzy question ('any moves at LVMH?').

search_companiesrequires: query
Recherche fuzzy de sociétés cotées françaises par nom, ticker Yahoo, ou ISIN. Retourne nom, slug, ISIN, marché, capitalisation, cours, nombre de déclarations.
search_insidersrequires: query
Recherche fuzzy de dirigeants (PDG, CFO, administrateurs) par nom. Retourne nom, slug, nb de déclarations, nb de sociétés liées.
search_declarations
Recherche avancée de déclarations d'initiés sur 37 marchés (AMF, SEC Form 4, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo Børs, Nasdaq Helsinki, Nasdaq Stockholm, Nasdaq Copenhagen, ASX, FMA, Euronext Dublin) avec 12 filtres combinables: période, score min/max, direction (BUY/SELL), cluster, montant, société, dirigeant, ISIN, marché, tri.
search_globalrequires: query
Recherche cross-entités en un seul appel : sociétés + dirigeants en même temps. Utile quand la requête utilisateur est ambiguë.
search_top_signals
Top signaux scorés (BUY ou SELL) sur une fenêtre glissante. Filtré par défaut sur l'univers EU strict (8 places: XPAR, XAMS, XWBO, XBRU, XHEL, XOSL, XSTO, XETR) conformément à V14e. Passer marketUniverse='all' pour interroger les 37 marchés (hors univers validé). La sortie canonique pour répondre à 'Quelles sont les meilleures opportunités en ce moment ?'
get_winning_strategy_signals
★ ARCHIVE SIGMA V14e EU (univers restreint, 8 places). Deux fenêtres hors-échantillon montrent un résidu de classement (t=5.70 / 2.84, IR 4.0 / 2.5), inférieur au coût de transaction. Ce résultat historique ne valide ni stratégie autonome, ni alpha net, ni rendement V15 (audits 168-169). 6 filtres archivés : cluster, mid-cap 200M-1B€, PDG/CFO/directeur, déclaration ≤ 7j après transaction, acquisition pure, score V14e ≥ 40. Fenêtre d'observation : T+90 jours. Pas un conseil d'investissement : contextualiser avec strategy://proof.
search_blog_articles
Recherche full-text dans les articles de blog publies (FR + EN). Filtre par categorie (regulation, methodology, market-deep-dive, etc.) et locale.
get_top_insiders
Classement des dirigeants les plus actifs ou avec le meilleur score moyen sur une fenetre. Tri par count, avgScore ou maxScore.

Enrichment

6 tools · one entity, full data

Dig into an identified entity. Typically called after a Discovery tool (slug → get_company).

get_companyrequires: slug
Fiche complète d'une société : identité, fondamentaux Yahoo (P/E, ROE, D/E), consensus analystes (reco, target), technicals (52-week, 50/200 DMA, dividend yield), dernière date de fraîcheur par bloc.
get_company_declarationsrequires: slug
Historique complet des déclarations d'initiés multi-marchés (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin) d'une société, triées par date desc.
get_insiderrequires: slug
Profil complet d'un dirigeant : sociétés auxquelles il/elle est rattaché(e) avec sa fonction, scores moyen/max historiques, genre inféré.
get_insider_declarationsrequires: slug
Historique de toutes les transactions d'un dirigeant, toutes sociétés confondues.
get_declarationrequires: amfId
Détail d'une déclaration unique par amfId, avec son backtest retail (retours T+30/T+90/T+365 depuis pubDate+1) si calculé.
explain_signal_scorerequires: amfId
Decomposition du signalScore d'une declaration : valeurs des sous-composants utilises par V14e (cluster, role, marketCap bucket, pubDelay, acquisition). Reponse formattee pour explication LLM.

System

9 tools · platform state + audits + glossary

Health, freshness, global stats, current key usage. The AI reaches for these when asked 'is the data up to date?' or 'how many credits do I have left?'

get_site_stats
Compteurs globaux : nb déclarations (total, 24h, 7j, 30j), nb sociétés, nb dirigeants, nb backtests, score moyen.
get_system_health
État de la base : reachability, latence DB, horodatage de chaque étape de la pipeline (dernière publication d'initié multi-marchés, dernier scoring, dernier backtest, dernier enrich Yahoo).
get_backtest_stats
Statistiques backtest agrégées retail : retours moyens T+30/T+90/T+365, win rate à T+90 pour BUY et SELL. Filtrable par direction, score min, période.
get_account_usage
Usage de la clé API utilisée pour cet appel : nb requêtes totales, aujourd'hui, date de création, dernier appel.
get_strategy_proof
Backtest corrigé (audit 231) : le classement servi à côté du STOXX Europe 600 aux mêmes dates, l'ensemble des achats d'initiés, la sensibilité aux frais et les fenêtres. Le champ verdict donne les rendements mesurés et l'écart moyen avec l'indice avec son intervalle de confiance à 95 % (champ servedMinusIndex). Liste des champs retirés incluse. Equivalent du resource strategy://proof mais accessible aux clients qui ne consomment que tools/call.
get_market_overview
Statistiques agrégées par marché (MIC) : nombre de sociétés couvertes, nombre de déclarations 30j, score moyen, top secteurs. Filtrable par MIC unique ou tous marchés.
list_audits
Index des audits methodologiques (docs/method-review/*.md). Retourne slug + titre + numero. Utilisez get_audit pour recuperer le contenu d'un document.
get_auditrequires: slug
Recupere le contenu integral d'un audit methodologique (markdown ou JSON). Le slug est le basename du fichier sans extension (ex: '88-v13.5-prod-audit-2026-05-20').
get_glossary
Glossaire bilingue FR + EN. Retourne toutes les entrees avec definition, formule, exemple, sources. Filtrable par slug pour recuperer une entree unique.

Composite

6 tools · cross-source in 1 call

Tuned for vague prompts or multi-step analyses. Each tool composes 3 to 6 internal requests and returns one aggregated JSON.

get_company_full_profilerequires: slug
PROFIL 360° d'une société en 1 appel : identité + fondamentaux + 10 dernières déclarations + scores agrégés + stats backtest. Utilisé pour 'donne-moi tout sur X'.
get_insider_activity_summaryrequires: slug
Résumé d'activité d'un dirigeant : toutes ses sociétés (avec fonction occupée), total achats/ventes, montant cumulé, score moyen, dernière transaction.
compare_companiesrequires: slugs
Comparaison côte-à-côte de 2 à 5 sociétés sur : capitalisation, P/E, consensus analyste, activité insider (derniers 90j), score moyen. Utilisé pour 'LVMH vs Hermès'.
find_clustered_trades
Trouve les sociétés où ≥ 2 dirigeants ont tradé dans une fenêtre ±30 jours (cluster). Signal fort en analyse insider trading.
analyze_declarationrequires: amfId
Analyse contextualisée d'une déclaration : détail + backtest + 5 autres trades récents sur la même société + fondamentaux actuels + cluster status.
watch_isinsrequires: isins
Surveillance d'un portefeuille : pour une liste d'ISINs, retourne toute l'activite insider des N derniers jours, triee par fraicheur et score.
Setup

Install guide

5 minutes, 3 steps, no code:

STEP 1
Copy the MCP URL
Below
STEP 2
Generate an API key
/account/api-keys
STEP 3
Paste into your AI
Claude, Cursor, …

The URL to copy

MCP server URL
https://insiders-trades.com/api/mcp

Per-client walkthrough

Claude Desktop

NATIVE MCP

Anthropic desktop app (Mac & Windows) · native MCP support since Claude 3.7+. The web version does not support it.

  1. Install Claude Desktop
    Download from claude.ai/download.
  2. Open the configuration file
    Claude menu → Settings → Developer → Edit config. Or open it directly:
    ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
    %APPDATA%\Claude\claude_desktop_config.json (Windows)
  3. Paste the configuration
    Add the block below. If the file already has other servers, merge into mcpServers.
  4. Restart Claude
    Quit and fully reopen the app. A plug icon appears in the bar.
claude_desktop_config.json
{
 "mcpServers": {
 "insiders-trades": {
 "type": "http",
 "url": "https://insiders-trades.com/api/mcp",
 "headers": {
 "Authorization": "Bearer sit_live_YOUR_KEY_HERE"
 }
 }
 }
}
Test

Verify the install

Once the server is configured, ask your AI this question:

« Which Insiders Trades MCP tools do you have? List them with their role. »

The AI should list 29 tools grouped into 4 families (Discovery, Enrichment, System, Composite). If it does not:

  • Check that the MCP server is actually enabled in the client settings.
  • Fully relaunch the app (not just a window reload).
  • Check the API key: curl https://insiders-trades.com/api/mcp should return a welcome JSON; adding auth and calling tools/list should return the catalog.
  • Inspect the AI client logs (Claude Desktop exposes them via View logs).

Example prompts that trigger tools

PromptExpected tool
"Give me this month's 5 best buy signals"search_top_signals
"What is LVMH? Show the fundamentals"get_company_full_profile
"Compare Bouygues and Vinci on insider activity"compare_companies
"Which companies have several directors buying in the last 30 days?"find_clustered_trades
"I hold these ISINs: FR0000121014, FR0000120271… any alerts?"watch_isins
"Is the system up to date? When was the last cron?"get_system_health
Error codes

JSON-RPC error codes

CodeNameCause
-32700Parse errorRequest body not parseable as JSON
-32600Invalid RequestInvalid JSON-RPC envelope (missing jsonrpc or method)
-32601Method not foundUnknown MCP method (other than initialize, tools/list, tools/call, ping)
-32602Invalid paramsMissing parameter or unknown tool name
-32603Internal errorInternal server error (please report)
-32000UnauthorizedAPI key missing, invalid or revoked (specific to our implementation)
Questions

FAQ

What exactly is MCP?
MCP (Model Context Protocol) is the open standard Anthropic launched in 2024 to connect AIs to external data sources. Like a universal USB-C port: your AI plugs in once and reaches everything the server exposes. Our server exposes 29 read tools over the Insiders Trades database.
Do I need an Insiders Trades API key?
Yes. Unlike the Swagger documentation we also publish freely, MCP consumes your quota. Generate a key from /account/api-keys (Pro 334 requests per UTC day, Quant 3,334 requests per UTC day).
Which clients are compatible?
Claude Desktop ≥ 3.7 (native), Cursor (native), Windsurf (native), VS Code via Continue, and any Python/JS agent framework that supports MCP (LangChain, LlamaIndex). ChatGPT does not yet support MCP natively. Use our REST API via Custom GPT Actions.
How fresh is the data?
Every MCP call queries the Postgres database live. Insider filings (AMF, SEC, BaFin, SIX, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin and more) sync several times a day, depending on the source, Yahoo fundamentals daily at 04:00 UTC. Call get_system_health to see the exact freshness at any moment.
Is there a risk of leaking sensitive data?
No. All tools are strictly READ-ONLY against the Postgres database. No write action is possible via MCP. Furthermore, the data itself is public (MAR Regulation 596/2014 for the EU, SEC/Form 4 equivalents in the US).
Does my AI call every tool on each question?
No. Modern LLMs (Claude 3.5 Sonnet+, GPT-4o…) are good at tool routing: they only call the relevant tools. In practice we see 1-4 calls per conversation. Each call counts against your daily quota.
Can I self-host the server?
The MCP server source code (/api/mcp + src/lib/mcp/) lives in the same Next.js repo as the site. If you deploy your own instance, a connection to the Postgres database is still required · the value of the service comes from the data, not the MCP server code.
CORS & browser: can I call it from front-end JS?
Yes technically · the server emits Access-Control-Allow-Origin: *. But that would expose your API key in the JS bundle. Reserve it for trusted environments (backend agent) or go through a proxy.
What is the cost per call?
Each tools/call consumes 1 request from your API quota. The initialize and ping methods are free and do not count.

Plug in your AI in 5 minutes

One URL, one key, you are live. Your favourite AI agent instantly reaches the 33,000+ multi-market filings, scored signals and backtests.