Skip to main content
Glama

search_documents

Find cited passages in quantitative finance research (1971–2026). Filter by year, author, or document to get ranked, verifiable excerpts.

Instructions

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 chunk_id et document_id, qui servent à get_passage et ne sont pas des citations — ils ne survivent pas à un re-découpage du corpus et ne disent rien à un lecteur.

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) :

  • Une période explicite (« sources published in 2022 or earlier », « papers before 2010 », « depuis 2020 ») est détectée dans la question et transformée en year_min/year_max, la clause retirée du texte : rien à faire, sauf quand la période est implicite (« récent », « d'avant la crise ») — alors la traduire soi-même en year_min/year_max (+0,10 nDCG@10).

  • Question ouverte, conceptuelle : une seule requête en langue naturelle, en anglais, qui décrit le problème ; la reformuler pour l'index n'a pas aidé (chantier C).

  • N'utiliser mode="hybrid" que pour une requête faite d'identifiants mémorisés (auteur, acronyme, numéro, année : « Fukasawa SVI B2 B3 ») ; sur toute autre question il perd (−0,11 nDCG@10 sur 130 questions, −0,19 sur les tableaux). Depuis le 5 septembre 2026 on sait pourquoi : ce chemin empile deux composants mesurés négatifs — la fusion (−0,088 pooled, 14 variantes essayées, zéro en GO) et le reranker bge-base sur pool dense (−0,076 pooled, mesuré sur ce corpus). Il reste utile pour le cas des identifiants exacts ; ailleurs, le choisir est une erreur documentée.

  • Question multi-documents ou exploratoire : compléter par search_graph / expand_entity / connect_entities sur les entités nommées de la question, puis lire les passages des deux sources ; ne pas fusionner aveuglément (mesuré : la fusion automatique perd).

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.

    **Ce que ça coûte** : ~3,2 s par requête contre 59 ms sans — un facteur **54** —
    et 2,4 Go de mémoire résidente tant que le modèle est chargé, sur une machine de
    16 Go qui tourne déjà avec 2,4 Go de swap. Ce n'est pas un réglage anodin.

    **Ce que ça rapporte** (155 questions, corpus 5530cba145) : l'or entre dans les
    cinq passages servis pour 19 questions et en sort pour 5. Net +14, et les cinq
    pertes sont un sous-ensemble strict des sept du reclassement plein.

    **Ce que ces 19 et ces 5 valent en RÉPONSE — mesuré le 8 septembre 2026** sur les
    24 questions concernées, jugées dans les deux bras : sur les 5 « pertes », **une
    seule** perd vraiment sa réponse ; les trois autres mesurables avaient une
    couverture nulle **dans les deux bras** — elles n'avaient rien à perdre. Sur les
    19 « gains », **12** gagnent vraiment une réponse. Le rapport réel est **12 pour
    1**, non 19 pour 5, et l'échange net vaut **+11 réponses**.

    **Ce que ça change pour toi** : le risque de dégrader une réponse en l'activant est
    **cinq fois plus petit** que ce que le paragraphe précédent laisse croire. Ce qui
    reste vrai, et qui est désormais la seule raison de ne pas l'activer partout, c'est
    le coût — 3,2 s et 2,4 Go sur une machine de 16 Go. Active-le sans hésiter quand la
    qualité de la réponse compte plus que trois secondes ; ne l'active pas en rafale
    sur une exploration où tu enchaînes dix recherches.

    **Quand le mettre** : quand un humain demande explicitement une recherche plus
    soignée, ou après avoir constaté qu'une première recherche a rendu des passages
    hors sujet sur une question dont on a de bonnes raisons de croire que le corpus
    porte la réponse.

    **Quand ne pas le mettre — et c'est le point important** : ne l'active pas « au
    cas où », ni systématiquement, ni selon une règle que tu te donnerais toi-même
    (longueur de la question, présence de chiffres, famille supposée). Une règle
    d'activation inventée par l'appelant est une **politique de routage non mesurée**,
    et ce dépôt a mesuré six fois que ses politiques de routage perdent. Le gain
    ci-dessus n'est valable que sur un usage à la demande ; il ne dit rien de ce que
    vaudrait une heuristique automatique, qui n'a jamais été évaluée.

    Un échec de reclassement ne casse jamais la recherche : l'ordre dense est rendu.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoauto
limitNo
queryYes
authorNo
rerankNo
year_maxNo
year_minNo
document_idNo
reclassementNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses the routing-decision prefix, the citation line semantics, the page/range display limitation, the measured effects of hybrid and reranker paths, and the fallback behavior on reclassification failure. This goes well beyond what the schema alone could convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses bold section labels for the longer protocol notes. It is verbose, especially in the repeated cost/benefit discussion of reclassement, but the detail is warranted for a tool with subtle usage rules; only minor tightening would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter search tool with no schema descriptions and no annotations, this description is complete: it covers invocation semantics, selection among siblings, expected output shape, caveats about citation vs. internal IDs, date-bound behavior, and measured costs. An agent has enough to call the tool correctly without inspecting external docs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the Args section compensates fully: every parameter (query, limit, document_id, mode, rerank, year_min/year_max, author, reclassement) is explained with defaults, semantics, and usage caveats. It even warns about forcing rerank=True in dense mode and the cost of reclassement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource — searching passages in the quantitative research corpus — and the topic/date coverage narrows it further. It also implicitly distinguishes itself from sibling tools like search_graph and get_passage by describing passage retrieval with citation output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: natural-language open questions use a single dense query; hybrid mode is reserved for memorized identifiers; rerank is recommended only when a human explicitly asks or after a failed first search; and graph tools are named as complements for multi-document or exploratory questions. It also includes measured losses for misuse, so an agent can make an informed choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.