quant-rag
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_documentsA | Cherche des passages dans le corpus de recherche quantitative (corpus dont la taille n'a pas pu être lue). Couvre la volatilité et les options, la microstructure et l'exécution, les facteurs et
l'alpha, la construction de portefeuille et le ML appliqué à la finance (1971–2026).
Retourne des extraits classés, précédés de la décision de routage. Chaque extrait porte
une ligne « citer : » — auteurs, année, titre, page — et c'est la seule à recopier
dans une réponse : l'année fait partie de l'information, le corpus mélangeant des travaux
de 1987 et des preprints de 2026. La ligne « interne : » porte Les pages affichées sont celles d'un lecteur, et une plage quand le passage en couvre plusieurs : le système ne dispose pas d'un pointeur de phrase, et annoncer une page exacte pour un passage à cheval serait une précision qu'il n'a pas. Protocole d'usage, mesuré sur 155 questions (benchmark/eval_protocol.py) :
Args: query: la question, en anglais de préférence (le corpus est anglophone). limit: nombre de passages à retourner (défaut 5). document_id: restreindre à un seul document. mode: "auto" (défaut) = recherche sémantique seule (dense) — depuis le banc de 150 questions, aucune règle automatique ne fait mieux. "hybrid" ajoute BM25+fusion+rerank : à demander explicitement quand la question est faite d'identifiants exacts dont l'utilisateur se souvient (Fukasawa, SVI, ITRAXX 2007, arXiv 1206.0682), et seulement dans ce cas — sur une question en langue naturelle, et sur les tableaux, l'hybride fait moins bien que le dense. rerank: laisser vide pour suivre le mode (activé en hybrid, désactivé en dense). True/False force. Mesuré : bge-reranker-base aide sur un pool hybride et nuit sur un pool dense (−0,076 nDCG@10 pooled, −0,147 sur les questions simples). Ne pas forcer rerank=True en mode dense. year_min: ne garder que les documents publiés à partir de cette année (inclus). year_max: ne garder que les documents publiés jusqu'à cette année (inclus). Une borne d'année exclut les documents dont l'année est inconnue (un nombre non lu de documents). Laissées vides, une période explicite dans la question est détectée et appliquée (la ligne « période: » de la réponse le dit) ; une borne donnée prime toujours. author: ne garder que les documents d'un auteur (sous-chaîne du nom, insensible aux accents et à la casse : "lopez de prado", "Gatheral", "Jacquier"). reclassement: "selectif" reclasse les dix premiers candidats par Qwen3-Reranker-0.6B en protégeant le rang 1 dense. Laisser vide (défaut) dans l'immense majorité des appels. |
| get_passageA | Retourne le passage complet d'un chunk_id, avec ses voisins immédiats, pour citation. Args:
chunk_id: la clé interne rendue par |
| list_documentsA | Liste bibliographique des documents du corpus, du plus récent au plus ancien, sans recherche vectorielle. Args: author: sous-chaîne du nom d'un auteur (insensible aux accents et à la casse). year_min: année de publication minimale (inclus). year_max: année de publication maximale (inclus). text: sous-chaîne du titre. limit: nombre maximal de lignes (défaut 50). |
| timelineA | Chronologie d'un sujet : le meilleur passage de chaque document, groupé par année de publication. Utile pour voir comment une idée a évolué (rough volatility 2014 → 2026) ou pour distinguer les travaux fondateurs des preprints récents. Args: topic: le sujet, formulé comme une question ou un intitulé. year_min: borne basse (inclus). year_max: borne haute (inclus). limit: nombre de documents (défaut 20). |
| verify_citationA | Vérifie qu'une citation se trouve vraiment dans le document qu'elle nomme. À utiliser avant d'affirmer qu'un document dit quelque chose, et surtout quand la citation vient d'ailleurs que d'un passage servi à l'instant : d'une note prise plus tôt, d'un résumé, d'une réponse antérieure. Une citation recopiée de travers, recollée à partir de deux endroits ou reformulée reste plausible à la lecture — c'est précisément ce que cet outil détecte, et rien d'autre ne le détecte. La vérification est déterministe : aucune génération, aucun modèle de langue. La
citation est normalisée (ligatures, Ce que rend l'outil :
Args: document_id: la clé interne du document, servie par la ligne « interne : ». quote: le texte cité, tel qu'on s'apprête à l'affirmer. Une phrase ou deux suffisent ; au-delà d'un paragraphe, une reformulation invisible fera échouer la vérification pour une raison sans rapport avec l'honnêteté de la citation. chunk_id: facultatif, restreint la recherche du repli « texte servi » à ce passage. |
| verify_citationsA | Vérifie plusieurs citations d'un coup — même contrat que Args:
citations: liste d'objets |
| corpus_statusA | Décrit l'index : documents, passages, couverture des métadonnées (années, auteurs), backend et device, et l'état du graphe d'entités (nombre d'entités, relations, état du corpus sur lequel il a été bâti). |
| search_graphA | Cherche dans le graphe d'entités : les passages qui MENTIONNENT une entité dont le nom contient Complémentaire de search_documents (sémantique) : ici la correspondance est nominale et exacte — « Gatheral » retourne les passages où Gatheral est cité, « SVI » ceux où SVI apparaît, même quand la question sémantique ne les ferait pas remonter. Les entités ont été extraites par GLiNER2 sur chaque passage (personnes, organisations, instruments, concepts de marché, mesures, méthodes, jeux de données). Même format de sortie que search_documents : source citable, pages, chunk_id (pour get_passage), plus les entités reconnues dans le passage. Croiser avec search_documents : le graphe ne connaît que les noms, pas le sens. Args: query: nom d'entité ou fragment (« Gatheral », « rough volatility », « SVI », « S&P 500 »). Casse et accents ignorés ; « Lopez de Prado » trouve « López de Prado ». entity_type: restreindre à un type : person, organization, financial_instrument, market_concept, measure, method, dataset. relation: ne garder que les passages où l'entité est tête ou queue d'une relation de ce type : measures, predicts, causes, depends_on, correlates_with, applies_to, uses_method, compares_with, is_a, part_of. top_k: nombre de passages (défaut 10, au plus 2 par document). |
| expand_entityA | Entités reliées à Répond à « quelles méthodes dépendent de la rough volatility ? », « à quoi SVI est-il comparé ? ».
Chaque voisin porte la relation et son sens (→ : l'entité est la tête, ← : la queue), le nombre
de passages qui soutiennent le lien et jusqu'à trois chunk_id à lire avec get_passage. Les
relations viennent de GLiNER2 (seuil 0,5) et sont clairsemées : un lien attesté par un seul
passage est une piste, pas un fait ; lire le passage avant de l'affirmer. Sans Args: entity_name: nom de l'entité (« rough volatility », « Heston model », « Gatheral »). L'entité exacte et ses variantes de nom (« rough volatility models ») sont réunies. relation: une seule relation (measures, predicts, causes, depends_on, correlates_with, applies_to, uses_method, compares_with, is_a, part_of) ; vide = toutes. entity_type: type de l'entité de départ, si le nom est ambigu (person, market_concept…). limit: nombre de voisins (défaut 20), classés par nombre de passages qui les attestent. |
| connect_entitiesA | Passages et documents qui mentionnent LES DEUX entités (« SVI » et « rough volatility »). Pour trouver où deux idées se rencontrent dans le corpus. Liste les documents par nombre de passages communs, puis les meilleurs passages avec chunk_id. Aucun passage commun est une information en soi : les deux entités ne sont jamais citées ensemble dans un même passage. Args: entity_a: première entité (nom ou fragment, variantes réunies). entity_b: seconde entité. top_k: nombre de passages (défaut 10, au plus 2 par document). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Most tools have clearly distinct purposes: search_documents (semantic search), search_graph (entity mention search), expand_entity (entity neighbors), connect_entities (co-mentions), get_passage (retrieve chunk), verify_citation/verify_citations (verification), list_documents (bibliographic listing), timeline (chronological overview), corpus_status (index status). The only potential confusion is between search_documents and search_graph, but their descriptions explicitly contrast semantic vs. nominal matching. verify_citation and verify_citations are clearly the same operation with batch vs. single, which is acceptable.
Tool names mostly follow a verb_noun pattern: search_documents, search_graph, get_passage, list_documents, expand_entity, connect_entities, verify_citation, verify_citations, corpus_status, timeline. The pattern is consistent (imperative verb + object), though corpus_status and timeline are noun-only rather than verb_noun, which is a minor deviation. verify_citation vs verify_citations is a clear plural variant.
10 tools is well within the ideal 3-15 range for a RAG/quant-research server. Each tool serves a distinct function: corpus status, search (semantic, graph, timeline), retrieval (get_passage), citation verification (single and batch), document listing, and entity graph exploration (expand, connect). No tool feels redundant or superfluous.
The tool surface covers the full RAG workflow: search (semantic, entity-based, timeline), passage retrieval, citation verification, document listing, corpus status, and entity graph exploration. The domain is a read-only research corpus, so CRUD operations are not expected. The only minor gap might be a tool to get full document text, but get_passage with neighbors and list_documents cover most needs, and the corpus is described as passage-based.