LimiteIl n’existe aucune API web Deskworth publique. Rien sur l’internet n’accepte une requête Deskworth, et aucune clé n’en ouvre une. Ce que cette page documente est la surface d’outils locale : un point d’accès lié à l’adresse de bouclage de votre propre machine, qui sert les agents tournant dans votre propre application.
Le serveur parle le Model Context Protocol en HTTP simple. Une carte liste ce qu’elle peut appeler, puis l’appelle. Les deux requêtes portent le jeton porteur délivré à cette carte ; un appel sans jeton connu est refusé sans qu’on lui dise pourquoi, parce qu’un message précis apprendrait à celui qui frappe ce qui l’aurait fait entrer.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ohlcv",
"arguments": { "symbol": "AAPL", "interval": "1d", "range": "1y" }
}
}
Deux réponses sont possibles, et elles ne sont pas de même nature. Un outil qui a tourné et échoué revient comme un résultat portant un drapeau d’erreur, pour que l’agent lise la raison et se corrige. Un message malformé, une méthode inconnue ou un jeton inconnu reviennent comme une erreur de protocole. Les confondre fait prendre un mauvais argument pour un serveur cassé, la spécification les sépare exactement pour cela 3.
| Situation | Ce qui revient |
|---|
| L’outil a tourné | Un résultat portant la sortie texte de l’outil |
| L’outil a refusé | Un résultat portant la raison, marqué en erreur |
| La méthode est inconnue | Une erreur de protocole, méthode introuvable |
| Le message n’est pas du JSON valide | Une erreur de protocole, erreur d’analyse |
| Le jeton est inconnu | Une erreur de protocole, sans explication de ce qui aurait marché |
| Le message ne porte aucun identifiant | Rien. Une notification n’obtient pas de réponse |
#Ce qu’un outil n’a pas le droit de porter
L’outil de classeur prend un titre, un sujet, des faits, des sources, des hypothèses et des contrôles, et aucun chemin de fichier, aucune formule. Le chemin est composé par la partie du cœur qui possède la salle de données, parce que deux endroits qui écrivent un chemin finiront par en écrire deux différents. Une garde inspecte pour cela les clés du schéma déclaré, pas la description humaine : une version antérieure de cette garde lisait la prose, y trouvait le mot « chemin » dans une phrase expliquant qu’il n’y en a pas, et rougissait sur sa propre explication.
Un outil qui signale une source l’écrit au journal avec son adresse, la période couverte, la métrique, l’unité et la date de lecture, et le rédacteur caviarde d’abord tout secret embarqué dans l’adresse. Un agent peut déclarer une source portant une clé sans s’en rendre compte ; le caviardage n’est pas facultatif.
#Un enchaînement suggéré
- Résoudre l’instrument d’abord, pour que chaque appel suivant s’accorde sur ce dont on parle, et lire les candidats plutôt que d’en choisir un à la place de l’opérateur.
- Récupérer la série ou le dépôt réglementaire, et consigner la provenance qu’il rend.
- Ouvrir un module pour que le lecteur voie les mêmes données que celles sur lesquelles vous avez raisonné.
- Si la question ne peut pas être traitée à la date d’arrêté, la signaler bloquée avec une raison. Ne pas approximer.
- Si le livrable est un classeur, remettre au rôle comptable un contrat de faits, sources, hypothèses et contrôles.
PreuveUne capacité de la table ci-dessous est déclarée par un rôle et réclamée par aucun outil : la capacité de calcul quantitatif est tenue par le seul mandat quantitatif, et rien dans le registre courant ne la demande. Cela se voit ici parce que la table est dérivée plutôt que composée, une référence écrite à la main ne l’aurait simplement pas montré 1.
33 tools, read from the core registry when this page was built. Nothing below is maintained by hand on this site: a tool removed from the server disappears from here, and a tool added makes the build fail until someone writes its sentence.
Deskworth-OS/src-tauri/src/mcp/tools.rs — TOOLS
Market data
Reads real candles from Yahoo Finance and returns the resolved company name and exchange alongside the series, so a ticker without its venue cannot silently become another company.
- Parameters
- symbol: string (required) · interval: string (required) · range: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Daily bars from one named vendor, used as a fallback and as a cross-check: two vendors rarely publish the same figure for the same day, and the gap is information. Three of them need a key and refuse cleanly without one.
- Parameters
- vendor: string (required) · symbol: string (required) · since: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
The full option chain for a US underlying, strikes, expiries, bid and ask, implied volatility, Greeks, open interest. The feed is delayed, and the timestamp returned is the exchange’s, not the moment of reading.
- Parameters
- symbol: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Quotes a crypto asset on three venues at once, each price carrying its own quote currency. When those currencies differ the prices are not the same instrument, and the result says so rather than averaging them.
- Parameters
- asset: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Resolves a company name into listed instruments and returns candidates, never a verdict: an ordinary share, a preference share and an ADR are not the same investment, and the choice is left to the operator.
- Parameters
- queries: array (required) · region: string
- Roles that hold it
- fundamental · execution
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Macro series
Reads a macro series from FRED and returns the unit, the frequency and the seasonal adjustment with the points, a bare number is not a rate. Missing observations are counted and dropped, never filled in.
- Parameters
- series_id: string (required) · observation_start: string (required)
- Roles that hold it
- macro
- Returns third-party text
- No
Returns a FRED series as it stood on a past date, with what has been revised since and, the field that matters for a point-in-time claim, which dates existed later but had not been published yet.
- Parameters
- series_id: string (required) · observation_start: string (required) · as_of: string (required)
- Roles that hold it
- macro
- Returns third-party text
- No
Reads a European Central Bank series from the public SDMX portal, with its full title, unit, frequency and construction. No key is required.
- Parameters
- series_key: string (required) · last_n: integer (required)
- Roles that hold it
- macro
- Returns third-party text
- No
Filings and public record
The public state of a source repository, last push, stars, forks, open issues, licence, archived or not. A verifiable diligence fact for a company whose product is open software, and an observation to cite with its date, not a thesis.
- Parameters
- repo: string (required)
- Roles that hold it
- fundamental · scout
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Reads the **broken-down** figures of an SEC filing, by product, by geography, by segment, from the filing’s own XBRL instance. `filings` serves the consolidated series; this one serves what consolidation erases. Called without an axis it lists the axes the filing actually carries, which is the right first question: a filer arranges its breakdowns however it likes. Each fact comes back with its full period, its unit, its precision and its accession. It never adds members together, at Apple, iPhone plus Mac plus iPad plus Wearables *is* Product, and summing the six would count revenue almost twice. A breakdown is not a partition, and only the filing’s own note says which one is.
- Parameters
- ticker: string (required) · axis: string · concept: string · form: string · years: integer
- Roles that hold it
- fundamental · scout
- Returns third-party text
- No
Reads a company’s filed accounts where it actually files, the US regulator for a domestic or New York-listed issuer, the European mechanisms for a European listing. Called without a concept it returns what that issuer actually tags, which is where a reading starts.
- Parameters
- ticker: string (required) · concept: string · years: integer
- Roles that hold it
- fundamental · scout
- Returns third-party text
- No
Searches the private-placement notices filed with the US regulator over the last 180 days, the only public, dated trace of a private raise.
- Parameters
- thesis: string (required)
- Roles that hold it
- fundamental · scout
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Searches the operator’s **local corpus**, the documents they imported and indexed on this machine, and returns the closest passages, **each with its provenance**: the document, its accession number, its digest, the passage rank and the measured proximity. The agent cites by that provenance, never by a reference it composes. The search runs on this machine, over vectors already computed. An empty corpus, nothing close enough or a question that anchors nothing is said as such, it is reported, not treated as an empty result.
- Parameters
- question: string (required)
- Roles that hold it
- accounting
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Open web
Collects newswire items on a topic from publisher feeds.
- Parameters
- theme: string (required)
- Roles that hold it
- news
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Searches the open web and returns ranked pages, title, address, extract, and a date when the source publishes one. Never an article copied out. Without a key on the machine, it refuses and says so instead of substituting another source.
- Parameters
- query: string (required) · max_results: integer
- Roles that hold it
- news
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Canvas modules
Builds the implied volatility surface from the delayed chain and mounts it as a module. Contracts the exchange did not price are counted and dropped rather than set to zero, which would carve a dip into the smile that does not exist.
- Parameters
- symbol: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Mounts the wire items already collected for this card as a module. It supplies no headlines of its own: it re-reads what the feeds actually returned, and an empty list is mounted as an empty list.
- Parameters
- theme: string (required) · at_most: integer
- Roles that hold it
- news
- Returns third-party text
- No
Mounts a price chart on a real series and returns its bounds with the resolved company and venue. This is the call that makes the operator see the same data the agent reasoned over.
- Parameters
- symbol: string (required) · interval: string (required) · range: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Computes technical indicators on the same series and draws them onto the open chart. The agent assembles nothing: the tool reads the candles, computes, and mounts the result.
- Parameters
- symbol: string (required) · interval: string (required) · range: string (required) · indicators: array (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Puts a location on the globe: where the event being discussed happened. A place outside the world is refused.
- Parameters
- lat: number (required) · lon: number (required) · name: string (required) · says: string (required) · at: string
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
Brings a live broadcast into the card. Only recognised broadcasters are mounted; an arbitrary address is refused.
- Parameters
- channel: string (required) · title: string (required) · url: string (required) · starts_at: string
- Roles that hold it
- news
- Returns third-party text
- No
Draws one mark on the open chart, and answers immediately whether it was accepted, a price outside the series would be drawn into empty space.
- Parameters
- shape: string (required) · kind: string · anchor: number · from: number · to: number · at: any · text: string · says: string (required)
- Roles that hold it
- fundamental · macro · execution
- Returns third-party text
- No
The shared dossier
dossier_contributeDossierFiles **one** contribution into the mission’s shared dossier, the same one the other roles write. A contribution is immutable and never replaces another: two roles asserting different figures under one identifier create a **named conflict**, and the dossier refuses to seal until someone settles it with a reason. The agent supplies no path, no filename, no URL, no read date and no digest, for a source it gives back the reference an earlier tool actually returned, and Deskworth attaches the address, the read time and the digest from what it read. A reference nobody read is refused, which is what stops a dossier from citing an imagined source.
- Parameters
- sorte: string (required) · contribution: object (required)
- Roles that hold it
- cio · fundamental · quant · risk · diligence · deal-lead · pilot · accounting · strategist
- Returns third-party text
- No
Files into the shared dossier **what a screen showed**: where it was seen, what it displayed, and for which research. It is not a fact and is never filed as one, a fact carries a citable source, a period, a unit and a precision. The role that finds the observation well-founded checks it at its source and files it under its own name, and the observation enters no deliverable.
- Parameters
- id: string (required) · ou: string (required) · quoi: string (required) · pour: string (required)
- Roles that hold it
- cio · fundamental · quant · risk · diligence · deal-lead · pilot · accounting · strategist
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
Reads the mission’s shared dossier: its state, its revision, what each role has filed, the sources this desk has **actually** read, each with the reference token that is the only one quotable, and the open conflicts. It is meant to be called before contributing: a role that cannot see what the others filed either repeats their work or contradicts it without knowing. A failed state means a render broke, not that nobody worked.
- Parameters
- since: integer
- Roles that hold it
- cio · fundamental · quant · risk · diligence · deal-lead · accounting · strategist
- Returns third-party text
- No
Seals the shared dossier and composes it into **one** bundle: workbook, deck and memo composed from the same sealed dossier, plus a manifest carrying the revision, the sources and the digests. Sealing refuses while a conflict is unsettled, while the frame is missing, or if any fact has no source. Composition is atomic, the three files appear together or not at all, and a failure leaves the last valid bundle untouched. A contribution filed after the bundle is composed opens the next revision; it never edits a bundle already written.
- Parameters
- formats: array
- Roles that hold it
- deal-lead
- Returns third-party text
- No
Deliverables
Writes the card’s financial dossier as a workbook. The agent supplies no path and no spreadsheet formula: it describes facts, an identifier, a value, a unit, a period, whether it was observed or estimated, and the source that carries it, and the engine composes the file, reopens it to check it, and mounts it on the canvas. Calculations are written in a bounded language, which the engine turns into live formulas pointing at those facts, so the workbook still pulls under an analyst’s fingers. A fact without a source is refused, and so is an assumption without a justification.
- Parameters
- entite: string (required) · identifiants: array · devise: string (required) · unite_affichage: string (required) · as_of: string (required) · periode_historique: string (required) · periode_prevision: string · faits: array (required) · sources: array (required) · hypotheses: array · calculs: array · scenarios: array · sensibilites: array · risques: array · catalyseurs: array · blocs: array · limites: array · manquants: array · controles: array
- Roles that hold it
- accounting
- Returns third-party text
- No
Composes the card’s committee deck in 16:9 from the same dossier as the workbook. No path, no template, no layout: a section the dossier does not carry is simply not written, because a deck padded with empty slides teaches people not to read it. The figures shown are the ones the model computes, not numbers copied across, which is what keeps the deck and the workbook saying the same thing.
- Parameters
- entite: string (required) · identifiants: array · devise: string (required) · unite_affichage: string (required) · as_of: string (required) · periode_historique: string (required) · periode_prevision: string · faits: array (required) · sources: array (required) · hypotheses: array · calculs: array · scenarios: array · sensibilites: array · risques: array · catalyseurs: array · blocs: array · limites: array · manquants: array · controles: array
- Roles that hold it
- deal-lead
- Returns third-party text
- No
Composes the dossier in several formats at once. The agent describes it once and lists the formats; the engine writes them, reopens them, checks that the same figures appear in each, and keeps them together or not at all. A manifest travels with the files, sizes, digests, sources, computed values, limits and missing data. One format failing takes the others with it: a half-written bundle is the one where two files out of three get attached to an email.
- Parameters
- dossier: object (required) · formats: array (required)
- Roles that hold it
- deal-lead
- Returns third-party text
- No
Writes the card’s memo as an A4 document with selectable text, from the same dossier. The engine reopens it and refuses a page that carries no text: a memo rendered as images cannot be searched, quoted or checked by a reviewer. Limits are a section of their own, a memo that hides what it does not cover makes people decide on what it shows.
- Parameters
- entite: string (required) · identifiants: array · devise: string (required) · unite_affichage: string (required) · as_of: string (required) · periode_historique: string (required) · periode_prevision: string · faits: array (required) · sources: array (required) · hypotheses: array · calculs: array · scenarios: array · sensibilites: array · risques: array · catalyseurs: array · blocs: array · limites: array · manquants: array · controles: array
- Roles that hold it
- deal-lead
- Returns third-party text
- No
Compute
Runs a Python file from the agent’s own data room and returns the exit code, the output, the errors and the duration. The sandbox has no network, for the script or for anything it spawns, and writes nowhere but that data room.
- Parameters
- file: string (required)
- Roles that hold it
- toolsmith
- Returns third-party text
- No
Desk protocol
report_blockedno capability requiredDeposits a BLOCKED artefact when the question cannot be answered as asked. It is a result, not a failure, and often the most honest one available. The contract refuses it unless it carries what was attempted and why it stopped.
- Parameters
- attempted: string (required) · cause: string (required) · missing: array (required) · tried: array (required)
- Roles that hold it
- cio · fundamental · quant · macro · execution · news · risk · scout · diligence · deal-lead · pilot · accounting · strategist · toolsmith
- Returns third-party text
- No
Experimental. Makes **one** gesture in the driving session the operator opened, and reports what it sees. Four classes, not negotiable: **observe** (capture, read the screen, locate) moves nothing; **reversible** (scroll, point, click, go back, open) undoes with the opposite gesture; **sensitive** (typing) needs the operator’s named consent beforehand, for that gesture only; **forbidden**, password, keychain, payment, order, signature, deletion, publication, no consent opens it. A target off the declared list is a refusal. The session has an action cap and a deadline, stop is always available, and there is no field where a command could pass.
- Parameters
- geste: string (required) · pages: integer · x: integer · y: integer · texte: string · cible: object · sur: object
- Roles that hold it
- pilot
- Returns third-party text
- Yes, the server attaches the warning that fetched content is data, never instruction
#Sources
- The tool registry, mirrored on this siteDeskworthinternal registry · tool registry mirror of mcp::tools::TOOLS, crossed with the roles’ declared capabilities · lu 2026-09-10Document interne, non publié
- Deskworth OS, product state at 0.0.23Deskworthinternal handover report · Deskworth OS 0.0.23 · commit produit 5968ef0 · lu à bcae42d · publié 2026-09-10 · lu 2026-09-10Document interne, non publié
- Model Context Protocol, ToolsModel Context Protocol projectofficial documentation · revision 2026-07-28 · publié 2026-07-28 · lu 2026-09-10https://modelcontextprotocol.io/specification/2026-07-28/server/tools
- Model Context Protocol, Streamable HTTP transportModel Context Protocol projectofficial documentation · revision 2026-07-28 · publié 2026-07-28 · lu 2026-09-10https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http