Skip to main content
Glama

Server Details

Read and search your Instagram, WhatsApp and LinkedIn DMs and prepare follow-ups you approve.

Ownership verified
Status
Healthy
Uptime
46.4% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
abraham-rajoelina/ficiel-mcp
GitHub Stars
0
Server Listing
Ficiel MCP

TDQS

B3.3/5.0

Scored across 83 tools

Disambiguation2/5

Several clusters overlap heavily: stats/analytics tools (ficiel_get_stats, ficiel_get_stats_by_channel, ficiel_get_funnel, ficiel_synthese, ficiel_compare_periods, ficiel_afficher_analyse), lead views (ficiel_get_lead, ficiel_fiche_prospect, ficiel_get_lead_context, ficiel_get_lead_by_handle, ficiel_get_conversation), and relance/card workflows (ficiel_list_pending_cards, ficiel_prepare_followup, ficiel_carte_relance, ficiel_approve_card, ficiel_envoyer_relance). Descriptions are detailed, but with 83 tools an agent must read deeply to distinguish near-neighbors.

Naming Consistency2/5

The ficiel_ prefix and snake_case are consistent, but language and grammatical style are mixed: verb-first English (get_lead, send_message), verb-first French (afficher_analyse, changer_etape), and noun phrases (fiche_prospect, carte_relance, synthese, laisses_en_vu, statut_envoi). This makes the surface less predictable despite the common prefix.

Tool Count1/5

83 tools is far beyond the appropriate scope for one MCP server, exceeding the 50+ extreme-mismatch threshold. The volume forces agents to navigate many closely related read, display, and relance operations rather than a well-scoped set.

Completeness4/5

Coverage is broad: contacts, conversations, messaging, media, scheduling, tags, stages, automations, analytics, agent configuration, templates, voice clips, and cash metrics are all represented. Minor gaps remain in deletion/administration areas (no delete_tag, delete_template, delete_stage, or team write operations), but core workflows are well covered.

Available Tools

83 tools
ficiel_add_noteAjouter une noteInspect

Ajoute une note libre sur la fiche d'un contact. Portée « write » requise. Visible dans Ficiel comme une note manuelle.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesTexte de la note.
lead_idYesIdentifiant du contact (lead_id).
ficiel_add_tagPoser ou retirer un tag
Idempotent
Inspect

Pose (ou retire) un tag EXISTANT de votre organisation sur un contact. Ne crée jamais de tag : utilisez les noms de ficiel_list_tags_and_stages, ou créez-le d'abord avec ficiel_create_tag. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoadd = poser, remove = retirer.add
lead_idYesIdentifiant du contact (lead_id).
tag_nameYesNom exact du tag (insensible à la casse).
ficiel_afficher_analyseAfficher une analyseA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN : met en forme une analyse déjà calculée à partir des données Ficiel (titre, indicateurs clés, tableau, graphique, conclusion), au design de Ficiel, en clair ou en sombre. Pour une analyse sur mesure faite de plusieurs lectures : résultats par message d’ouverture, comparaison de comptes ou de séquences, résumé de compte. Aucune lecture, aucune écriture : l’écran affiche exactement les valeurs reçues et ne calcule rien.

ParametersJSON Schema
NameRequiredDescriptionDefault
titreYes
periodeNoEx. « 30 derniers jours », « du 9 sept. au 8 oct. ».
tableauNo
graphiqueNo
conclusionNo
sous_titreNo
indicateursYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds a nuance annotations do not cover: 'Aucune lecture, aucune écriture' — it neither fetches nor mutates, it only renders the values it is handed. That pure-presentation, no-computation behaviour is genuinely additive. It stops short of describing output structure or any rendering limits.

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?

Three sentences with the core action front-loaded in caps ('AFFICHE UN ÉCRAN'), followed by use-case context and then the read/write disclaimer. It is appropriately sized and mostly waste-free, though the light/dark mention is a minor loose end.

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

Completeness3/5

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

For a 7-parameter tool with nested objects and no output schema, the description orients the agent well on purpose and behaviour but leaves the nested parameter contracts (tableau, graphique, indicateurs.evolution) to the schema. Adequate but with clear gaps given the complexity.

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

Parameters3/5

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

Schema description coverage is only 14% across 7 params with nested objects, so the description must compensate — and it does name the key blocks (titre, indicateurs, tableau, graphique, conclusion). But it gives no format or constraint detail for the nested structures (row/column limits, graph type enum, evolution object), and 'en clair ou en sombre' alludes to a theme option that has no corresponding schema property, adding mild ambiguity.

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?

States a specific verb and resource: it renders ('met en forme') an already-computed analysis into a Ficiel-styled screen, and enumerates the rendered blocks (titre, indicateurs, tableau, graphique, conclusion). The phrase 'analyse déjà calculée' and 'ne calcule rien' clearly separates it from sibling compute/read tools such as ficiel_synthese or ficiel_get_stats.

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

Usage Guidelines4/5

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

Gives a concrete context ('analyse sur mesure faite de plusieurs lectures : résultats par message d'ouverture, comparaison de comptes ou de séquences, résumé de compte'), which tells the agent when this tool is the right fit. It stops short of naming an explicit alternative or a when-not condition, so it is a clear context rather than full routing.

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

ficiel_approve_cardApprouver une carte de relance (envoie le message)A
Destructive
Inspect

ENVOIE le message d'une carte de relance à un vrai contact, au nom de l'organisation, par le chemin d'envoi unique de l'application (origine kord_card) : liste noire, étape protégée, tag bloquant, pause du canal, plafond des relances et espacement ; la carte doit être celle de la conversation visée. Un garde-fou qui refuse laisse la carte en attente et en donne la raison. recipient est obligatoire : le nom du contact tel que ficiel_list_pending_cards le donne, confronté au vrai contact avant tout envoi. edited_text (4000 caractères au plus) envoie un texte corrigé à la place de celui de Kord. Cartes texte seulement. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesIdentifiant de la carte (card_id).
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
edited_textNoTexte corrigé à envoyer à la place de celui de la carte.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already flag destructive/openWorld/non-idempotent, and the description adds substantial context beyond them: the six guard checks (blacklist, protected stage, blocking tag, channel pause, follow-up cap, spacing), the fact that a refusing guard leaves the card pending with a reason, the pre-send identity comparison against the real contact, and the required write scope. This is exactly the behavioral disclosure an agent needs before an irreversible send.

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?

Front-loaded with the send action in caps, and nearly every clause carries operational information (guards, preconditions, scope). It is a dense run-on paragraph rather than structured sentences, which slightly hurts scannability but wastes little.

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

Completeness4/5

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

For a destructive, non-idempotent send with no output schema, the description covers failure behavior (card stays pending, reason returned), preconditions and required scope. It does not say what a successful approval returns or whether the send is confirmed synchronously, which is the remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema's own recipient description already spells out the case/accent-insensitive comparison, the "sans nom" convention, and the recipient_mismatch refusal. The description restates recipient's mandatory status and edited_text's 4000-character limit without adding new syntax or format meaning, so baseline 3 applies.

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?

Opens with a capitalized verb+resource ("ENVOIE le message d'une carte de relance") and specifies the mechanism (the app's single send path, origine kord_card) and the target (a real contact, on behalf of the organization). This clearly separates it from ficiel_reject_card, ficiel_defer_card and ficiel_list_pending_cards, so an agent can route correctly without opening schemas.

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

Usage Guidelines4/5

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

Gives clear context: the card must belong to the intended conversation, recipient must come from what ficiel_list_pending_cards returns, and text cards only. It stops short of naming the alternative actions (reject_card/defer_card) or stating when not to approve, so the routing guidance is implied rather than explicit.

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

ficiel_approve_learned_patternsAdopter des règles apprisesA
Idempotent
Inspect

Active des règles proposées par Kord (état de départ : proposed). Kord les suit ensuite dans ses relances ; ficiel_dismiss_learned_patterns les écarte à nouveau. Une règle qui n'est pas dans l'état de départ attendu n'est pas touchée ; le nombre de règles modifiées est rendu (updated). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idsYesIdentifiants des règles (pattern_id, voir ficiel_list_learned_patterns).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare write/idempotent/non-destructive; the description adds the real behavioral facts: the state-gate (rules outside the expected state are left untouched), the return value (count of updated rules), and the required 'write' scope. This is exactly the context an agent needs before mutating state.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and starting state, then the sibling alternative, then the partial-failure semantics and return value. No filler.

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 single-parameter mutation with no output schema, the description covers the precondition, the effect on Kord's follow-ups, the non-matching-rule behavior, the return value, and the auth scope. Nothing an agent needs to call it safely is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is already documented as pattern_id UUIDs with a pointer to ficiel_list_learned_patterns. The description adds no further meaning about the parameter (e.g. batch limits or ordering), so the baseline 3 applies.

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?

States a specific verb (active/adopte) and resource (règles apprises proposées par Kord), plus the starting state 'proposed'. The sibling it is not — ficiel_dismiss_learned_patterns — is named directly, so an agent can distinguish the two without opening a schema.

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

Usage Guidelines4/5

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

Names the alternative (dismiss) and its effect, and gives a precondition: only rules in the expected 'proposed' state are touched, others are skipped. That is close to explicit when/when-not guidance, though it never states a positive trigger scenario beyond the implied 'a rule is proposed'.

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

ficiel_archive_conversationArchiver une conversationA
Idempotent
Inspect

Sort la conversation de la boîte de réception ; elle revient d'elle-même au prochain message du contact, et ficiel_unarchive_conversation l'y remet. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: states reversibility, that no message is sent, that nothing is deleted, that an archived conversation auto-returns on the contact's next message, that a no-op returns 'already_in_state', and that a 'write' scope is required. Annotations already cover destructiveHint=false and idempotentHint=true, but the description adds the concrete consequences an agent needs.

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

Conciseness5/5

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

Front-loads the effect ('Sort la conversation de la boîte de réception') and then packs the auto-return rule, reversibility, no-op behavior, and permission requirement into a few dense clauses without repetition. Every sentence adds a distinct fact.

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?

No output schema exists, yet the description still discloses the meaningful response signal (already_in_state), the reversibility semantics, and the required scope. Nothing an agent needs in order to call this mutation safely and interpret the result is missing.

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

Parameters3/5

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

Only one parameter, conversation_id, with 100% schema description coverage, so the baseline is 3. The description adds no syntax or format information beyond what the schema provides; the only extra hint is that the conversation may be 1:1 or group.

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?

States a specific verb+resource ('Sort la conversation de la boîte de réception') and clarifies it applies to both 1:1 and group conversations. It explicitly names the inverse sibling, ficiel_unarchive_conversation, so an agent can distinguish archive from unarchive without reading either schema.

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

Usage Guidelines4/5

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

Names the counter-tool (ficiel_unarchive_conversation) and explains the automatic-return condition (next inbound message), which effectively tells the agent when archiving is appropriate versus permanent removal. It does not mention the bulk variant ficiel_bulk_archive as an alternative for multi-conversation cases, so guidance is clear but not exhaustive.

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

ficiel_blacklist_leadPoser ou retirer la liste noire
Idempotent
Inspect

Pose ou retire la liste noire sur un contact. Portée « write » requise. ACTION À CONSÉQUENCE : un contact en liste noire ne peut plus recevoir aucun message, ni manuel ni automatique, tant que la liste noire n'est pas retirée. Réutilise le même mécanisme que l'interface (tag système « Blacklist » + registre organisation), pas un raccourci parallèle.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoMotif, conservé si vous posez la liste noire (optionnel).
lead_idYesIdentifiant du contact (lead_id).
blacklistedYestrue = poser la liste noire, false = la retirer.
ficiel_book_slotRéserver un créneauA
Destructive
Inspect

Réserve dans l'agenda connecté le créneau qu'un contact a ACCEPTÉ, parmi ceux de ficiel_get_slots. Le créneau est revérifié libre juste avant. Calendly exige l'email du contact (paramètre email, sinon celui de sa fiche) et une offre Calendly payante ; sinon l'outil refuse en le disant, et il faut envoyer le lien. Succès : le rendez-vous est créé, la fiche passe en « RDV pris » avec sa date. N'envoie aucun message. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoEmail du contact, s'il l'a donné.
startYesDébut du créneau, EXACTEMENT la valeur start renvoyée par ficiel_get_slots.
lead_idYesIdentifiant du contact (lead_id).

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the just-in-time re-verification of slot availability, the exact refusal behavior and its cause (Calendly paid plan/email), the side effect on the record ('RDV pris' with date), and explicitly that no message is sent. This is the kind of context annotations cannot carry.

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?

Front-loads the core action and keeps every sentence functional (input source, re-verification, preconditions, success effect, no-message constraint, scope). It is dense but not padded; a slightly tighter phrasing on the refusal clause 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?

With no output schema, the description still covers the resulting state (appointment created, record moved to 'RDV pris' with date) and the no-message behavior. For a 3-parameter mutation tool, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: email is required by Calendly and falls back to the contact's record if omitted, and start must be exactly the value returned by ficiel_get_slots. This clarifies dependency and fallback logic not expressible in the schema alone.

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?

States a specific verb (réserve) and resource (le créneau qu'un contact a ACCEPTÉ) within the connected calendar, and names the sibling that produces the input (ficiel_get_slots). An agent can distinguish it from ficiel_mark_booked or ficiel_schedule_message without opening a schema.

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

Usage Guidelines4/5

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

Makes the selection condition explicit: the slot must be one the contact accepted, sourced from ficiel_get_slots. It also states refusal conditions (missing email, no paid Calendly plan) and the write scope. It stops short of naming the sibling to use instead (e.g. ficiel_mark_booked) when booking isn't possible.

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

ficiel_bulk_archiveArchiver ou désarchiver plusieurs contacts
Idempotent
Inspect

Archive (archive=true) ou désarchive (archive=false) jusqu'à 50 contacts ET leurs conversations : ils quittent la boîte et la liste Contacts, comme l'archivage en lot de l'application. Réversible. EN DEUX TEMPS : sans confirm_token, SIMULATION (rien n'est écrit) avec les contacts concernés et les ignorés ; avec le jeton rendu et les mêmes paramètres, exécution. Un contact en liste noire n'est jamais touché. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYestrue = archiver, false = désarchiver.
lead_idsYesContacts visés (lead_id), de 1 à 50. Liste explicite : obtenez-les avec ficiel_list_conversations, ficiel_search ou ficiel_find_dormant_leads.
confirm_tokenNoAbsent = SIMULATION, rien n'est écrit. Présent = exécution : le jeton rendu par la simulation, avec exactement les mêmes paramètres et la même liste (valable 5 minutes).
ficiel_bulk_set_stageChanger l'étape de plusieurs contacts
Idempotent
Inspect

Déplace jusqu'à 50 contacts vers une étape du pipeline. EN DEUX TEMPS : un premier appel sans confirm_token est une SIMULATION (rien n'est écrit) qui liste les contacts qui changeraient, ceux ignorés et pourquoi (introuvable, supprimé, liste noire, déjà à cette étape), signale une étape protégée (plus d'envoi automatique), et rend un jeton ; le second appel, avec ce jeton et les mêmes paramètres, exécute. Chaque changement est journalisé. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idsYesContacts visés (lead_id), de 1 à 50. Liste explicite : obtenez-les avec ficiel_list_conversations, ficiel_search ou ficiel_find_dormant_leads.
stage_keyYesÉtape cible (stage_key de ficiel_list_tags_and_stages).
confirm_tokenNoAbsent = SIMULATION, rien n'est écrit. Présent = exécution : le jeton rendu par la simulation, avec exactement les mêmes paramètres et la même liste (valable 5 minutes).
ficiel_bulk_tagPoser ou retirer un tag sur plusieurs contacts
Idempotent
Inspect

Pose (add) ou retire (remove) UN tag existant sur jusqu'à 50 contacts. EN DEUX TEMPS : sans confirm_token, SIMULATION (rien n'est écrit) avec les contacts concernés, les ignorés et pourquoi, et un avertissement si le tag exclut des relances ou bloque les envois automatiques ; avec le jeton rendu et les mêmes paramètres, exécution. Les tags système (Blacklist, Ignorer) sont refusés en lot. Ne remplace jamais les autres tags d'un contact. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoadd = poser, remove = retirer.add
lead_idsYesContacts visés (lead_id), de 1 à 50. Liste explicite : obtenez-les avec ficiel_list_conversations, ficiel_search ou ficiel_find_dormant_leads.
tag_nameYesNom exact du tag (insensible à la casse).
confirm_tokenNoAbsent = SIMULATION, rien n'est écrit. Présent = exécution : le jeton rendu par la simulation, avec exactement les mêmes paramètres et la même liste (valable 5 minutes).
ficiel_cancel_scheduledAnnuler un message programméA
DestructiveIdempotent
Inspect

Annule un message programmé encore en attente. Portée « write » requise. Exactement le bouton « Annuler » du composer : le message n'existe jamais pour le contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_idYesIdentifiant du message programmé (schedule_id, voir ficiel_list_scheduled).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already disclose destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new context: that it requires 'write' scope and that the cancelled message 'n'existe jamais pour le contact', clarifying the observable effect (no trace for the contact) beyond the annotation flags.

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

Conciseness5/5

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

Three short sentences, zero filler, with the action and its pending-state constraint front-loaded before the scope and effect notes. Every clause carries information.

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

Completeness4/5

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

For a one-parameter, no-output-schema mutation with rich annotations, the description covers action, precondition, scope, and user-visible effect. It stops short of stating error behavior for a non-pending or unknown schedule_id, which leaves a small gap.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter already documents its UUID format and points to ficiel_list_scheduled as the source of the ID. The description adds nothing further about the parameter, so the baseline 3 applies.

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?

States a specific verb+resource ('Annule un message programmé') and constrains it with 'encore en attente', which cleanly separates it from ficiel_list_scheduled and ficiel_schedule_message. An agent immediately understands this cancels, not lists or creates.

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

Usage Guidelines4/5

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

The phrase 'encore en attente' gives a clear applicability condition, and the required 'write' scope is stated, so the agent knows when it can and cannot be used. It doesn't explicitly name a fallback for already-sent or already-cancelled messages, but the pending-state qualifier covers the main routing decision.

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

ficiel_carte_relanceCarte de relanceA
DestructiveIdempotent
Inspect

AFFICHE UN WIDGET : la relance préparée par Kord pour UNE conversation, avec le contexte (dernier échange, raison de relancer), un texte modifiable et les boutons Envoyer et Ne plus proposer. Si une relance attend déjà pour cette conversation, elle est reprise telle quelle ; sinon Kord prépare un brouillon, comme le lot de relances de Ficiel (compté dans le forfait mensuel de conversations). Avec text, ce texte est seulement affiché dans la carte à la place de celui de Kord : il n’est pas enregistré et le brouillon de Kord est conservé. Aucun message n’est envoyé et rien n’est supprimé : un brouillon périmé est marqué remplacé, jamais effacé. L’envoi demande le clic de l’utilisateur sur Envoyer.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoTa version du message, qui remplace celle de Kord dans la carte.
conversation_idYesLa conversation (conversation_id de ficiel_laisses_en_vu, ficiel_list_conversations ou ficiel_search).

TDQS

A4.2/5.0
Behavior4/5

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

Touches every behavioral trait that matters beyond the annotations: an existing pending follow-up is reused as-is (matching idempotentHint), otherwise a draft is generated and billed against the monthly conversation quota, `text` is display-only and never persisted, no message is sent, and a stale draft is marked replaced rather than erased. There is mild tension with destructiveHint=true since the text says 'rien n'est supprimé', but the description's 'marqué remplacé' explains the mutation model rather than contradicting it.

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 long (six sentences) but densely front-loaded: the widget purpose and its contents come first, followed by state-reuse, billing, the `text` caveat, and the no-send/no-delete guarantees. Each clause carries a distinct behavioral constraint, so there is little filler despite the length.

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?

With no output schema, the description must describe what the agent gets back — and it does, listing the card's rendered elements (dernier échange, raison de relancer, texte modifiable, boutons). Combined with annotations and full schema coverage, an agent has everything needed to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3), and the description still adds real meaning: it clarifies that `text` overrides Kord's wording only in the rendered card, is not saved, and does not replace the underlying draft — a semantic distinction the schema field alone does not convey. conversation_id semantics are covered by the schema's cross-references to sibling tools.

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 description opens with a specific verb+resource ('AFFICHE UN WIDGET : la relance préparée par Kord pour UNE conversation') and immediately enumerates the card's content (contexte, texte modifiable, boutons Envoyer / Ne plus proposer). It implicitly separates itself from ficiel_envoyer_relance by stating the send only happens on the user's click, so an agent can tell what this tool does and does not do.

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

Usage Guidelines3/5

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

Usage is only implied: the agent can infer this is the tool that surfaces/prepares a follow-up card for one conversation, and that ficiel_envoyer_relance handles actual sending. However, no sibling (ficiel_envoyer_relance, ficiel_prepare_followup, ficiel_ne_plus_proposer) is named as an alternative, and no explicit when-to-use / when-not-to-use condition is given.

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

ficiel_changer_etapeChanger d’étape (bouton du widget)B
Idempotent
Inspect

Geste du bouton Changer d’étape de la fiche : passe le contact à une autre étape du pipeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
stageYesClé d’étape (stage_key).
lead_idYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, idempotent, non-destructive, closed-world mutation, so the safety profile is covered. The description usefully adds that it is the widget/fiche button gesture (single-lead scope), but says nothing about side effects such as automation or relance triggers firing on a stage change, and no output schema exists.

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?

A single, tight sentence with no filler; only minor deduction because it front-loads the UI gesture context ahead of the actual action verb.

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

Completeness3/5

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

For a simple two-parameter mutation with annotations covering idempotency and destructiveness, the description is minimally adequate. It is nonetheless incomplete on the two things an agent most needs: what it returns / what changes as a side effect, and how it differs from set_stage and bulk_set_stage.

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

Parameters2/5

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

Schema coverage is only 50%: 'stage' is documented as a stage_key while 'lead_id' carries no description (only format: uuid). The description's phrase 'une autre étape du pipeline' restates the concept without adding key syntax, valid values, or how to obtain a stage_key (e.g. via list_tags_and_stages), so it fails to compensate for the gap.

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

Purpose4/5

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

The description names a specific verb and resource: it moves the contact ('passe le contact') to another pipeline stage. However, it never distinguishes itself from the clearly overlapping siblings ficiel_set_stage and ficiel_bulk_set_stage, so an agent cannot tell from the text which of the three stage-changing tools applies.

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

Usage Guidelines2/5

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

The only usage signal is the UI framing ('Geste du bouton Changer d'étape de la fiche'), which implies it is the single-lead, record-view action, but this is left to inference. There is no when-to-use, when-not-to-use, or explicit routing against set_stage / bulk_set_stage, the obvious alternatives.

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

ficiel_compare_periodsComparer deux périodesA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (chaque indicateur, avant et après). Compare la période en cours (period_days derniers jours) à la période équivalente immédiatement précédente, avec les deltas. La fenêtre ne remonte jamais avant l'inscription de l'organisation.

ParametersJSON Schema
NameRequiredDescriptionDefault
period_daysNoLongueur de chaque fenêtre en jours (défaut 30).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, closed-world, non-destructive. The description adds genuine behavior beyond them: it renders a screen (AFFICHE UN ÉCRAN) rather than returning a plain data payload, and it discloses a guardrail that the window never reaches back before the organization's signup. It does not, however, describe rate limits or the exact delta format.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the most important behavioral fact (that it displays a screen) followed by what is compared and the signup-boundary constraint. No filler.

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

Completeness4/5

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

For a one-parameter, read-only, idempotent tool with full schema coverage and no output schema, the description adequately conveys the comparison semantics (before/after per indicator, with deltas) and the signup-boundary rule. Minor gap: it leaves the exact returned structure somewhat implicit in the 'écran' phrasing.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter period_days is already documented in the schema with its default and bounds. The description restates its meaning as 'period_days derniers jours' but adds no syntax or edge-case detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

State a specific verb (compare) and resource (current period vs. immediately preceding equivalent period, with deltas), plus a concrete detail that each indicator is shown before/after. It distinguishes itself reasonably from point-in-time siblings like get_stats, but never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: an agent infers it should call this when a period-over-period comparison is wanted. There is no explicit when-to-use statement, no exclusion, and no reference to alternatives such as ficiel_get_stats or ficiel_synthese that also expose metrics.

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

ficiel_configure_channel_aiRégler la délégation Kord d'un canalA
DestructiveIdempotent
Inspect

Lit ou modifie les réglages de délégation Kord d'un canal entier (Instagram, WhatsApp…) : mise en pause, et heures calmes. ATTENTION, les heures calmes NE BLOQUENT AUCUN ENVOI depuis le 08/09/2026 : plus aucune règle horaire ne refuse un message, quelle que soit son origine. Elles ne servent plus qu'à décaler l'heure à laquelle le lot de relances du matin est préparé (7 h 30 heure locale par défaut, sinon la fin de la plage calme). Portée « write » requise (y compris en lecture seule ; pour une lecture avec une clé read seule, voir les champs ai_master_enabled/quiet_start/quiet_end de ficiel_list_tags_and_stages). IMPORTANT : paused=false (réactiver l'envoi autonome génératif d'un canal entier) est un choix produit verrouillé, identique dans l'interface Ficiel — ce chemin refuse toujours, avec la même explication que le panneau Délégation. Couper (paused=true) fonctionne normalement.

ParametersJSON Schema
NameRequiredDescriptionDefault
pausedNotrue = mettre le canal en pause. false = tenter une reprise (refusée, verrou produit — voir description).
channelYesCanal visé.
quiet_endNoFin des heures calmes, format HH:MM, ou null pour retirer. Le lot du matin démarre à cette heure-là quand 7 h 30 tombe dans la plage calme.
quiet_startNoDébut des heures calmes, format HH:MM (heure locale de l'organisation), ou null pour retirer. NE BLOQUE AUCUN ENVOI : décale seulement l'heure de préparation du lot de relances du matin.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true) by disclosing that quiet hours no longer block any send since 08/09/2026 and only shift morning-batch preparation time (7h30 local default), that write scope is required even for reads, and that paused=false is a locked product path that always refuses while paused=true works normally. These are non-obvious operational facts an agent cannot derive from structured fields.

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 core purpose is front-loaded in the first clause, with the caveats (ATTENTION quiet hours, IMPORTANT locked pause) signposted afterwards. It is dense but each block carries distinct information; only the amount of emphasis formatting keeps it from being maximally tight.

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?

A mutation tool with no output schema and 100% schema coverage needs the description to carry behavior, scope and side effects — and it does: locked paths, required scope, timing side effects of quiet hours, and the read-only alternative. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents channel enum, paused, quiet_start and quiet_end. The description mostly restates the quiet-hours semantics already in the property descriptions; its only marginal addition is the 'verrou produit' framing for paused=false, which the schema itself points back to. Baseline 3 is appropriate.

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?

Opens with a specific verb+resource: 'Lit ou modifie les réglages de délégation Kord d'un canal entier (Instagram, WhatsApp…) : mise en pause, et heures calmes.' It names exactly what is configured (pause, quiet hours) and names the sibling that covers the read-only case (ficiel_list_tags_and_stages), so an agent can separate it from other config tools without opening a schema.

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?

Explicit routing: use this tool for read or write with a write-scope key, and use 'les champs ai_master_enabled/quiet_start/quiet_end de ficiel_list_tags_and_stages' for a read-only key. It also states the when-not case (paused=false always refuses) so the agent knows a path that will never succeed.

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

ficiel_convert_learned_patternsConvertir des règles en instructionsA
DestructiveIdempotent
Inspect

Ajoute le texte de règles proposées ou adoptées aux instructions personnalisées de Kord (lisibles et modifiables par ficiel_edit_agent_prompt), puis les retire de la liste des règles apprises. Une règle qui n'est pas dans l'état de départ attendu n'est pas touchée ; le nombre de règles modifiées est rendu (updated). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idsYesIdentifiants des règles (pattern_id, voir ficiel_list_learned_patterns).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is partly covered. The description adds real context beyond that: the appended text is user-visible and editable, the rule is deleted from the learned list, non-conforming rules are left untouched, and the return value ('updated' count) plus the write-scope requirement are disclosed. Only the atomicity/partial-failure semantics of a multi-id call remain unstated.

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?

Three sentences, front-loaded with the action, with no redundant padding; each clause carries a distinct fact (what is written, what is removed, precondition, return value, scope). Slightly dense but efficient for a mutation with a precondition.

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

Completeness4/5

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

With no output schema and a single fully documented parameter, the description still supplies the pieces an agent needs: the destination of the migrated text, the removal side effect, the state precondition, the returned count, and the required write scope. An explanation of partial success behavior when some ids fail would fully close the gap.

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

Parameters3/5

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

Schema description coverage is 100%, so pattern_ids (uuid array, 1-100 items) and its link to ficiel_list_learned_patterns are already documented in the schema. The description adds no format or selection detail beyond that, so the baseline 3 applies.

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?

States a specific compound verb (append rule text to Kord's custom instructions, then remove them from the learned-rules list) and names the exact resource. It cross-references ficiel_edit_agent_prompt and ficiel_list_learned_patterns, so an agent can place it among the other learned-pattern siblings without opening their schemas.

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

Usage Guidelines3/5

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

Usage is implied: the description explains what the operation does and where the resulting instructions can be read/edited, and the precondition (a rule not in the expected starting state is untouched). However it never states when to choose this over the close siblings ficiel_approve_learned_patterns, ficiel_dismiss_learned_patterns or ficiel_ne_plus_proposer, leaving the routing decision to inference.

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

ficiel_create_automationCréer une automatisationInspect

Crée la recette reengagement_48h (relance après silence) de votre organisation, si elle n'existe pas déjà. Portée « write » requise. comment_to_dm n'est pas créable ici (choix d'une publication surveillée dans un sélecteur) : configurez-la dans Ficiel, Automatisations, puis pilotez-la avec ficiel_set_automation.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesContenu des relances, écrit mot pour mot par vous. Liste vide acceptée.
enabledNotrue = active immédiatement la recette.
ficiel_create_tagCréer un tagInspect

Crée un tag dans votre organisation, avec les mêmes règles que l'interface : nom de 1 à 48 caractères, unique sans tenir compte de la casse (refus tag_exists si le nom existe déjà, y compris Blacklist et Ignorer), couleur facultative en hexadécimal à six chiffres (indigo #6366f1 par défaut). Le tag est placé en fin de liste, sans comportement particulier (ni exclusion des relances, ni blocage des envois automatiques : cela se règle dans l'interface). Il apparaît immédiatement dans l'application et dans ficiel_list_tags_and_stages. Pour le poser sur un contact, utilisez ensuite ficiel_add_tag. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNom du tag (1 à 48 caractères, unique sans tenir compte de la casse).
colorNoCouleur en hexadécimal à six chiffres, ex. #6366f1. Facultative (indigo par défaut).
ficiel_defer_cardReproposer une relance plus tardA
Idempotent
Inspect

Met le contact d'une carte de relance de côté pendant jours (7, 14, 30 ou 90, 30 par défaut), comme « Reproposer plus tard » dans l'application : la carte sort du lot sans jugement et le contact revient en tête du lot du jour à la date de retour. Rien n'est envoyé ; le report s'annule dans l'application (Relances reportées). Cartes texte seulement. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
joursNoDans combien de jours le contact revient (30 par défaut).
card_idYesIdentifiant de la carte (card_id).

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that no message is sent, the card leaves the current batch, the contact returns on the return date, and the deferral can be cancelled in the app. These details clarify the write behavior and reversibility in a way that annotations alone do not.

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 action and duration, then adds relevant behavioral details. It is mostly efficient, though the enum/default repetition and phrase “sans jugement” make it slightly less tight than it could be.

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?

The definition is complete for a write operation with fully described parameters and no output schema: it covers the action, duration, return behavior, text-card restriction, lack of sending, cancellation path, and required write scope.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the input schema. The description repeats the allowed `jours` values and default, but does not add new meaning for `card_id` beyond identifying it as a follow-up card.

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 description states a specific action and resource: putting the contact of a follow-up card aside for a number of days. It also distinguishes this from sending a follow-up by explicitly saying “Rien n'est envoyé” and limits scope with “Cartes texte seulement.”

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

Usage Guidelines4/5

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

The description gives clear usage context by comparing it to “Reproposer plus tard” in the app and specifying that only text cards are eligible. However, it does not explicitly name sibling alternatives such as sending, approving, or rejecting a card, so the agent must infer when to choose deferral rather than another card action.

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

ficiel_dismiss_learned_patternsÉcarter des règles apprisesA
DestructiveIdempotent
Inspect

Écarte des règles proposées ou adoptées (états de départ : proposed, approved) : Kord ne les suit plus. Une règle qui n'est pas dans l'état de départ attendu n'est pas touchée ; le nombre de règles modifiées est rendu (updated). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idsYesIdentifiants des règles (pattern_id, voir ficiel_list_learned_patterns).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false; the description adds real beyond-schema context: which states are eligible, that out-of-state rules are left untouched (partial-failure semantics), that the modified count is returned as 'updated', and that a write scope is required. This is substantive behavioral disclosure.

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 verb and scope lead the sentence, followed by state preconditions, side effect on untouched rules, return value, and auth requirement. Dense but front-loaded and free of filler, though it packs several clauses into long sentences.

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 single-param mutation tool with no output schema, the description covers eligibility states, no-op behavior for ineligible rules, the returned count, and the required write scope. An agent has everything needed to invoke it correctly and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100% and the single param (pattern_ids) is well documented in the schema itself, including a pointer to ficiel_list_learned_patterns. The description adds no parameter-level detail, so the baseline 3 for schema-driven param semantics applies.

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

Purpose4/5

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

States a specific verb ('Écarter' = dismiss/discard) and resource (règles apprises) and clarifies the effect ('Kord ne les suit plus'), which is far more informative than the title. It does not explicitly name a sibling (e.g. ficiel_approve_learned_patterns or ficiel_convert_learned_patterns), so differentiation is inferable from the state semantics rather than stated.

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

Usage Guidelines3/5

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

Implies usage by describing the affected starting states (proposed, approved) and the outcome, which tells an agent when the call will take effect. However, it never states when to prefer this over approve/convert/reject siblings, nor any exclusion beyond the implicit state precondition.

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

ficiel_edit_agent_profileModifier le profil de KordA
DestructiveIdempotent
Inspect

Modifie le profil STRUCTURÉ de Kord, comme l'écran de configuration, champ par champ : niche, positionnement, préréglage de ton (friendly, direct, warm, professional), tutoiement ou vouvoiement, emojis, langue de réponse, critères « qualifié » et « non qualifié », questions du script, action de fin (booking = rendez-vous, link = lien, handoff = passage à un humain), portrait de la cible, objections, canal de conversion, origine des conversations et ce que la personne a reçu avant d'écrire, problèmes déclarés, sources texte, retrait d'une source (lien ou texte), lien de réservation. Seuls les champs fournis changent ; une liste fournie REMPLACE la liste entière. Un texte trop long est REFUSÉ, jamais coupé. Le prompt de Kord est recompilé aussitôt. Chaque modification crée une version : ficiel_list_agent_config_versions la montre en entier, ficiel_restore_agent_config_version la restaure. Les instructions libres ne sont pas touchées (ficiel_edit_agent_prompt). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicheNoNiche en quelques mots (200 caractères au plus).
emojisNoEmojis : jamais, ou ponctuellement.
addressNoTutoiement ou vouvoiement.
languageNoLangue de réponse ; auto = la langue du message reçu.
questionsNoListe ENTIÈRE des questions du script (remplace l'existante), dans l'ordre.
objectionsNoListe ENTIÈRE des objections fréquentes de vos prospects (remplace l'existante).
pain_pointsNoVos problèmes déclarés avec vos messages (liste entière). N'entre pas dans le prompt.
positioningNoPositionnement : qui vous êtes, ce que vous vendez, à qui (8 000 caractères au plus).
pre_contactNoCe que la personne a reçu avant d'écrire (guide, vidéo, promesse).
tone_presetNoPréréglage de ton.
booking_linkNoLien de réservation partagé par Kord (adresse complète en https://). Chaîne vide = aucun lien.
flow_sourcesNoD'où viennent les conversations (liste entière).
moment_appelNoQuand Kord propose l'appel : dès qu'un lead qualifié parle du prix (prix), après deux ou trois échanges qualifiés (apres_echanges), ou seulement si le lead le demande (sur_demande).
text_sourcesNoListe ENTIÈRE des sources TEXTE de Kord. Les sources lien et leur résumé de page restent intactes (elles s'ajoutent dans l'application).
closing_actionNoAction de fin de script.
remove_sourcesNoSources à retirer, lien ou texte, désignées par leur adresse ou leur libellé exact. Une source introuvable fait refuser toute la modification.
target_profileNoPortrait de la cible, écrit par vous (8 000 caractères au plus).
conversion_detailNoPrécision sur la conversion (1 000 caractères au plus).
conversion_channelNoCanal de conversion préféré : appel, lien, autre.
qualified_criteriaNoListe ENTIÈRE des critères « qualifié » (remplace l'existante, 2 000 caractères par élément).
disqualified_criteriaNoListe ENTIÈRE des critères « non qualifié » (remplace l'existante).

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint, idempotentHint, readOnlyHint=false) with concrete behavioral rules: partial updates ('Seuls les champs fournis changent'), list replacement semantics, hard rejection of over-long text ('REFUSÉ, jamais coupé'), immediate prompt recompilation, automatic version creation, and the required 'write' scope. This is the kind of operational detail an agent cannot infer from structured fields.

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?

Front-loaded with the core purpose and behavioral rules, and every sentence carries information. It is long, however, and enumerating all 21 fields overlaps heavily with the schema, which a leaner definition could omit.

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 21-parameter, all-optional mutation tool with no output schema, the description supplies the missing context: replacement semantics, validation behavior, versioning side effects, auth scope, and the sibling to use for prompt-only edits. Nothing needed to invoke it correctly appears absent.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema states only locally: list fields replace the whole list, and remove_sources is validated atomically. It also glosses the closing_action and tone_preset enums in prose, adding marginal value over the schema.

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?

States a precise verb and resource ('Modifie le profil STRUCTURÉ de Kord, comme l'écran de configuration, champ par champ') and enumerates the editable fields, so the agent knows exactly what this mutates. It explicitly distinguishes itself from the sibling ficiel_edit_agent_prompt ('Les instructions libres ne sont pas touchées').

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

Usage Guidelines4/5

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

Clear context for use (structured profile editing, field by field) and it routes to alternatives: ficiel_edit_agent_prompt for free instructions, ficiel_list_agent_config_versions / ficiel_restore_agent_config_version for versions. It does not state when NOT to use it beyond that boundary (e.g., relationship to ficiel_get_agent_config for reading first), so it stops short of full when/when-not guidance.

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

ficiel_edit_agent_promptÉditer les instructions de KordA
Destructive
Inspect

Applique une ou plusieurs opérations de recherche/remplacement (ou d'ajout) sur les instructions personnalisées de votre organisation (custom_instructions). Portée « write » requise. N'écrase JAMAIS le texte en entier : chaque opération avec "search" doit trouver EXACTEMENT une occurrence, sinon l'appel est refusé (introuvable ou ambigu) plutôt que de deviner. Sans "search", le texte de l'opération est simplement ajouté à la fin. Certains réglages (ex. tutoiement/vouvoiement) vivent dans le profil structuré, pas dans ce texte : si aucune occurrence n'est trouvée, le réglage se change probablement dans Ficiel, Agent, Configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYesOpérations appliquées dans l'ordre.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false. The description goes well beyond them: it requires 'write' scope, guarantees the full text is never overwritten, mandates that each search find EXACTLY one occurrence, and states the call is refused (not-found/ambiguous) rather than guessed. Those are precisely the failure modes an agent must anticipate.

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

Conciseness5/5

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

Front-loaded with the purpose, then ordered constraints (scope, matching rule, append rule, fallback routing). Every sentence carries distinct operational information with no filler.

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 destructive 1-parameter mutation tool whose annotations already cover the safety profile, the description supplies the remaining essentials: scope requirement, non-overwrite guarantee, exact-match rule, append behavior, and where to go when no match exists. No output schema is needed to complete it.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real meaning: operations run in order, an operation's 'search' must match exactly once, and an operation without 'search' is appended to the end. That clarifies matching and append semantics beyond the field descriptions.

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?

States a concrete verb and resource: applies search/replace or append operations on the organization's custom_instructions text. It distinguishes itself from ficiel_edit_agent_profile by noting that structured-profile settings (e.g. tutoiement/vouvoiement) are NOT edited here, so an agent can route correctly without opening either schema.

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

Usage Guidelines4/5

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

Gives clear when (search/replace on free-text instructions) and when-not (settings that live in the structured profile belong to a different mechanism/Ficiel configuration). It doesn't name ficiel_edit_agent_profile directly, leaving the alternative tool implicit, but the routing context is explicit and actionable.

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

ficiel_envoyer_relanceEnvoyer une relance (bouton du widget)A
Destructive
Inspect

Geste du bouton Envoyer de la carte de relance : envoie le texte (modifié ou non) au contact de la carte, par le même chemin que la validation d’une carte dans Ficiel (destinataire vérifié, liste noire, « Ne pas contacter », court délai naturel). Rend l’identifiant du message ; l’issue réelle se lit avec ficiel_statut_envoi.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
card_idYes
recipientYesLe nom affiché sur la carte, confronté au contact avant l’envoi.

TDQS

A4/5.0
Behavior5/5

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

With annotations already declaring non-read-only, destructive and non-idempotent, the description still adds substantial context: sends go through the same guarded path as card validation (verified recipient, blacklist, 'Ne pas contacter', natural short delay), the call only returns a message id, and real delivery status must be read asynchronously via ficiel_statut_envoi. That is exactly the async/side-effect nuance an agent needs before firing a non-idempotent send.

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 action is front-loaded and the two sentences carry no filler; the guarded-path parenthetical is dense but informative rather than redundant. Slightly long single sentence, but each clause (path, checks, return, status lookup) earns its place.

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

Completeness4/5

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

There is no output schema, and the description correctly covers the return value (message id) plus where the real outcome lives (ficiel_statut_envoi), along with the compliance checks and natural delay. It stops short of covering failure behaviour or the default when text is omitted, which are the remaining gaps for a destructive, non-idempotent send.

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

Parameters4/5

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

Schema description coverage is only 33% (recipient documented), so the description must compensate. It clarifies that text is optional and may be the card's text modified or not, and that the send targets 'le contact de la carte', reinforcing the recipient/card_id linkage. card_id itself is still not explicitly defined, keeping it short of a 5.

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

Purpose4/5

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

States a specific verb and resource ('envoie le texte ... au contact de la carte') and frames itself as the widget Send button of the relance card, which sets it apart from generic sending siblings. It does not explicitly contrast with the closest neighbours (ficiel_decide_card, ficiel_prepare_followup, ficiel_send_message), so an agent must infer the boundary, but the resource and scope are unambiguous.

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

Usage Guidelines3/5

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

Usage is implied by 'Geste du bouton Envoyer de la carte de relance' — it is the action taken from a relance card — and it routes the agent to ficiel_statut_envoi for the outcome. There is no explicit when-not-to-use or statement of which sibling to prefer for plain outbound messaging (send_message) or for card decisions (decide_card).

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

ficiel_fiche_prospectFiche d’un prospectA
Read-onlyIdempotent
Inspect

AFFICHE UN WIDGET : la fiche d’une personne (canaux, premier échange, étape, tags, où vous en êtes, ce qu’elle cherche, objections relevées, prochaine action, derniers messages des deux côtés), avec les boutons Préparer une relance, Changer d’étape et Voir dans Ficiel. Identifie la personne par conversation_id, lead_id, ou contact (pseudo, nom ou numéro) ; si plusieurs personnes correspondent, la réponse liste les lead_id pour choisir.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactNoPseudo, nom affiché ou numéro de la personne.
lead_idNo
conversation_idNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, non-destructive profile, and the description adds real context beyond that: what the widget displays, that it carries Préparer une relance / Changer d'étape / Voir dans Ficiel buttons, and how it resolves ambiguous person matches. It stops short of noting any auth or visibility constraints, but for a read-only view this is solid added value.

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 core action is front-loaded ("AFFICHE UN WIDGET") before the parenthetical field list, so an agent can stop reading early and still know the tool's purpose. The long enumeration of widget contents is dense but earns its place by telling the agent what to expect on screen; nothing is redundant.

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

Completeness4/5

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

For a read-only widget tool with no output schema and only 3 parameters, the description covers what the agent needs: what is shown, the action buttons available, and how to supply the identifier plus the ambiguity fallback. The main missing piece is explicit routing against lookalike siblings such as ficiel_get_lead.

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

Parameters3/5

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

Schema coverage is only 33% (only contact is documented, as pseudo/nom/numéro). The description compensates partially by restating the three identification keys and clarifying that any one of them identifies the person and that contact accepts pseudo, name, or number. It does not state precedence when several are supplied, nor that all three parameters are optional despite 0 being required.

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

Purpose4/5

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

The description opens with a specific verb+resource ("AFFICHE UN WIDGET : la fiche d'une personne") and enumerates exactly what the widget contains, so the agent knows precisely what it produces. It implicitly distinguishes itself from data-returning siblings like ficiel_get_lead by being a widget view with action buttons, but never names those siblings or contrasts against them explicitly.

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

Usage Guidelines3/5

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

It gives useful operational guidance on identifying the person (conversation_id, lead_id, or contact) and what happens on ambiguous matches (a list of lead_id to choose from). However it never states when to reach for this tool instead of ficiel_get_lead, ficiel_get_lead_context, or ficiel_get_conversation, leaving the choice to inference.

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

ficiel_find_dormant_leadsTrouver les contacts dormantsA
Read-onlyIdempotent
Inspect

Données sans écran. Contacts qui ont déjà répondu au moins une fois, à qui vous avez écrit en dernier, et qui n'ont plus donné signe depuis plus de silence_days jours. Même règle que la sélection « à relancer » de Ficiel : hors liste noire, hors groupes, hors étapes écartées de la relance, hors contacts exclus ou en pause, canal connecté uniquement. Triés du dernier signal du contact le plus récent au plus ancien.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre d'éléments par page (défaut 20, maximum 100).
stageNoLimiter à une étape du pipeline (stage_key).
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
silence_daysNoSilence minimal en jours depuis le dernier message (défaut 14).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds substantial behavioral context beyond annotations: it explains exclusion rules (blacklist, groups, excluded stages, paused contacts, channel connected) and sorting order, which helps the agent understand what results will contain.

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 dense but well-organized: it defines dormant leads, specifies exclusion rules, and states sorting order. The opening fragment 'Données sans écran.' is somewhat cryptic and could be clearer, but the rest is front-loaded and information-rich without redundant repetition.

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

Completeness4/5

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

For a read-only list tool with no output schema, the description provides adequate completeness by specifying the cohort, exclusions, and ordering. Pagination behavior is documented in the input schema, so the description does not need to repeat it; however, it does not describe return fields, which would have been helpful absent an output schema.

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

Parameters3/5

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

With 100% schema description coverage, the baseline is 3. The description reinforces the meaning of silence_days in the filtering condition, but adds no syntax or format details for limit, stage, or cursor beyond what the schema already documents.

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

Purpose4/5

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

The description states a specific verb and resource: finding dormant contacts who have replied at least once, to whom you wrote last, and who have been silent for more than silence_days days. This clearly defines the tool's purpose, but it does not name or distinguish from sibling tools such as ficiel_search or ficiel_envoyer_relance.

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

Usage Guidelines3/5

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

Usage is implied by the detailed definition of dormant leads and the comparison to Ficiel's 'à relancer' selection. However, there is no explicit guidance on when to prefer this tool over alternatives like ficiel_search or ficiel_get_lead, nor are there any exclusions or prerequisites stated.

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

ficiel_get_agent_configLire la configuration de KordA
Read-onlyIdempotent
Inspect

Lit TOUTE la configuration de l'agent, chaque texte en entier : niche, positionnement, ton, emojis, langue, critères de qualification, questions du script, action de fin, cible, objections, conversion, origine des conversations, sources (et ce que Kord a retenu de chaque page), lien de réservation, modèle, le texte complet des instructions personnalisées (la zone libre, cible de ficiel_edit_agent_prompt) et le prompt compilé depuis le profil (lecture seule : il se modifie par ficiel_edit_agent_profile).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent and non-destructive, so the safe-read profile is known. The description adds real value beyond that: it warns the output is complete and untruncated ('chaque texte en entier') and flags a read-only field that cannot be modified here, which prevents a misuse attempt.

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?

Long single sentence, but front-loaded with the key claim ('Lit TOUTE la configuration... chaque texte en entier') before the field list. The enumeration is dense yet justified because there is no output schema to carry it; structure could be improved with a bulleted list but nothing is wasted.

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?

With no output schema, the description carries the burden of describing the return payload and does so exhaustively, including the caveat about the read-only compiled prompt. Combined with annotations covering the safety profile, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The enumeration of configuration fields describes return content rather than inputs, which is informative but not parameter semantics per se.

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?

States a specific verb+resource ('Lit TOUTE la configuration de l'agent') and then enumerates exactly what constitutes that configuration, from niche to compiled prompt. An agent can immediately distinguish it from ficiel_list_agent_config_versions (versions) and the edit tools without opening any schema.

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

Usage Guidelines4/5

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

No explicit 'use when' clause, but the description routes the agent correctly by naming ficiel_edit_agent_prompt as the tool that targets the free-text zone and ficiel_edit_agent_profile as the only way to change the compiled prompt. This clarifies read-vs-edit boundaries, though it never states a trigger condition for calling this tool.

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

ficiel_get_automation_runsHistorique d'exécution d'une automatisationA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (envois et réponses de la recette). Quand une recette a envoyé, à combien de contacts, avec quel taux de réponse, sur une fenêtre de jours. TOUTES les personnes touchées sont listées, de la plus récente à la plus ancienne, par pages (next_cursor).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoFenêtre en jours (défaut 30).
limitNoPersonnes par page (défaut 50, maximum 100).
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
recipe_idYesIdentifiant de la recette (recipe_id, voir ficiel_get_automations).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context: all touched contacts are listed from most recent to oldest and paginated via next_cursor. It does not cover rate limits or auth needs, but those are less critical for a read-only history tool.

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 short, front-loaded with the core purpose, then flows into returned metrics and list/pagination behavior. Every sentence carries information, though the all-caps 'AFFICHE UN ÉCRAN' phrasing is slightly unusual.

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

Completeness4/5

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

With no output schema and four input parameters, the description adequately characterizes the return: send/response metrics, contact counts, response rate, a listing of all touched people in reverse chronological order, and pagination. It does not describe edge cases such as empty histories, but it is otherwise sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents days, limit, cursor, and recipe_id. The description reinforces the time window and pagination concept, but adds no syntax, format, or constraint detail beyond what the schema provides, which matches the baseline of 3.

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 description states a specific verb and resource: it displays the execution history of an automation, including sends, responses, contact counts, and response rates over a time window. It also distinguishes itself from the sibling ficiel_get_automations by referencing that tool only for obtaining the recipe_id.

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

Usage Guidelines2/5

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

The description explains what the tool returns but gives no explicit guidance on when to use it versus alternatives such as ficiel_get_stats or ficiel_get_automations. The only reference to a sibling is for retrieving a required parameter, not for selecting this tool.

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

ficiel_get_automationsLire les automatisationsA
Read-onlyIdempotent
Inspect

Liste les recettes d'automatisation de votre organisation (commentaire vers message privé, relance après silence) : activation, contenu, état. Les messages sont écrits mot pour mot à l'avance par un humain, jamais générés à l'envoi.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the automations are human-authored verbatim and never generated at send time, which tells the agent the listing content is static and not dynamically produced.

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

Conciseness5/5

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

A single compact sentence that front-loads the resource, then the returned fields, then the behavioral note. No wasted clauses.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned fields (activation, contenu, état), which is what an agent needs for a zero-param getter. It stops short of describing ordering, pagination or volume, but for this simple read that is a minor gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate beyond the schema; baseline of 4 applies.

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

Purpose4/5

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

States a specific verb and resource ('Liste les recettes d'automatisation de votre organisation') and concretely enumerates what is returned (activation, contenu, état) plus what the objects are (commentaire vers message privé, relance après silence). It clearly contrasts with the write-side siblings create_automation and set_automation, though it does not name them.

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

Usage Guidelines3/5

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

The read-only listing intent is implied by 'Liste', which makes it distinguishable from create_automation/set_automation, but there is no explicit when-to-use or when-not-to-use guidance and no alternative (e.g. get_automation_runs) is mentioned for run history.

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

ficiel_get_blacklistListe noire de l'organisationA
Read-onlyIdempotent
Inspect

Qui est en liste noire, et depuis quand quand c'est connu. Inclut les contacts blacklistés qui n'ont pas (encore) de conversation Ficiel. Paginé (next_cursor), total exact dans total.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoÉléments par page (défaut et maximum 100).
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description is free to add scope detail instead: it discloses that contacts with no Ficiel conversation are included, and that results are paginated with an exact total. That inclusion rule is genuinely non-obvious behavioral context.

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?

Two dense sentences with the scope stated first and pagination last; nothing is padded. Minor awkwardness in the repeated 'quand quand' and the return-shape hint is compressed, but it is appropriately sized.

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

Completeness4/5

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

With no output schema, the description has to carry the return semantics, and it does name the three things an agent needs: who is blacklisted, since when, and the pagination/total fields. It stops short of describing the full record shape, but is complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (limit, cursor) are documented in the schema, so the baseline is 3. The description reinforces cursor-based paging via next_cursor but adds no syntax or constraint information beyond what the schema already carries.

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

Purpose4/5

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

The description states a concrete resource (les contacts en liste noire) and the returned attribute (depuis quand), so an agent knows this is the read-only view of the organization blacklist. It does not explicitly name the sibling ficiel_blacklist_lead as the mutation counterpart, so differentiation is left implicit.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the tool is the only list-style reader among the blacklist siblings, but the description never says when to reach for it versus ficiel_blacklist_lead or ficiel_ne_plus_proposer. No exclusions or prerequisites are given.

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

ficiel_get_cashCash signé et cash dormantA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (cash signé et dormant). Les chiffres de la section Cash, deux nombres qui ne se mélangent jamais. CASH SIGNÉ : contacts aux étapes « client », avec le montant réellement encaissé saisi à la main (null = à renseigner, jamais 0) et la date de signature (null = inconnue) ; le total ne somme que les montants renseignés. CASH DORMANT estimé : contacts qui ont déjà écrit et se taisent depuis plus de 30 jours (définition LARGE, différente de ficiel_find_dormant_leads), × 5 % de reprise × panier moyen ; sans panier, aucun euro (estimate_cents null). Plus le montant de l'offre (panier), un changement programmé et l'historique. Montants en centimes. Réservé au propriétaire de l'organisation, comme dans l'application ; refusé pendant l'audit gratuit et pour une organisation suspendue. Lecture seule.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoContacts signés détaillés par page (défaut 50, maximum 200). Les totaux portent toujours sur tous ; la suite avec next_cursor.
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real context beyond them: owner-only authorization, refusal during the free audit and for suspended organizations, and units in centimes. It repeats 'Lecture seule' which the annotations already declare, but the auth and state preconditions are genuine additions.

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?

A single dense paragraph that front-loads the key concept (the two cash numbers) before elaborating. Every clause carries domain meaning (null semantics, ×5% estimate, centimes) though 'Lecture seule' is redundant with the annotations and the paragraph runs long.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does explain the two figures, the null conventions ('null = à renseigner, jamais 0'), units in centimes, and the estimate formula. It omits pagination/response shape but is otherwise complete enough to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so limit (default 50, max 200, totals always span all rows) and cursor (next_cursor) are already fully documented. The description adds no syntax or format detail for the two parameters, so the baseline 3 applies.

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?

States a specific verb+resource ('AFFICHE UN ÉCRAN cash signé et dormant') and immediately defines the two figures it reports so an agent knows exactly what it renders. It explicitly differentiates its large dormant-cash definition from the sibling ficiel_find_dormant_leads, so the boundary is unambiguous.

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

Usage Guidelines4/5

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

Gives clear context for when this screen is usable (owner-only; refused during free audit and for suspended orgs) and implicitly when not to reach for it by contrasting against ficiel_find_dormant_leads. However it never states the positive use case ('call this when...') or names other candidate tools, so no explicit when/when-not routing.

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

ficiel_get_channel_statusÉtat des canaux et de leur historiqueA
Read-onlyIdempotent
Inspect

Pour chaque compte connecté (Instagram, WhatsApp, LinkedIn…) : état (connected, disconnected, connecting), dernière activité, où en est la récupération de l'historique, avec la phrase exacte de l'écran Connexions (prochaine reprise, fin estimée « d'ici »), une éventuelle récupération en cours, les dernières récupérations (5 par défaut, jusqu'à 100 avec passes ; conversations et messages ramenés, tronquée ou non, incident oui ou non) et si le bouton « Récupérer l'historique » est disponible. Lecture seule : aucun import n'est déclenché d'ici. Filtrable par canal ou par compte (account_id de ficiel_list_tags_and_stages).

ParametersJSON Schema
NameRequiredDescriptionDefault
passesNoNombre de récupérations récentes à détailler par compte (défaut 5, maximum 100, sur la fenêtre du journal).
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger.
account_idNoUn compte précis (account_id).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: it explicitly reassures that no import is triggered from this call and documents default/limit behavior for retrieval history (5 by default, up to 100 with passes), which an agent cannot infer from the annotations alone.

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

Conciseness3/5

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

Everything is packed into one very long parenthetical sentence, which is dense and poorly front-loaded; the core 'what it returns' is buried mid-clause. No wasted words in the sense of filler, but the structure hurts scanability.

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

Completeness4/5

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

For a read-only tool with no output schema, the description does a good job describing the shape of the returned data (per-account state, last activity, retrieval progress, recent retrievals with conversation/message counts). Combined with full annotation and schema coverage, an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description confirms the two filter axes (channel, account_id) and the passes window ('5 par défaut, jusqu'à 100'), but adds no syntax or edge-case meaning beyond what the schema already documents.

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

Purpose4/5

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

The description names the resource (per connected account: channel state, last activity, history retrieval progress) and enumerates what is returned, so an agent can tell it apart from siblings like ficiel_get_stats_by_channel. It is clear but slightly diffuse, being delivered as one long enumerative sentence rather than a crisp verb+object statement.

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

Usage Guidelines3/5

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

It states the key constraint 'Lecture seule : aucun import n'est déclenché d'ici' and that results are filterable by channel or account, pointing to ficiel_list_tags_and_stages as the source of account_id. However, it never says when to choose this over related status/stats tools, so usage is implied rather than explicit.

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

ficiel_get_conversationLire une conversationA
Read-onlyIdempotent
Inspect

Une conversation complète : fiche du contact et messages, du plus récent au plus ancien, 50 par page (next_cursor pour remonter dans le passé). Les vocaux apparaissent avec leur transcription COMPLÈTE (aucune coupure, tous les caractères) dans voice_transcription et dans la ligne de texte. Quand elle manque, transcription_status vaut en_attente ou indisponible et transcription_reason dit pourquoi (audio purgé chez le fournisseur, échec, en cours). Fonctionne aussi sur une conversation de groupe : chaque message porte alors son auteur (author) et la fiche liste les participants.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMessages par page (maximum 50).
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuine behavioral detail: 50-per-page sorting and cursor direction ('next_cursor pour remonter dans le passé'), full voice transcription semantics, and the meaning of transcription_status/transcription_reason failure states. It stops short of stating error behavior for an unknown conversation_id.

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?

Front-loads the core purpose and return shape, then qualifies voice transcription and group handling. Slightly dense and repetitive ('COMPLÈTE (aucune coupure, tous les caractères)'), but every sentence carries information.

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

Completeness4/5

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

With no output schema, the description does the heavy lifting on return content (contact card, messages, voice fields, per-message author for groups) and covers it well. It omits what happens on invalid or missing conversation IDs, which is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description says '50 par page' and maps the cursor to next_cursor, but this essentially restates the schema's own descriptions of limit and cursor without adding new meaning.

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?

States precisely what is returned: a complete conversation with the contact card and messages, ordered newest-to-oldest, 50 per page. An agent can tell this is the single-conversation reader versus the sibling ficiel_list_conversations without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by the scope (one complete conversation, paginated) but there is no explicit when-to-use statement or named alternative such as ficiel_list_conversations for browsing, or ficiel_get_lead for contact-only data. The pagination note hints at context but no exclusions are given.

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

ficiel_get_funnelEntonnoir de conversionA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (l'entonnoir de l'écran Statistiques, mêmes chiffres). Six étapes sur une période, tous canaux ou un seul : nouveaux contacts → en qualification → qualifiés (critères écrits pour Kord) → lien envoyé → réservés → signés, avec la part de l'étape d'avant, plus le taux de réponse et le taux de booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger.
period_daysNoPériode en jours jusqu'à aujourd'hui (défaut 30).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. With no output schema, the description usefully carries the return burden: six stages plus the share of the previous stage, response rate and booking rate, which tells the agent what it will receive. It doesn't cover pagination or latency, but that is not needed for a fixed-shape read.

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?

A single dense sentence with the key action front-loaded in caps ('AFFICHE UN ÉCRAN'), followed by the stage list and the derived metrics. Nothing is wasted, though the stage chain with parenthetical 'critères écrits pour Kord' is somewhat heavy for one sentence.

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

Completeness4/5

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

For a two-parameter, zero-required, read-only analytics tool with 100% schema coverage and no output schema, the description supplies the missing return-shape information (stages, share-of-previous, response/booking rates) and the channel scope. It is complete enough to invoke correctly, with only the sibling-routing gap remaining.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents both parameters (channel enum and period_days). The description adds meaning by clarifying 'tous canaux ou un seul' (channel is optional, all channels by default) and that the period applies to the funnel, going slightly beyond the schema's raw field definitions.

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

Purpose4/5

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

States a specific verb (affiche) and resource (l'entonnoir de conversion) and enumerates the six funnel stages, so the agent knows exactly what it produces. It situates itself against the Stats screen ('l'entonnoir de l'écran Statistiques, mêmes chiffres'), giving partial sibling differentiation versus ficiel_get_stats, but does not name any sibling tool directly.

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

Usage Guidelines3/5

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

Usage context is implied by the analytics framing (period-based funnel figures), but there is no explicit when-to-use or when-not-to-use guidance relative to siblings like ficiel_get_stats, ficiel_get_stats_by_channel, ficiel_compare_periods or ficiel_synthese. The agent must infer which analytics tool to pick.

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

ficiel_get_leadFiche d'un contactA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (la fiche du prospect). Fiche complète d'un contact : identité affichée, canaux où une conversation existe (avec l'état de lecture de notre dernier message), étape, tags, résumé et notes EN ENTIER, compteurs de messages entrants/sortants et dernier contact. Les notes vont de la plus récente à la plus ancienne, 20 par page : notes_next_cursor (dans notes_cursor) donne les suivantes, notes_total dit combien il y en a.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesIdentifiant du contact (lead_id).
notes_limitNoNotes par page (défaut 20, maximum 100).
notes_cursorNoCurseur des notes suivantes (notes_next_cursor de l'appel précédent).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: notes are ordered newest-first in pages of 20, and notes_next_cursor fed back via notes_cursor continues the listing. It does not state what happens for an unknown lead_id, but the pagination contract is a real addition.

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 screen-rendering purpose is front-loaded in the first clause, followed by the field inventory and then pagination. It is dense but every clause carries information; the pagination sentence runs slightly long and the all-caps emphasis ('EN ENTIER') is stylistically noisy but not wasteful.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so by listing the returned fields and the notes pagination model. Combined with the read-only annotations, an agent has enough to call and interpret it; only error/empty-lead behavior is unaddressed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the cross-call cursor loop (notes_next_cursor from the previous call goes into notes_cursor) and that notes_total reports total volume, which the schema alone does not convey. It adds little on notes_limit beyond the schema's own default/max.

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

Purpose4/5

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

States a specific verb and resource — it displays the full record (fiche) of a contact — and enumerates what the record contains (identity, channels with read state, stage, tags, notes, message counters, last contact). An agent knows it retrieves one lead's complete profile. However, it never distinguishes itself from the very similar siblings ficiel_fiche_prospect, ficiel_get_lead_context and ficiel_get_lead_by_handle, which all sound like the same retrieval.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling is named, despite three near-identical lead-lookup tools in the list. Usage is only implied by the enumerated content (use it when you need the whole picture of one lead), which leaves the agent to guess between it and ficiel_get_lead_context.

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

ficiel_get_lead_by_handleRetrouver un contact par son identifiant de canalA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (le ou les contacts trouvés, avec leur fiche). Retrouve un ou plusieurs contacts à partir d'un identifiant de canal (@pseudo Instagram, numéro WhatsApp, identifiant LinkedIn) OU de son nom affiché (prénom, nom, nom de profil ; recherche partielle, insensible à la casse et aux accents, tous canaux si channel est omis), ou une conversation de groupe par son nom (résultat marqué is_group, avec son conversation_id). Chaque résultat porte un link ouvrable dans un navigateur (URL par identifiant, ouvre toujours) et un link_readable lisible (/inbox/@pseudo@canal) quand la fiche le permet. Meilleur effort : un nom absent des fiches peut figurer dans le contenu des messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes@pseudo, numéro de téléphone, identifiant tel qu'affiché sur le canal, ou nom affiché du contact (partiel accepté).
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower, yet the description still adds substantial behavioral context: the is_group marker and conversation_id for groups, the best-effort caveat that a missing name may appear in message content, and the case/accent-insensitive partial matching. It stops short of describing pagination or result limits.

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

Conciseness3/5

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

The description is front-loaded with the primary action, but it is a single run-on block that packs lookup modes, group handling, link fields, and best-effort caveats into dense clauses. It is not padded, but the wall-of-text structure reduces scannability.

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

Completeness4/5

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

With no output schema and only two parameters, the description carries the disclosure burden and does so well, covering the shape of results (link, link_readable, is_group) and match semantics. Only pagination/result-count behavior is left unaddressed, which is a minor gap for a read tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: it clarifies that `handle` may be a @pseudo, phone number, or display name, that matching is partial and accent/case-insensitive, and that omitting `channel` searches all channels. That is genuine semantic value on top of the structured fields.

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

Purpose4/5

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

The description states a specific verb and resource (retrieve one or more contacts by channel identifier or display name) and enumerates the distinct lookup modes, including group conversations. It is far more specific than a tautology, but it never names a sibling (ficiel_get_lead, ficiel_search, ficiel_get_lead_context) to disambiguate which one an agent should pick.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the description explains that omitting `channel` searches all channels and that partial/name lookups are accepted, which hints at when to reach for this tool. However, it gives no explicit when-not or 'use X instead' routing against the many lead-lookup siblings, so an agent must infer the boundary.

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

ficiel_get_lead_contextContexte chronologique d'un contactA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (la fiche du prospect). Contexte chronologique d'un contact, tous canaux confondus : fiche, puis ses messages du plus ancien au plus récent, une ligne par message, chaque message EN ENTIER (les vocaux avec leur transcription complète ou la raison de son absence). Par pages de 500 messages au plus, les plus récents d'abord : next_cursor (dans cursor) remonte vers l'historique plus ancien, rien n'est perdu. Donne aussi, par canal, si notre dernier message a été vu. Pensé pour être lu d'un bloc par un assistant avant de décider quoi faire.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoCurseur de la page plus ancienne (next_cursor de l'appel précédent).
lead_idYesIdentifiant du contact (lead_id).
max_messagesNoMessages par page, les plus récents d'abord (défaut et maximum 500).

TDQS

A3.6/5.0
Behavior4/5

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

Les annotations (readOnlyHint, idempotentHint, destructiveHint=false) couvrent déjà le profil de sécurité et n'exigent pas de redondance. La description ajoute néanmoins des éléments comportementaux importants : pagination de 500 messages maximum, ordre des plus récents d'abord, remontée vers l'historique plus ancien via next_cursor, garantie qu'aucun message n'est perdu, et indication par canal du vu du dernier message. Elle ne précise pas le coût potentiel ou la latence, mais couvre bien au-delà des annotations.

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

Conciseness3/5

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

Le contenu est front-loadé sur la nature de l'écran et le format des messages, mais plusieurs informations (ordre, pagination, next_cursor, garantie de non-perte, vu par canal) sont répétées ou dispersées. La phrase finale sur l'usage assistant est utile mais la description reste dense et gagnerait à être structurée en deux parties : ce qui est renvoyé, comment paginer. Aucune phrase n'est totalement superflue, mais la concision pourrait être améliorée.

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

Completeness4/5

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

Sans schéma de sortie, la description doit expliquer ce qui est renvoyé, ce qu'elle fait bien : fiche du prospect, messages ordonnés avec transcriptions ou raison d'absence, pagination et statut de lecture par canal. Les paramètres étant entièrement documentés dans le schéma, il n'est pas nécessaire d'y revenir. Il manque simplement une mention des limites ou cas d'erreur éventuels, mais pour un outil en lecture seule et idempotent, l'ensemble est suffisamment complet.

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

Parameters3/5

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

La couverture de description du schéma est de 100 % : les paramètres lead_id, cursor et max_messages sont déjà documentés dans le schéma, y compris leur format et leurs bornes. La description rappelle l'existence de next_cursor et la limite de 500 messages par page mais n'apporte pas de sémantique supplémentaire sur les paramètres eux-mêmes (par exemple sur la structure exacte du curseur ou la validation de lead_id). Le socle de 3 s'applique.

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

Purpose4/5

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

La description nomme précisément la ressource (contexte chronologique d'un contact, tous canaux confondus) et détaille la structure de l'écran (fiche, messages du plus ancien au plus récent, une ligne par message, vocaux et transcriptions). Le verbe principal est implicite (AFFICHE) mais le titre et le contenu rendent la fonction identifiable. Il manque toutefois une différenciation explicite avec les outils proches comme ficiel_get_lead, ficiel_get_conversation ou ficiel_fiche_prospect, ce qui limite la distinction directe au sein de la fratrie.

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

Usage Guidelines3/5

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

La fin de la description indique le cas d'usage principal (« Pensé pour être lu d'un bloc par un assistant avant de décider quoi faire »), ce qui donne une orientation d'utilisation. En revanche, aucune alternative n'est citée : ni quand préférer ficiel_get_lead, ficiel_get_conversation ou ficiel_fiche_prospect, ni dans quels cas ne pas utiliser cet outil. L'usage reste donc implicite plutôt qu'explicitement guidé.

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

ficiel_get_mediaRécupérer une image ou un documentA
Read-onlyIdempotent
Inspect

Rend l'ORIGINAL d'un média d'une conversation, pour le voir vous-même : une image est renvoyée comme image (redimensionnée à 1 568 px au plus), un document comme fichier intégré (10 Mo au plus). Une vidéo n'est pas transmise : sa durée, ses paroles et sa description suffisent. La réponse donne aussi le texte déjà tiré du média (description, texte visible, texte du document), en entier. message_id vient de ficiel_get_conversation, ficiel_get_lead_context ou ficiel_search (champ media d'un message). Lecture seule.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesIdentifiant du message qui porte le média (message_id).

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses concrete behavioral traits: images are resized to max 1568px, documents capped at 10MB, videos are never transmitted, and the response includes previously extracted text in full. These are operationally significant details the annotations do not carry.

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 behavior and then layers constraints (size caps, video exclusion) and provenance in a compact sequence. It is slightly dense but each clause carries distinct information, with no filler.

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?

There is no output schema, yet the description compensates by describing what comes back (image, embedded file, extracted text in full). For a single-parameter read tool with annotations already covering safety, nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, but the description adds real value by explaining where message_id originates (the 'media' field of a message from conversation, lead context, or search endpoints). That provenance guidance exceeds what the schema's 'Identifiant du message qui porte le média' conveys.

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 description states a specific verb and resource ('Rend l'ORIGINAL d'un média d'une conversation') and immediately clarifies the goal ('pour le voir vous-même'). It also scopes the tool by excluding video, so an agent can tell exactly what it fetches versus what it does not.

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

Usage Guidelines4/5

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

It explicitly names the prerequisite tools that produce message_id (ficiel_get_conversation, ficiel_get_lead_context, ficiel_search, media field), which gives clear routing context. It does not, however, contrast itself with adjacent media tools like ficiel_send_media or explain when retrieval is unnecessary.

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

ficiel_get_send_budgetPlafonds d'envoi restantsA
Read-onlyIdempotent
Inspect

Ce qu'il reste à envoyer sur chaque canal connecté avant le plafond horaire ou journalier, et si le canal est actuellement en pause (coupe-circuit).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that output includes circuit-breaker pause state, but says nothing about auth requirements, rate limits, or result shape.

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?

One tight sentence that front-loads the resource (what remains to send) before the qualifier (hourly/daily cap) and the pause flag. No filler, though it is a single flat clause.

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

Completeness4/5

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

For a zero-parameter read tool with no output schema, the description must carry the return-value burden, and it does describe the content (per-channel remaining budget and pause status). Nothing essential is missing, though format/granularity is unstated.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There are no arguments whose meaning the description would need to clarify.

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

Purpose4/5

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

The description names a specific resource (remaining send budget per connected channel) and scope (before the hourly/daily cap, plus current pause state). It is clear what the tool returns, though it never distinguishes itself from look-alike siblings such as ficiel_get_channel_status or ficiel_statut_envoi.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer you call this to check send headroom, but there is no explicit when-to-use, no when-not-to, and no pointer to the overlapping channel-status siblings. The single sentence gives no routing guidance.

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

ficiel_get_slotsCréneaux libres de l'agenda
Read-onlyIdempotent
Inspect

Lit les deux prochains créneaux RÉELLEMENT libres dans l'agenda connecté à Ficiel (Calendly ou Google Agenda, page Intégrations) : le plus proche, puis le plus proche d'un autre jour, dans les 7 prochains jours, au moins 2 h après maintenant. Ce sont les seuls créneaux réellement libres. Sans agenda connecté, l'outil le dit : envoyez alors le lien.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

ficiel_get_statsStatistiques de l'organisationA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (tuiles et courbe). Les agrégats de la page Statistiques de Ficiel sur une période : conversations actives, avec message envoyé, avec réponse, qualifiées, en attente d'appel, rendez-vous pris, messages reçus et envoyés, suggestions utilisées, plus la série temporelle et les taux de réponse et de rendez-vous calculés comme dans l'interface. Qualifiées / en attente d'appel / rendez-vous pris comptent les contacts passés à l'étape SUR la période. La fenêtre ne remonte jamais avant l'inscription de l'organisation (activity_since) : l'historique importé plus ancien n'est pas de l'activité.

ParametersJSON Schema
NameRequiredDescriptionDefault
granularityNoGranularité de la série temporelle.day
period_daysNoPériode en jours jusqu'à aujourd'hui (défaut 30, maximum 730 soit 24 mois).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds genuinely non-obvious behavior: that a screen is rendered, that qualified/call-waiting/booked counts reflect contacts moved to the stage DURING the period, and that the window never extends before activity_since. Those counting and windowing rules materially affect how results must be interpreted.

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?

Front-loaded with the display action and the resource, followed by the metric inventory and then the interpretation rules. It is dense and only mildly redundant in enumerating ten metrics, but every clause carries meaning and nothing is buried at the end.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and it does so by listing the aggregates and the computed rates. Combined with the annotation-profile and only two well-documented parameters, the definition is complete enough for correct invocation, though the exact return shape is still left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema and the baseline is 3. The description references the period and time series but adds no syntax or format detail beyond what the schema provides.

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

Purpose4/5

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

The verb+resource are clear ("AFFICHE UN ÉCRAN" / "Statistiques de l'organisation") and the description enumerates the exact aggregates returned, which distinguishes it well from the funnel, channel-specific and synthesis siblings. It stops short of naming any sibling explicitly, so it earns 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is implied (this is the org-wide statistics page over a period) but there is no explicit statement of when to prefer it over ficiel_get_stats_by_channel, ficiel_get_funnel or ficiel_synthese. The reader must infer the choice from the metric list.

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

ficiel_get_stats_by_channelStatistiques par canalB
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (un bloc par compte, avec son logo). Les mêmes agrégats que ficiel_get_stats, découpés par canal connecté, sur une période.

ParametersJSON Schema
NameRequiredDescriptionDefault
period_daysNoPériode en jours jusqu'à aujourd'hui (défaut 30).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, non-open-world, so the safety profile is covered by structured data. The description adds that output is one block per account with its logo, which is modest but real UI/behavior context. It does not cover pagination, channel coverage when none are connected, or output shape beyond the visual metaphor.

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?

Two tightly packed clauses with no filler and the scoping constraint (by connected channel, over a period) is front-loaded. Slightly denser than ideal but every phrase carries information.

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

Completeness3/5

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

For a single-optional-parameter read tool with no output schema and annotations covering safety, the description is close to sufficient. It is thin on what happens with zero connected channels and does not describe the aggregate set returned, which matters since there is no output schema to fall back on.

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

Parameters3/5

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

Only one parameter exists and the schema description coverage is 100%, so the schema already documents period_days with its default, min and max. The description adds 'sur une période' but no syntax, boundary behavior, or timezone details. Baseline 3 is correct when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('AFFICHE UN ÉCRAN') and resource (stats by connected channel), and explicitly anchors to the sibling ficiel_get_stats by saying the aggregates are 'les mêmes... découpés par canal connecté'. That differentiates it from get_stats and from channel-adjacent tools like get_channel_status, though 'un écran' is UI-flavored rather than API-precise.

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

Usage Guidelines3/5

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

The reference to ficiel_get_stats implies when to choose this tool (same aggregates but split by channel), but there is no explicit when/when-not statement or guidance on choosing between this and ficiel_get_channel_status or ficiel_compare_periods. Usage is implied rather than stated.

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

ficiel_laisses_en_vuQui relancer (laissés en vu)A
Read-onlyIdempotent
Inspect

AFFICHE UN WIDGET : la liste des contacts à relancer, une carte par contact (nom, canal, dernier message, depuis quand, étape, et s’il a VU ton dernier message), avec les boutons Relancer, Voir la conversation et Ne plus proposer. Avec vus_seulement=true, seulement les contacts qui ont vu le dernier message. Même sélection que les relances de Ficiel : seulement des contacts qui ont déjà répondu au moins une fois, hors liste noire, hors « Ne pas contacter », hors étapes écartées et contacts exclus. Le bouton Relancer ouvre la carte de relance dans le widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
stageNoClé d’étape du pipeline (stage_key).
cursorNoSuite de la liste (next_cursor).
channelNoCanal : instagram, whatsapp ou linkedin.
account_idNoUn compte connecté précis (identifiant de compte).
period_daysNoSilence minimal en jours depuis notre dernier message (défaut 7).
vus_seulementNotrue = seulement ceux qui ont VU notre dernier message sans répondre (« laissés en vu »).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false). Beyond that, the description discloses a behavior the annotations cannot: this tool renders an interactive widget with Relancer / Voir la conversation / Ne plus proposer buttons, and that Relancer opens a follow-up card in the widget. It omits any statement of pagination behavior despite a cursor parameter.

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 definition is front-loaded with the widget nature of the tool, then moves to filtering rules, with no obvious filler sentences. It is somewhat dense and long, but every clause (card fields, buttons, eligibility exclusions) contributes information an agent needs.

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

Completeness4/5

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

With no output schema, the description does the work of explaining the return shape by describing the per-contact card and its fields, plus the interactive buttons. The main residual gap is that cursor-based paging is never mentioned, but selection criteria and widget behavior are otherwise complete.

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

Parameters3/5

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

Schema description coverage is 100% across 6 parameters, so the schema already carries parameter documentation and baseline 3 applies. The description reinforces vus_seulement and implies the stage/channel filters via the card fields, but adds no syntax or format detail beyond what the schema provides.

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

Purpose4/5

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

The description uses a specific verb+resource ('AFFICHE UN WIDGET : la liste des contacts à relancer') and enumerates exactly what each card contains and which actions it exposes, so the agent knows precisely what this tool produces. It does not, however, explicitly distinguish itself from close siblings such as ficiel_find_dormant_leads or ficiel_carte_relance; it only alludes to 'les relances de Ficiel'.

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

Usage Guidelines3/5

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

The description gives strong eligibility semantics (only contacts who have replied at least once, excluding blacklist, 'Ne pas contacter', skipped stages, and excluded contacts) and explains vus_seulement=true. But it never states when to reach for this tool versus the many sibling list/follow-up tools, so routing is left to inference.

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

ficiel_list_agent_config_versionsHistorique de la configuration de KordA
Read-onlyIdempotent
Inspect

Liste les versions de la configuration de Kord, de la plus récente à la plus ancienne (chaque version est l'état d'AVANT une modification), chacune avec son texte COMPLET : version_id, date, taille, instructions entières. Paginé (limit, 10 par défaut, 30 au plus ; cursor = next_cursor de la page précédente) : un texte n'est jamais coupé. Avec version_id, renvoie cette seule version. Lecture seule. Sert à retrouver un état antérieur avant ficiel_restore_agent_config_version.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNombre de versions par page (10 par défaut, 30 au plus).
cursorNonext_cursor de la page précédente.
version_idNoFacultatif : une version précise.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false. The description adds meaningful behavioral context beyond annotations: pagination rules (limit default 10, max 30), cursor semantics (next_cursor), and the guarantee that text is never truncated. Doesn't describe error behavior or what happens with an invalid version_id.

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

Conciseness5/5

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

Dense but front-loaded: ordering (newest to oldest), the key semantic (state BEFORE modification), the field list, pagination rules, and the usage purpose. Every sentence earns its place with no redundancy.

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?

Three optional params, no output schema, but the description compensates by describing the returned field structure (version_id, date, taille, instructions entières) and the pagination contract. Complete enough for an agent to call correctly and interpret the result.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining cursor usage ('cursor = next_cursor de la page précédente') and the single-version retrieval mode ('Avec version_id, renvoie cette seule version'), which clarifies the mutual-exclusion semantics between pagination and version_id lookup.

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?

States a specific verb+resource (list versions of Kord configuration) and adds a non-obvious semantic precision: each version is the state of AVANT une modification, and each entry contains the full text. Distinguishes itself clearly from siblings like ficiel_get_agent_config.

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?

Explicitly names the alternative action it precedes: 'Sert à retrouver un état antérieur avant ficiel_restore_agent_config_version.' This tells the agent exactly when to use this tool versus the restore sibling.

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

ficiel_list_conversationsLister les conversationsA
Read-onlyIdempotent
Inspect

Liste paginée des conversations de votre organisation, du dernier message le plus récent au plus ancien, échanges à deux ET groupes. Filtres : canal, étape du pipeline, tags (noms exacts, voir ficiel_list_tags_and_stages), période du dernier message, non lues, vu sans réponse, kind (direct ou group). Chaque élément est un résumé (nom, canal, étape, tags, dernier message EN ENTIER) : le détail est dans la conversation complète. last_outbound_seen dit si notre dernier message a été vu (vu, non_vu, inconnu ; null si le dernier message vient du contact) : fiable sur WhatsApp, sur Instagram seulement quand la lecture est attribuée au contact, inconnu sur LinkedIn. « inconnu » ne veut jamais dire « pas lu » (confirmations de lecture coupées, ou canal muet). Chaque élément porte un link ouvrable dans un navigateur (URL par identifiant, ouvre toujours la conversation) et un link_readable lisible (/inbox/@pseudo@canal) quand la fiche le permet. Un groupe porte kind=group et la liste de ses participants (déduite des messages) ; un échange à deux porte kind=direct.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall (défaut) = tout ; direct = échanges à deux seulement ; group = conversations de groupe seulement.
tagsNoNoms de tags : la conversation doit porter AU MOINS un de ces tags.
limitNoNombre d'éléments par page (défaut 20, maximum 100).
stageNoClé d'étape du pipeline (stage_key), ex. "qualifying".
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger.
date_maxNoDernier message jusqu'à cette date (ISO 8601).
date_minNoDernier message à partir de cette date (ISO 8601).
has_unreadNotrue = seulement les conversations non lues.
include_archivedNotrue = inclure les conversations archivées (exclues par défaut).
seen_without_replyNotrue = seulement les échanges à deux où notre dernier message a été VU par le contact, sans réponse depuis. Les conversations dont la lecture est inconnue ne sortent jamais ici.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover safety (readOnly, idempotent, non-destructive), so the description's added behavioral depth is notable: it explains per-channel reliability of last_outbound_seen, that 'inconnu' never means 'not read', how link vs link_readable behave, and that group participants are inferred from messages. This is exactly the operational nuance an agent cannot get from structured fields.

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?

Purpose and sort order are front-loaded, and the filter enumeration follows logically. The middle section on last_outbound_seen, links, and group participants is dense and reads as one long paragraph, which slightly hurts scannability, but every clause conveys real information.

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 an 11-parameter tool with no output schema, the description carries the return-shape burden well: it describes each item as a summary (name, channel, stage, tags, full last message), documents link/link_readable, last_outbound_seen values, and group vs direct shape. An agent has enough to call and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all 11 parameters including enums and ranges. The description mostly restates the filter list; its only genuine addition is the cross-reference to ficiel_list_tags_and_stages for exact tag names, which is marginal value.

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?

States a specific verb and resource (paginierte Liste der Konversationen der Organisation), the sort order (letzte Nachricht zuerst), and the scope (Direkt- UND Gruppengespräche). It also distinguishes itself from the detail view by noting each item is only a summary with detail in the full conversation, routing the agent to ficiel_get_conversation.

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

Usage Guidelines4/5

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

Gives a clear context: it is the filtered, paginated listing tool and points to ficiel_list_tags_and_stages for exact tag names, and to the full conversation for detail. It does not explicitly contrast itself with ficiel_search or say when a listing is preferable to a search, so it falls short of the 5-level when/when-not/alternatives framing.

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

ficiel_list_lead_mergesFiches réunies sur un contactA
Read-onlyIdempotent
Inspect

Liste les fusions ENCORE ACTIVES dont ce contact est la fiche principale (« Fiches réunies ici » dans l'application) : merge_id, fiche réunie, date, auteur, nombre de conversations déplacées. Le merge_id sert à ficiel_unmerge_leads. legacy=true signale une ancienne fusion dont les tags et notes ne pourront pas être rendus. Lecture seule.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesContact principal (lead_id).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnlyHint/idempotent/destructive=false, and the description reinforces 'Lecture seule.' It adds real behavioral context beyond annotations: the returned fields, the legacy=true flag with its consequence (tags/notes cannot be restored), and the linkage of merge_id to the unmerge tool. It does not describe pagination or filtering behavior, keeping it from a 5.

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?

Single dense sentence front-loads the core scope ('fusions ENCORE ACTIVES... fiche principale') then lists fields and the legacy caveat. All content earns its place, though the enumeration of returned fields and mid-sentence reference to another tool slightly compress readability.

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

Completeness4/5

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

For a read-only, single-parameter list tool with no output schema, the description supplies the essential missing pieces: what is returned, the meaning of merge_id, the legacy caveat, and the read-only stance. Adequate for correct invocation; only filtering/pagination and empty-result behavior are unaddressed.

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

Parameters3/5

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

Only one parameter (lead_id) with 100% schema coverage that already documents it as the primary contact. The description adds no syntax, format, or edge-case detail for lead_id beyond implying it is the subject fiche. Baseline 3 holds when the schema does the heavy lifting.

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?

States a specific verb (Liste) and resource (fusions ENCORE ACTIVES) scoped to the primary fiche, and explicitly names the returned fields (merge_id, fiche réunie, date, auteur, conversations déplacées). It also cross-references the sibling ficiel_unmerge_leads, making it clearly distinguishable from ficiel_merge_leads.

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

Usage Guidelines4/5

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

Implicitly clarifies the use case: return only active merges where this contact is the main fiche. It explicitly points to ficiel_unmerge_leads for the merge_id's purpose, but does not state when NOT to use it (e.g., use ficiel_get_lead for general contact info) nor name a direct alternative for listing passive/legacy merges.

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

ficiel_list_learned_patternsLister les règles apprisesA
Read-onlyIdempotent
Inspect

Liste les règles apprises par Kord (style, objections, ouvertures) avec leur état de validation. "proposed" = en attente de votre décision (voir ficiel_approve_learned_patterns, ficiel_dismiss_learned_patterns, ficiel_convert_learned_patterns), "approved" = adoptée, "dismissed" = écartée, "auto" = règle obligatoire de la plateforme (jamais proposée à la modification).

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNotrue = seulement les règles actuellement actives.
review_stateNoFiltre par état. Sans filtre : toutes les règles.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the four state values and the important constraint that 'auto' rules are platform-mandatory and never offered for modification, which an agent could not infer from annotations or schema alone.

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?

Two sentences, front-loaded with the core purpose, and the fairly long enum gloss is justified because those values drive agent decisions. Slightly dense but no sentence is filler.

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

Completeness4/5

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

For a read-only filtered list with no output schema, the description covers purpose, filter states, and follow-up actions. It stops short of indicating what a returned rule record contains (rule text, category, timestamps), a minor gap given there is no output schema to fall back on.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds meaning beyond the schema by explaining what each review_state enum value signifies in terms of workflow. It does not clarify the interaction between active_only and review_state, which keeps it from a 5.

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?

States a specific verb and resource ('Liste les règles apprises par Kord') and enumerates the rule categories (style, objections, ouvertures) plus the validation state carried in the result. An agent can distinguish this immediately from the sibling ficiel_approve/dismiss/convert_learned_patterns tools, which the description explicitly names.

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

Usage Guidelines4/5

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

Explains that 'proposed' means awaiting the user's decision and points to the exact sibling tools to act on it (approve, dismiss, convert), which effectively routes read vs. write. It does not spell out a negative case (e.g., use this before deciding, not after), but the context is clear.

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

ficiel_list_pending_cardsCartes de relance en attenteA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (une carte par relance prête, à ouvrir). Liste les cartes de Kord qui attendent une décision : le lot de relances du matin (kind=relance_du_lot, palier d'ancienneté, date du lot) et les suggestions en attente. Chaque carte donne card_id, contact, canal, conversation_id, TEXTE EXACT qui serait envoyé, raison de Kord et âge en jours. Seules les cartes texte sont listées ; une carte vocale se valide dans l'application. Lecture seule : rien n'est envoyé.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoCartes par page (défaut 50, maximum 100). La suite avec next_cursor : aucune carte n'est omise.
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, idempotent), but the description adds meaningful behavioral detail beyond them: only text cards are listed, voice cards are excluded, and it shows the exact text that would be sent with age in days. The closing 'Lecture seule : rien n'est envoyé' reinforces rather than contradicts the annotations.

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?

Front-loaded with the core action ('AFFICHE UN ÉCRAN') followed by scope and return fields. It is a dense single block rather than short, but each clause earns its place by describing contents and the text-only restriction; nothing is redundant filler.

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?

There is no output schema, so the description must carry return-value information, and it does: it enumerates each card's fields (card_id, contact, canal, conversation_id, exact text, reason, age). Combined with the text-only scope note and read-only nature, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, cursor, and the channel enum are already fully documented in the schema. The description adds no parameter syntax, defaults, or pagination hints beyond what the schema provides, which is the baseline 3 when structured data does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Liste les cartes de Kord qui attendent une décision') and even describes the two card kinds (batch follow-ups and pending suggestions). It is clear and concrete, but it never names or contrasts with siblings like ficiel_carte_relance or ficiel_decide_card, so the sibling differentiation that would lift it to a 5 is absent.

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

Usage Guidelines3/5

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

Usage is implied by the content description ('cartes qui attendent une décision') and one exclusion is given ('une carte vocale se valide dans l'application'), which tells the agent not to look for voice cards here. However, there is no explicit when-to-use versus ficiel_decide_card / ficiel_carte_relance, and no stated preconditions, so it stays at the implied-usage level.

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

ficiel_list_scheduledLister les messages programmésA
Read-onlyIdempotent
Inspect

AFFICHE UN ÉCRAN (la liste des messages programmés). Liste les messages programmés (« Prévoir ce message ») de votre organisation, ou d'une seule conversation, texte EN ENTIER. Par défaut, seulement ceux encore en attente. Paginé (next_cursor), total exact.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMessages par page (défaut et maximum 100).
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
statusNoStatut à afficher. Par défaut : en attente ET en échec des 7 derniers jours, avec la raison.
conversation_idNoLimiter à une conversation.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description usefully adds pagination (next_cursor), an exact total, and full-text output. However, its claim that the default shows 'only those still pending' conflicts with the schema's stated default (pending AND failed of the last 7 days), introducing confusion about actual behavior.

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?

Front-loaded with the action, then scope, default, and pagination in a compact set of clauses. The 'AFFICHE UN ÉCRAN' parenthetical is slightly odd but harmless; overall dense with little waste.

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

Completeness4/5

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

For a read-only list tool with full schema coverage and rich annotations, the description covers scope, default filtering, and pagination/total. The one gap is the default-filter discrepancy noted above; otherwise nothing essential to invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description echoes pagination (next_cursor) and scoping (conversation) but adds no format or semantics beyond what the schema provides; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (scheduled messages), and clarifies scope as organization-wide or a single conversation. It is distinguishable from siblings like ficiel_schedule_message (create) and ficiel_cancel_scheduled (mutate), though it does not name those alternatives directly.

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

Usage Guidelines3/5

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

Provides an implied default ('Par défaut, seulement ceux encore en attente') but offers no explicit when-to-use / when-not-to-use guidance and never names an alternative tool. Adequate but leaves routing to inference.

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

ficiel_list_tags_and_stagesRéférentiel tags, étapes, canaux et voixA
Read-onlyIdempotent
Inspect

Les noms exacts à utiliser dans les autres outils : tags de l'organisation, étapes du pipeline (stage_key et libellé), canaux connectés (avec l'état de la délégation et les horaires calmes de chacun).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds genuine return-content context beyond the annotations by disclosing that each channel entry carries delegation state and quiet hours, which an agent could not infer otherwise.

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?

A single sentence, front-loaded with the reason to use the tool and then the payload contents. It is dense but slightly run-on due to stacked parentheticals; every clause still carries information, so it is efficient overall.

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

Completeness4/5

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

With no output schema, the description must carry the return-value burden, and it does enumerate the entity groups returned plus per-channel state details. It is adequate for a zero-parameter reference tool, though it could note the shape or ordering of the returned collections.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 under the scoring rules. There is nothing further for the description to disambiguate on the input side.

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

Purpose4/5

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

The description states a specific verb-like intent (a reference list of exact names to reuse in other tools) and enumerates exactly what is returned: tags, pipeline stages with stage_key and label, and connected channels. It is clearly distinguishable from mutating siblings like add_tag, create_tag, update_tag, and set_stage, though it does not name a sibling directly.

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

Usage Guidelines4/5

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

The opening clause 'les noms exacts à utiliser dans les autres outils' gives a clear reason and moment to call this tool: resolve identifiers before invoking tools that take tag or stage names. There are no explicit when-not conditions or named alternatives, but the usage context is unambiguous.

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

ficiel_list_team_membersMembres de l'équipeA
Read-onlyIdempotent
Inspect

Les membres de votre organisation, comme l'écran Réglages › Équipe : adresse email, Admin ou Agent, propriétaire ou non, s'il s'est déjà connecté, état de son invitation, ses permissions (Assistant, Envoyer des messages, Automatisations, Exporter, Tags et étapes, Statistiques), les tags qui lui sont masqués et les canaux qu'il voit. Un Admin a toutes les permissions. Lecture seule : inviter, modifier ou retirer un membre se fait dans Ficiel.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context: that this is read-only and that all mutation flows live in the Ficiel UI, plus the semantic rule 'Un Admin a toutes les permissions', which explains how to interpret the permission fields. It does not discuss ordering, volume or result limits.

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?

Purpose is front-loaded in the opening clause, followed by the field inventory and then the read-only caveat. The long parenthetical permission list is dense but earns its place since there is no output schema to carry that information. No filler sentences.

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?

With no output schema and zero parameters, the description carries the full burden of explaining what comes back, and it does so field by field, including the non-obvious rule about Admin permissions. It also closes the loop on mutation by pointing to Ficiel. Nothing an agent needs in order to call and interpret this tool is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The field enumeration describes output rather than inputs, which is appropriate here.

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

Purpose4/5

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

The description names the resource unambiguously ('Les membres de votre organisation') and enumerates the exact fields returned (email, Admin/Agent, owner status, login state, invitation status, permissions, hidden tags, visible channels). It is immediately distinguishable from every sibling, all of which operate on leads, conversations, tags or automations rather than team members. It lacks an explicit verb, but the purpose is not in doubt.

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

Usage Guidelines4/5

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

It gives an explicit when-not boundary: 'Lecture seule : inviter, modifier ou retirer un membre se fait dans Ficiel', telling the agent not to attempt mutations through this tool. There is no sibling alternative to route to for listing members, so no alternative needs naming. It stops short of stating a positive trigger condition (e.g. when to consult the team list), which keeps it from a 5.

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

ficiel_list_templatesLister les modèles de messagesA
Read-onlyIdempotent
Inspect

Liste les modèles de messages (réponses types) de votre organisation, dans l'ordre de l'interface : épinglés, puis les plus utilisés. Chaque modèle donne template_id, titre, texte complet (avec ses variables {prénom}, {ig_handle}, {date}, {stage_pipeline}), catégorie et nombre d'utilisations. Filtrable par mot (titre ou texte) et par catégorie. Lecture seule.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoModèles par page (défaut 50, maximum 100), texte de chaque modèle EN ENTIER. La suite avec next_cursor.
queryNoMot ou fragment à chercher dans le titre ou le texte.
cursorNoCurseur de pagination renvoyé par l'appel précédent (next_cursor).
categoryNoCatégorie exacte.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: the UI ordering, the exact fields returned, the variable syntax inside template text, and the fact that filtering can target title or body.

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 a compact block of sentences with the core purpose and ordering front-loaded, and every clause carries information about scope, ordering, return fields, or filtering. It is slightly dense but not redundant.

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

Completeness4/5

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

For a read-only listing tool with no output schema, the description does useful work by enumerating returned fields and explaining variable syntax and ordering. Pagination behavior is covered by the input schema, so the only minor gap is not naming sibling alternatives or explaining cursor continuation in prose.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, query, cursor, and category are already documented in the schema. The description only restates that filtering works by word or category, adding no syntax or format detail beyond what the schema provides. Baseline 3 is appropriate.

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 description states a precise verb and resource: it lists message templates for the organization. It also specifies scope, ordering (pinned then most used), and returned fields, so an agent can distinguish it from sibling tools like ficiel_resolve_template or ficiel_save_template without opening schemas.

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

Usage Guidelines3/5

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

The description implies usage for browsing or searching templates and notes it is read-only, which helps an agent avoid mistaking it for a mutation. However, it never explicitly names alternatives such as ficiel_resolve_template or ficiel_save_template, nor states when this tool should be preferred over them.

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

ficiel_list_voice_clipsVocaux préenregistrésA
Read-onlyIdempotent
Inspect

Liste la bibliothèque de vocaux préenregistrés de votre organisation (Ficiel, Voix) : clip_id, nom, ce qui est dit (transcript) et durée. Ce sont des enregistrements de votre voix, envoyés tels quels. Le clip_id sert à envoyer un vocal (ficiel_send_media, kind=voice) ou à le désigner dans une étape d'automatisation (voice_clip_id). Lecture seule : cet outil n'envoie rien.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond them: that the clips are unmodified recordings of your own voice sent as-is, and it enumerates the returned fields despite no output schema.

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?

Three dense sentences, front-loaded with the verb and resource, then the returned fields, then the usage pointer. Slightly long, but each sentence carries distinct information and nothing is padding.

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?

With no output schema and no parameters, the description fully compensates by listing the return fields and their meaning, plus cross-referencing the sibling tools where the clip_id is consumed. An agent has everything needed to list and then use a clip.

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

Parameters4/5

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

No parameters, so the baseline is 4. The description adds meaning to the output key clip_id by explaining what it is for (sending a voice message or referencing an automation step), which is genuine value beyond the empty schema.

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?

Specific verb (Liste) plus resource (bibliothèque de vocaux préenregistrés de votre organisation) and it enumerates the returned fields (clip_id, nom, transcript, durée). An agent can tell it apart from the many write/send siblings immediately.

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

Usage Guidelines4/5

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

Explains the purpose of the returned clip_id by routing to two concrete consumers (ficiel_send_media with kind=voice, or voice_clip_id in an automation step), giving clear downstream context. It does not say when NOT to use it versus other list tools, but the read-only scope is unambiguous.

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

ficiel_mark_bookedMarquer un rendez-vous prisA
DestructiveIdempotent
Inspect

Enregistre qu'un rendez-vous a été pris avec un contact (par exemple dans votre agenda ou votre CRM, hors de Ficiel) : la date et l'heure RÉELLES du rendez-vous sont posées sur la fiche, et le contact passe à « RDV pris » s'il était avant cette étape (un contact déjà en no-show, signé ou perdu garde son étape, seule la date est mise à jour). Le passage est journalisé et compte dans le flux. N'envoie aucun message : confirmez l'heure au contact avec ficiel_send_message. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesIdentifiant du contact (lead_id).
appointment_atYesDate et heure du rendez-vous, ISO 8601 avec fuseau, ex. 2026-10-08T14:00:00+02:00.

TDQS

A4.1/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: stage transitions to 'RDV pris' only if the contact was before that step, contacts already no-show/signed/lost keep their stage with only the date updated, the action is journalized and counts in the flow, and no message is sent. This complements destructiveHint/idempotentHint with concrete semantics rather than repeating them.

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?

Front-loaded with the core verb and resource, then layers stage behavior and the no-message caveat. It is dense but each clause carries information; only the stage-exception parenthetical is slightly heavy.

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

Completeness4/5

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

For a 2-parameter mutation tool with full schema coverage and annotations covering the safety profile, the description supplies the remaining needed context — stage-transition rules, journaling, absence of messaging, and required scope. No output schema exists, so return values need not be explained.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (lead_id, appointment_at with ISO 8601 format) are already documented. The description reinforces that the real date/time is written to the card but adds no syntax or format detail beyond the schema; baseline 3 is appropriate.

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?

States a specific verb and resource — recording that an appointment was booked with a contact — and clarifies it is done 'hors de Ficiel' (external agenda/CRM), which pins down the exact intent versus siblings like ficiel_book_slot. An agent can identify the right tool without opening the schema.

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

Usage Guidelines4/5

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

Gives clear context: it records an already-taken external appointment, and explicitly routes message confirmation to ficiel_send_message ('N'envoie aucun message'). It also states the required 'write' scope. It stops short of explicitly contrasting with ficiel_book_slot or ficiel_set_stage, but the 'hors de Ficiel' framing makes the distinction inferable.

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

ficiel_mark_conversation_readMarquer une conversation comme lueA
Idempotent
Inspect

Marque la conversation comme lue, comme l'ouverture dans l'interface. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A3.7/5.0
Behavior4/5

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

Goes beyond the annotations by asserting the operation is reversible, sends no messages and deletes nothing, and documents the idempotent outcome ('rien ne change et la réponse le dit (already_in_state)'). This meaningfully reinforces and extends the idempotentHint/destructiveHint metadata.

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?

Short, front-loaded with the action, then the behavioral caveats. Every sentence carries information; minor redundancy between 'réversible' and 'ne supprime rien' but nothing wasteful.

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

Completeness4/5

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

No output schema exists, and the description compensates by describing the response signal (`already_in_state`) and the required write scope. For a one-parameter idempotent flag tool, this is sufficient to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single `conversation_id` parameter, so the schema already carries the semantics. The description adds no format or constraint detail beyond it, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Marque la conversation comme lue') and clarifies the semantics by likening it to opening the thread in the UI. It doesn't explicitly name the sibling `mark_conversation_unread`, though the counterpart relationship is obvious from the name.

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

Usage Guidelines3/5

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

Usage is implied ('comme l'ouverture dans l'interface') and a prerequisite is stated ('Portée « write » requise'), but there is no explicit when-to-use / when-not-to-use guidance or reference to an alternative tool.

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

ficiel_mark_conversation_unreadMarquer une conversation comme non lueA
Idempotent
Inspect

Remet la conversation en non lue, comme dans l'interface. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds real context: it states the operation is reversible, sends no message, deletes nothing, requires 'write' scope, and returns an 'already_in_state' marker on no-op. That is useful behavioral disclosure beyond the structured fields, short only of return-format details.

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?

Four short sentences, front-loaded with the action and followed by scope, side-effect guarantees, and the no-op case. No padding, though 'comme dans l'interface' is the least informative clause.

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

Completeness4/5

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

For a one-parameter mutation tool with no output schema, the description covers the safety profile, reversibility, required scope, and the notable already_in_state response. An agent has what it needs to call this correctly; only the response shape is left implicit.

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

Parameters3/5

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

There is a single parameter (conversation_id) with 100% schema description coverage, so the schema already tells the agent exactly what to supply. The description adds nothing about the identifier format, which is the baseline expectation when the schema does the work.

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

Purpose4/5

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

States a specific verb and resource: putting a conversation back into the unread state, and clarifies the scope covers both one-to-one and group conversations. It does not explicitly name the sibling ficiel_mark_conversation_read as its counterpart, though the name pairing makes the inverse operation discoverable.

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

Usage Guidelines3/5

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

Usage is implied by the description of the operation, and the note about 'already_in_state' tells the agent what happens when the precondition is not met. There is no explicit statement of when to prefer this over alternatives such as ficiel_mark_conversation_read or ficiel_pin_conversation.

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

ficiel_merge_leadsFusionner deux contactsA
DestructiveIdempotent
Inspect

Fusionne le contact satellite_lead_id DANS le contact principal master_lead_id (deux fiches de la même personne), avec la fonction de l'application : conversations re-pointées sur la principale (en cas de collision de canal, l'une est archivée, aucun message n'est supprimé), tags, notes et événements réunis, fiche principale complétée sans rien écraser, la fiche satellite quitte les listes. Réversible avec ficiel_unmerge_leads tant que rien n'est purgé : le merge_id renvoyé sert à défaire. Les chaînes de fusion sont interdites. Une fusion à tort mélange deux historiques de conversation. confirm doit valoir true, c'est la confirmation explicite. N'envoie aucun message. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesDoit valoir true : confirmation que ces deux fiches sont la même personne.
master_lead_idYesContact principal, celui qui reste.
satellite_lead_idYesContact à réunir dans l'autre (il disparaît des listes).

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it says conversations are re-pointed, that a channel collision archives one side without deleting any message, that tags/notes/events are combined, that the master is completed without overwriting, that the satellite leaves the lists, that no message is sent, that 'write' scope is required, and that merge chains are rejected. The annotations only flag destructive/idempotent; the description supplies the actual blast radius.

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?

Front-loads the action and scope in the first clause and packs genuinely load-bearing details (archival behavior, reversibility, prohibitions). It is dense and slightly run-on with parentheticals, but virtually no sentence is filler.

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 destructive, irreversible-looking operation with no output schema, the description covers effects, precedence rules, reversibility handle (merge_id), confirmation requirement, and authorization scope. An agent has everything needed to decide and invoke safely.

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

Parameters4/5

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

Schema description coverage is already 100%, so baseline is 3, but the description adds real meaning: it clarifies the asymmetric direction (satellite is absorbed, master survives) and explains the purpose of confirm as the explicit same-person attestation. It also documents the returned merge_id, which feeds the undo call.

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?

States a specific verb and resource (merge satellite_lead_id INTO master_lead_id) and immediately disambiguates the direction, which is the one thing an agent could get wrong. It also names the sibling tool that reverses it (ficiel_unmerge_leads), so it is clearly distinguishable from the surrounding ~70 tools.

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

Usage Guidelines4/5

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

Gives a clear usage condition (two fiches of the same person) and a prohibition (fusion chains are forbidden), plus the guard that confirm must be true. It routes to the undo path (ficiel_unmerge_leads) with its precondition ('tant que rien n'est purgé'), but does not compare against non-merge alternatives such as update_lead.

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

ficiel_ne_plus_proposerNe plus proposer (bouton du widget)
Idempotent
Inspect

Geste du bouton Ne plus proposer : le contact sort des relances, comme le refus d’une carte du lot dans Ficiel (tag « Ignorer », levé s’il répond ou si le tag est retiré). Les relances en attente pour cette conversation sont refusées.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idNo
conversation_idYes
ficiel_pause_conversationMettre Kord en pause (ou le reprendre) sur une conversation
Idempotent
Inspect

Coupe (ou réactive) ce que Kord fait tout seul sur CE contact précis : le lot quotidien de relances et la réponse en délégation. N'affecte jamais le bouton « Suggérer » ni votre capacité à écrire à la main. Portée « write » requise. Exactement le même réglage que le bouton pause de la conversation dans Ficiel.

ParametersJSON Schema
NameRequiredDescriptionDefault
pausedYestrue = mettre Kord en pause sur ce contact, false = reprendre.
lead_idYesIdentifiant du contact (lead_id).
ficiel_pin_conversationÉpingler une conversationA
Idempotent
Inspect

Épingle la conversation en haut de la boîte de réception. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds useful behavioral detail: it is reversible, sends no message, deletes nothing, returns already_in_state when no change occurs, and requires write scope. Some of this overlaps with annotations, but the already_in_state response and write-scope requirement add real context.

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

Conciseness5/5

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

The description is short, front-loaded with the action, and every sentence adds value: scope, reversibility, no-send/no-delete behavior, idempotent response, and permission requirement. There is no padding.

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 simple one-parameter mutation with no output schema, the description covers the critical behavioral details an agent needs: effect, non-effects, reversibility, idempotency, response behavior, and required write scope. Nothing essential is missing.

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

Parameters3/5

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

There is one parameter and schema description coverage is 100%, so the schema already documents conversation_id clearly. The description does not add syntax or semantic detail beyond the schema, making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: pinning a conversation to the top of the inbox, and clarifies it applies to one-to-one or group conversations. It does not explicitly name the sibling unpin tool or otherwise differentiate among alternatives, so it is clear but short of the full 5 criteria.

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

Usage Guidelines4/5

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

It gives clear usage context: pinning a conversation, applicable to both two-person and group conversations. It does not state when not to use the tool or explicitly route the agent to ficiel_unpin_conversation for reversal, leaving that to inference from “Réversible”.

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

ficiel_prepare_followupPréparer une relance
Idempotent
Inspect

AFFICHE UN ÉCRAN (la carte de relance, modifiable, avec le bouton Envoyer). Fait rédiger par Kord UNE relance pour une conversation, exactement comme le bouton « Préparer » de la liste « À relancer » : verdict de qualification, puis rédaction, puis carte en attente. N'ENVOIE RIEN : la carte s'approuve ensuite avec ficiel_approve_card (ou dans Ficiel). recipient est OBLIGATOIRE, confronté au vrai contact avant toute génération. Refusé avant tout appel à l'IA si le contact n'est pas relançable (liste noire, tag ou étape exclus des relances, Kord coupé, au repos, déjà contacté aujourd'hui, automatisation en cours, canal déconnecté, groupe). Une carte déjà en attente est rendue telle quelle, sans nouvelle rédaction. Coûte une conversation du quota mensuel. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
conversation_idYesConversation à relancer (conversation_id).
ficiel_reject_cardRejeter une carte de relanceA
Idempotent
Inspect

Écarte une carte de relance sans rien envoyer ; le rejet nourrit l'apprentissage de Kord. Pour une carte du lot quotidien, le contact est aussi retiré des relances (tag « Ignorer », comme dans l'application, retirable depuis la fiche du contact) : confirm_exclusion=true est alors exigé. Cartes texte seulement. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesIdentifiant de la carte (card_id).
confirm_exclusionNoCarte du lot quotidien : true pour confirmer le retrait du contact des relances.

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that nothing is sent, that the rejection feeds Kord's learning, and that for daily-batch cards the contact is additionally removed from follow-ups via an 'Ignorer' tag that is reversible from the contact sheet. That is exactly the side-effect and reversibility information an agent needs for a non-readOnly write. No contradiction with destructiveHint=false, since the tag removal is explicitly described as removable.

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?

Front-loads the core effect ('Écarte... sans rien envoyer') and then qualifies it with the conditional exclusion rule, the text-only restriction and the scope requirement. Dense but every clause carries a distinct constraint; the parenthetical about the app/tag origin is slightly incidental.

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

Completeness4/5

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

For a 2-parameter write tool with no output schema, the description covers the constraints, the conditional side effect and the required scope. It stops short of saying what the call returns (e.g. whether the tag or the learning update is echoed back), which would be the only remaining gap.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning to confirm_exclusion: it is only demanded for daily-batch cards and true authorizes removal of the contact from follow-ups. card_id itself is left to the schema, which is fine given its full documentation.

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

Purpose4/5

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

States a specific verb and resource ('Écarte une carte de relance') plus a key differentiator: nothing is sent, unlike sending tools. It does not explicitly name the neighbouring choices (approve_card, defer_card, ne_plus_proposer), so the boundary with those siblings must be inferred.

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

Usage Guidelines3/5

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

Usage is implied through constraints (text cards only, write scope, confirm_exclusion required for daily-batch cards) but there is no explicit statement of when to reject rather than defer or approve a card. The conditional rule for the daily batch is well specified, but the choose-this-tool guidance is left implicit.

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

ficiel_resolve_templateRésoudre un modèle pour un contactA
Read-onlyIdempotent
Inspect

Renvoie le texte d'un modèle avec les variables remplies pour un contact ({prénom}, {ig_handle}, {date}, {stage_pipeline}), comme l'interface au moment de l'insertion. Les variables sans valeur pour ce contact restent telles quelles et sont listées dans unresolved_variables (à relire avant tout envoi). N'envoie rien : le texte obtenu s'envoie ensuite avec ficiel_send_message (destinataire nommé obligatoire). Lecture seule.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesIdentifiant du contact (lead_id).
template_idYesIdentifiant du modèle (template_id).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint true and destructiveHint false, and the description adds real behavior beyond them: unresolved placeholders are left verbatim and surfaced in unresolved_variables, which must be reviewed before sending. It does not describe pagination or limits, but the response-content caveat is valuable given there is no output schema.

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?

It is front-loaded with what is returned, then the unresolved-variable caveat, then the send follow-up, then the read-only note. Dense and mostly waste-free, though 'Lecture seule' partially duplicates the readOnlyHint annotation.

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

Completeness4/5

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

For a schema-less read tool with full safety annotations, it covers the essentials: what is rendered, what happens to unresolved variables, and which tool performs the send. What is missing is minor (no note on how the resolved text is formatted or any size limits).

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

Parameters3/5

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

Schema description coverage is 100% with only two UUID parameters (template_id, lead_id) already documented in the schema. The description only implicitly confirms the contact/template pairing and adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 description names a specific verb (renvoie/rend) and resource (le texte d'un modèle rempli pour un contact) and even lists the interpolated variable syntax ({prénom}, {ig_handle}, {date}, {stage_pipeline}), making it clearly distinct from ficiel_list_templates, ficiel_save_template and ficiel_send_message.

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

Usage Guidelines4/5

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

It routes the agent explicitly: 'N'envoie rien : le texte obtenu s'envoie ensuite avec ficiel_send_message (destinataire nommé obligatoire)', which names the sibling to use for the actual send and implies the review-before-send workflow. It does not give an explicit 'do not use this when…' clause, so it stops short of a 5.

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

ficiel_restore_agent_config_versionRestaurer une version de la configuration de KordA
Destructive
Inspect

Remet la configuration de Kord (instructions personnalisées, prompt, profil) dans l'état d'une version de ficiel_list_agent_config_versions. Effet immédiat sur les réponses de Kord. Réversible : la restauration enregistre elle-même l'état qu'elle remplace comme nouvelle version, que l'on peut restaurer à son tour. Permet d'annuler une édition des instructions. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYesVersion à restaurer (version_id).

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations it explains that the change takes immediate effect on Kord's responses, requires 'write' scope, and — critically — that the operation is reversible because it saves the state it replaces as a new version. This last point adds meaningful nuance to the destructiveHint=true annotation rather than merely restating it. Extensive behavioral context the structured fields do not carry.

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?

Front-loaded with the core action, then effect, reversibility, use case, and scope. Every sentence carries real information, though the block is slightly dense for a single-parameter tool.

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 mutation tool with annotations covering the safety profile and no output schema, the description supplies the missing pieces an agent needs: immediate effect, reversibility/recovery path, required scope, and the origin of the required parameter. Nothing essential is left out.

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

Parameters3/5

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

Schema description coverage is 100% and the single version_id parameter is already documented as a uuid in the schema. The description only points to the sibling list tool as the source, adding no format or semantics beyond the schema. Baseline 3 is correct.

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 description states a specific verb (remet/restaure) and resource (Kord's configuration: custom instructions, prompt, profile) and anchors it to a version sourced from ficiel_list_agent_config_versions. An agent can distinguish this from ficiel_edit_agent_prompt / ficiel_edit_agent_profile without opening any schema.

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

Usage Guidelines4/5

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

It states a clear use case ('permet d'annuler une édition des instructions') and routes the agent to ficiel_list_agent_config_versions to obtain the version_id. It does not explicitly state a when-not condition or contrast against the sibling edit tools, but the intended context is unambiguous.

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

ficiel_save_stageCréer ou modifier une étape du pipelineA
Destructive
Inspect

Crée une étape du pipeline si stage_key n'existe pas (label requis ; clé 2 à 40 caractères en minuscules, chiffres et underscore, commençant par une lettre ; libellé 2 à 60 ; couleur hexadécimale, violet par défaut ; ajoutée en fin de liste), ou modifie l'étape existante (label, color, is_terminal, excludes_from_relance : seuls les champs fournis changent). La clé ne change jamais. excludes_from_relance retire de la relance les contacts de cette étape. Ne supprime ni ne réordonne aucune étape. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoCouleur hexadécimale à six chiffres.
labelNoLibellé affiché (2 à 60 caractères). Requis à la création.
stage_keyYesClé de l'étape (stage_key de ficiel_list_tags_and_stages pour une existante).
is_terminalNotrue = étape finale du pipeline.
excludes_from_relanceNotrue = les contacts de cette étape sortent des relances.

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) it discloses partial-update semantics ('seuls les champs fournis changent'), an immutable key, the side effect that excludes_from_relance removes contacts from follow-ups, and the required write scope. The statement that it deletes nothing does not contradict destructiveHint, since the destructive effect is the relance exclusion, but that nuance is left implicit.

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?

A single dense paragraph that is front-loaded with the create-vs-modify decision and then the constraints, with no filler sentences. Some constraint details duplicate the schema, which costs a little efficiency, but nothing is off-topic.

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

Completeness4/5

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

With no output schema, the description need not cover return values, and it compensates well: creation constraints, update semantics, side effects, and the permission requirement are all present. It leaves error behavior (invalid key format, unknown stage_key collisions) unspecified, which is a minor gap for a write tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: stage_key naming rules (2–40 chars, lowercase/digits/underscore, must start with a letter), the purple default for color, and append-to-end placement. It also explains the behavioral effect of excludes_from_relance rather than just restating the boolean.

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

Purpose4/5

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

The description states a precise verb+resource pair with upsert semantics: create a pipeline stage when stage_key is absent, otherwise modify the existing one. It clearly scopes the object to the pipeline stage definition rather than a lead's stage, which is the key distinction from siblings like ficiel_set_stage. It never names a sibling tool, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

It gives the condition that selects each branch (stage_key existence), states that label is required for creation, notes the key is immutable, and explicitly excludes behavior (no deletion, no reordering). It also states the 'write' scope prerequisite. What is missing is an explicit pointer to the alternative tools (e.g. ficiel_list_tags_and_stages for resolving a key), which is only implied via the schema.

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

ficiel_save_templateCréer ou modifier un modèle de messageA
Destructive
Inspect

Sans template_id : crée un modèle (title et body requis ; titre 1 à 140 caractères, texte 1 à 4000, catégorie 1 à 60 facultative), comme dans l'interface. Avec template_id : modifie ce modèle, seuls les champs fournis changent (category à null retire la catégorie). Le texte peut contenir {prénom}, {ig_handle}, {date}, {stage_pipeline}. Ne supprime jamais un modèle, n'en envoie aucun. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoTexte du modèle (1 à 4000 caractères).
titleNoTitre (1 à 140 caractères).
categoryNoCatégorie (1 à 60 caractères), ou null pour la retirer.
template_idNoAbsent = création. Présent = modification de ce modèle.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly=false, destructive=true, idempotent=false and openWorld=false, but the description adds genuinely new behavioral context: partial-update semantics ('seuls les champs fournis changent'), the category-null removal rule, and the required write scope. This reconciles the destructiveHint (field overwrite, not deletion) rather than contradicting it.

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 two operating modes are front-loaded and the rest is compact and information-dense. The repeated min/max length constraints ('titre 1 à 140 caractères, texte 1 à 4000') are redundant with the schema and dilute an otherwise tight definition.

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

Completeness3/5

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

With no output schema, the description carries the burden of explaining the response, and it says nothing about what is returned (e.g. the created template's id) or what happens on failure — a real gap for a create operation an agent may need to chain from. Parameter and behavioral coverage are otherwise solid for a 4-parameter tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description exceeds it by explaining the placeholder syntax the body accepts ({prénom}, {ig_handle}, {date}, {stage_pipeline}), which appears nowhere in the schema. The length limits it restates duplicate the schema, adding no extra value.

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 description states a specific verb+resource and splits it precisely by mode: no template_id creates a model, with template_id modifies that model. This cleanly separates it from the read-only siblings list_templates and resolve_template without the agent needing to open any schema.

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

Usage Guidelines4/5

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

It gives explicit conditions for each mode (absence/presence of template_id) and adds clear exclusions — 'Ne supprime jamais un modèle, n'envoie aucun' — which tell the agent this is not a delete or send tool. It stops short of routing to an alternative for deletion, so it is strong but not fully 5-level when/when-not/alternatives guidance.

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

ficiel_schedule_messagePrévoir un message pour plus tard
Destructive
Inspect

Programme l'envoi d'un message texte dans une conversation existante, à une date et une heure choisies. Portée « write » requise. Exactement le mécanisme du bouton « Prévoir ce message » du composer (même table, même réveil, même annulation automatique si le contact répond avant l'heure) : aucune différence entre un message programmé via MCP et un message programmé à la main. Un seul message programmé à la fois par conversation (annulez l'existant avec ficiel_cancel_scheduled pour le remplacer). Le destinataire nommé (recipient) est vérifié TOUT DE SUITE, à la programmation : un message prévu part tout seul le moment venu, se tromper de cible ici ne se rattraperait pas. Les autres garde-fous d'un envoi immédiat s'appliquent à l'HEURE PRÉVUE, pas à la programmation : un refus (plafond du canal, tag bloquant) survient alors et annule le message, visible dans ficiel_list_scheduled.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesTexte du message.
channelNoCanal : requis avec lead_id ; avec conversation_id, sert seulement de vérification.
lead_idNoIdentifiant du contact (lead_id), avec channel. Inutile si conversation_id est donné.
send_atYesDate et heure d'envoi, ISO 8601 AVEC fuseau (ex. 2026-08-31T10:06:00+02:00). Entre 1 minute et 2 mois dans le futur.
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
conversation_idNoIdentifiant de la conversation (conversation_id). Recommandé.
ficiel_send_documentEnvoyer un document écritA
Destructive
Inspect

Envoie un document à partir de son texte, dans une conversation existante (échange à deux, ou groupe via conversation_id). Portée « write » requise. Ficiel fabrique le fichier : format=pdf met en page un texte Markdown (titres, listes, tableaux, citations, code, liens) en PDF ; format=markdown, texte ou csv envoie le texte tel quel en fichier .md, .txt ou .csv (UTF-8). Le texte passe en clair dans contenu, jusqu'à 2 millions de caractères : aucun encodage base64. Le titre donne le nom du fichier, et l'en-tête du PDF si le texte ne commence pas par un titre de niveau 1. Les images du Markdown ne sont pas intégrées au PDF (leur texte alternatif est affiché). Mêmes garde-fous que ficiel_send_media (destinataire nommé vérifié, liste noire, étapes protégées, plafonds, pause de canal). Irréversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
titreYesTitre du document, qui donne le nom du fichier, par exemple « Guide de relance ».
formatYespdf (Markdown mis en page), markdown (.md), texte (.txt) ou csv (.csv).
captionNoMessage accompagnant le document (optionnel).
channelNoCanal de la conversation existante. Requis avec lead_id.
contenuYesTexte entier du document : Markdown pour pdf et markdown, texte brut pour texte, lignes CSV pour csv.
lead_idNoIdentifiant du contact (lead_id), avec channel. Inutile si conversation_id est donné.
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
conversation_idNoIdentifiant de la conversation (conversation_id), échange à deux ou groupe.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (which only declare destructive/non-idempotent/open-world). It discloses the 2,000,000 character ceiling, that text must be plain UTF-8 with no base64, the exact guardrail set shared with ficiel_send_media (verified named recipient, blacklist, protected steps, caps, channel pause), the recipient_mismatch refusal path, and that Markdown images are not embedded in the PDF.

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?

A single dense paragraph with the purpose front-loaded and no filler sentences; nearly every clause adds operational detail. It is long by necessity given four formats and two guardrail domains, though a bulleted structure for the format behaviors would have been easier to scan.

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

Completeness4/5

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

No output schema exists, yet the description anticipates the key failure mode (recipient_mismatch, nothing sent) and the irreversibility. It stops short of describing the success response or the exact cap values alluded to by 'plafonds', leaving minor gaps for an 8-parameter mutation tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: format=pdf paginates Markdown structure while the other formats send text verbatim, and titre serves double duty as file name and PDF header when the text does not begin with an H1. Limits (2M chars, no base64) reinforce the contenu constraint.

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?

States a specific verb and resource (send a document built from its text into an existing conversation), then spells out the four output formats and what the server does with each. It also implicitly separates itself from ficiel_send_media by noting the shared guardrails and by describing server-side file generation from text rather than media upload.

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

Usage Guidelines4/5

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

Gives prerequisites clearly: an existing conversation (1:1 or group via conversation_id), write scope required, and channel+lead_id or conversation_id. It does not explicitly say when to prefer this over ficiel_send_message or ficiel_send_media; the distinction is left to inference from the file-generation semantics.

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

ficiel_send_mediaEnvoyer un médiaA
Destructive
Inspect

Envoie une image, une vidéo, un document ou un vocal enregistré dans une conversation existante (échange à deux, ou groupe via conversation_id). Portée « write » requise. Image/vidéo/document : deux façons de donner le fichier, une seule par appel. Un fichier que vous venez de produire ou que vous avez sous la main : media_base64 (son contenu entier en base64), avec mime_type et file_name, jusqu'à 10 Mo. Un fichier déjà en ligne : media_url, une adresse publique accessible sans authentification (max 10 Mo image, 100 Mo vidéo, 50 Mo document). Le type réel du fichier est vérifié sur son contenu : il doit correspondre au type annoncé. Un document dont le texte est connu (Markdown, texte, CSV) part aussi par ficiel_send_document, qui fabrique le fichier, PDF compris, sans base64. Vocal : un des vocaux préenregistrés de votre organisation (voice_clip_id), envoyé tel quel ; aucun vocal n'est généré. Mêmes garde-fous que ficiel_send_message (destinataire nommé vérifié, liste noire, étapes protégées, plafonds, pause de canal). Irréversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesType de média à envoyer.
captionNoLégende ou texte accompagnant image/vidéo/document (optionnel).
channelNoCanal de la conversation existante. Requis avec lead_id.
lead_idNoIdentifiant du contact (lead_id), avec channel. Inutile si conversation_id est donné.
file_nameNoNom de fichier affiché, par exemple guide.pdf. Requis avec media_base64, optionnel avec media_url.
media_urlNoAdresse publique du fichier déjà en ligne. Pour image, video et file, à la place de media_base64.
mime_typeNoType du fichier donné en media_base64, par exemple application/pdf, image/png, image/jpeg, video/mp4.
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
media_base64NoContenu entier du fichier en base64 (10 Mo au plus), pour un fichier sans lien public. Pour image, video et file, à la place de media_url. Exige mime_type et file_name.
voice_clip_idNoIdentifiant d'un vocal préenregistré de votre organisation (clip_id de ficiel_list_voice_clips). Requis pour kind=voice.
conversation_idNoIdentifiant de la conversation (conversation_id), échange à deux ou groupe.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the destructive/non-idempotent annotations, the description discloses write-scope requirement, content-based type verification, per-type size limits, the one-of constraint, and the inherited safeguards (named-recipient verification, blacklist, protected steps, caps, channel pause) plus recipient_mismatch refusal semantics. This is substantive behavioral context the annotations alone do not provide.

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?

Front-loaded with the action and scope, then organized by media type and delivery method. It is long, but the density is largely justified by 11 parameters and four media kinds; a few clauses (e.g. repeated size figures) could tighten.

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?

With no output schema, the description carries the full burden and does so: it covers all parameter roles, the base64/url decision, the voice constraint, the write scope, and the refusal/irreversibility behavior. An agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by mapping parameters to scenarios: the base64/url one-of choice, voice_clip_id sourcing from ficiel_list_voice_clips, and the mime/file_name coupling. It clarifies cross-field logic beyond the per-field schema text.

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?

States a specific verb+resource ('Envoie une image, une vidéo, un document ou un vocal') and scopes it to an existing conversation, 1:1 or group via conversation_id. It explicitly distinguishes itself from siblings by naming ficiel_send_document and referencing ficiel_send_message for the shared safeguards, so an agent can route correctly.

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?

Explicitly says when to use media_base64 vs media_url (file on hand vs already online, one per call), when to prefer ficiel_send_document for text-known documents, and that voice must be a pre-existing clip rather than generated. Alternatives and their selecting conditions are named, leaving nothing to inference.

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

ficiel_send_messageEnvoyer un messageA
Destructive
Inspect

Envoie un message texte dans une conversation existante, depuis le compte de votre organisation : un échange à deux, ou une conversation de GROUPE. Portée « write » requise. Ciblez la conversation par conversation_id (recommandé, seul moyen pour un groupe), ou un contact par lead_id + channel, ET nommez le destinataire dans recipient : le serveur vérifie que la conversation lui appartient vraiment avant d'envoyer quoi que ce soit. Passe par les mêmes garde-fous que Ficiel, dans cet ordre : liste noire, étapes protégées (échanges à deux), tags bloquants, pause du canal, plafonds d'envoi par canal. Un garde-fou qui refuse = erreur immédiate avec la raison, jamais de mise en attente. La réponse « envoyé » n'est rendue que lorsque le canal a accepté le message et rendu un identifiant ; toute autre issue est une erreur explicite. Dans un groupe, le message est vu par tous les participants ; la réponse porte is_group=true et attend la confirmation du canal. Le message apparaît dans votre boîte de réception comme un envoi normal. Irréversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesTexte du message, tel qu'il partira.
channelNoCanal : instagram, whatsapp, linkedin, telegram ou messenger. Requis avec lead_id ; avec conversation_id, sert seulement de vérification.
lead_idNoIdentifiant du contact (lead_id), avec channel. Inutile si conversation_id est donné.
recipientYesOBLIGATOIRE : le destinataire tel que vous le nommez — nom affiché, @pseudo Instagram ou LinkedIn, numéro pour WhatsApp, nom du groupe pour une conversation de groupe. Le serveur le compare au contact réel de la cible avant tout envoi (casse et accents ignorés ; le nom complet, le prénom seul ou le pseudo exact suffisent). Si Ficiel ne connaît AUCUNE identité pour ce contact (ni pseudo, ni nom, ni numéro), indiquez exactement « sans nom » : c'est la façon de dire que vous assumez l'absence de vérification. Omettre le champ reste refusé. En cas de désaccord, l'envoi est refusé (recipient_mismatch) et rien ne part.
conversation_idNoIdentifiant de la conversation (conversation_id), échange à deux ou groupe. Le canal est celui de la conversation.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive/non-idempotent/open-world, and the description adds substantial context beyond them: the ordered guardrail chain (blacklist, protected steps, blocking tags, channel pause, per-channel send caps), that a refusing guardrail is an immediate error with reason rather than a queued message, that success is only returned once the channel accepted and returned an identifier, that group messages are visible to all participants and flagged is_group=true, and that the action is irreversible.

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?

Long but dense, with purpose and targeting front-loaded before the guardrail and response semantics. Nearly every clause carries distinct information, though the guardrail/response block could be tightened slightly.

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?

No output schema exists, and the description compensates by describing the success response shape (returned only after channel acceptance with an identifier; is_group=true for groups) and the failure mode (explicit error, never a pending state). Nothing an agent needs to invoke and interpret this tool is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics on top: the priority of conversation_id over lead_id+channel, and that recipient is verified server-side against the real contact (with 'sans nom' as the escape hatch) before anything sends, refusing with recipient_mismatch on disagreement. That is meaning beyond the raw field definitions.

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?

States a specific verb+resource+scope: sends a text message into an existing conversation, one-to-one or group, from the organization's account. This cleanly separates it from send_media (media) and schedule_message (deferred), which an agent can distinguish without opening any schema.

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

Usage Guidelines4/5

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

Gives explicit targeting guidance: use conversation_id (recommended, and the only way for a group) or lead_id + channel, and always name the recipient in recipient. It stops short of naming sibling alternatives such as send_media or schedule_message, but the routing conditions it does give are concrete.

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

ficiel_set_automationActiver, désactiver ou modifier une automatisation
DestructiveIdempotent
Inspect

Active/désactive une recette existante, ou remplace le contenu des relances de reengagement_48h (steps). Portée « write » requise. Ne crée jamais de recette : elle doit déjà exister (configurée une première fois dans Ficiel, Automatisations). comment_to_dm ne se modifie que par enabled via cet outil : son contenu (publication surveillée, mot-clé) se règle dans l'interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNoreengagement_48h uniquement : remplace ENTIÈREMENT la séquence de relances. Une liste vide coupe toute relance sans désactiver la recette.
enabledNoActive ou désactive la recette.
recipe_keyYesRecette visée.
ficiel_set_average_dealMontant de l'offre (panier moyen)A
Destructive
Inspect

Règle le montant de votre offre, en centimes (entier de 100 à 100 000 000), ou null pour l'effacer : c'est le panier qui sert à estimer le cash dormant. effective_date (AAAA-MM-JJ, facultative, au plus un an) fait partir le nouveau montant à minuit heure de Paris ce jour-là ; sans elle, il s'applique tout de suite. Chaque changement est historisé (ficiel_get_cash). Mêmes portes que ficiel_get_cash. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
effective_dateNoJour de prise d'effet (calendrier de Paris). Absent = aujourd'hui, tout de suite.
average_deal_centsYesMontant de l'offre en centimes (ex. 11700 pour 117 €), ou null pour l'effacer.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and a write operation, so the bar is lower. The description still adds real context: every change is historized (visible via ficiel_get_cash), the write scope is required, and effective_date schedules the new amount from Paris midnight rather than immediately. It does not describe the response or confirm whether erasing with null removes past history.

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?

A single dense block with the core rule (amount, range, null) front-loaded before scheduling, history and scope details. Every clause carries information, though the phrasing is compressed enough that the one-year cap and midnight semantics take a careful read.

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

Completeness4/5

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

For a two-parameter write tool with rich annotations and no output schema, the description covers units, valid range, null-erase, scheduling semantics, history and required scope. The only gap is that it says nothing about the call's outcome or confirmation, which an agent might want for a destructive, non-idempotent write.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds constraints not present in the schema: the effective_date is capped at one year out and takes effect at midnight Paris time on that day. It also restates the integer range and null semantics, which is redundant with the schema's min/max/anyOf.

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?

States a specific verb and resource ('Règle le montant de votre offre... c'est le panier qui sert à estimer le cash dormant'), plus units and the null-to-erase behavior. The stated purpose (the reference basket used to estimate dormant cash) distinguishes it from the similarly named sibling ficiel_set_lead_deal_amount without needing the schema.

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

Usage Guidelines3/5

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

It gives context on what the value feeds (cash-dormant estimation) and points to ficiel_get_cash for history and shared access gates, but it never says when to set this versus the per-lead sibling ficiel_set_lead_deal_amount or any other alternative. Usage is implied rather than routed.

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

ficiel_set_lead_deal_amountMontant encaissé d'un contactA
DestructiveIdempotent
Inspect

Pose, corrige ou retire (null) le montant réellement encaissé avec un contact, en centimes (entier de 0 à 100 000 000, soit 1 000 000 €). C'est le chiffre qui alimente le cash signé. Ne change ni l'étape (ficiel_set_stage, qui date la signature au passage en client) ni rien d'autre. Rend l'ancien et le nouveau montant. Mêmes portes que ficiel_get_cash (drapeau Cash, organisation abonnée). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesIdentifiant du contact (lead_id).
deal_amount_centsYesMontant en centimes (ex. 117000 pour 1 170 €), ou null pour le retirer.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag write (readOnlyHint=false), idempotent and destructive; the description adds real substance on top: null semantics for removal, the returned old/new values, the exact gating (Cash flag, subscribed organisation) and the required write scope. That is meaningful behavioral context beyond the structured fields.

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?

Dense but front-loaded: the action and the null-removal case come first, followed by scope boundaries, return values and gates. Every clause carries information; the parenthetical € conversion slightly duplicates the schema but is cheap.

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?

With no output schema, the description compensates by stating the return ('Rend l'ancien et le nouveau montant'), and it covers mutation semantics, gating and scope. For a two-parameter write tool, nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are already documented with units, bounds and the null case in the schema itself. The description restates the centimes range and the € equivalent but adds no syntax or format detail the schema lacks, so the baseline of 3 applies.

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?

States a specific verb triplet (pose/corrige/retire) on a precise resource (le montant réellement encaissé d'un contact), including the null-removal case. It explicitly distinguishes itself from ficiel_set_stage ('Ne change ni l'étape ... ni rien d'autre') and ties the value to the 'cash signé' concept, so an agent can separate it from stage and average-deal tools without opening schemas.

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

Usage Guidelines4/5

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

Gives clear context ('le chiffre qui alimente le cash signé'), an explicit exclusion (does not change stage), and the gating conditions ('Mêmes portes que ficiel_get_cash', 'Portée « write » requise'). It does not explicitly contrast with the closest sibling ficiel_set_average_deal, so it stops short of full when/when-not guidance.

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

ficiel_set_stageDéplacer un contact dans le pipeline
Idempotent
Inspect

Change l'étape (pipeline_stage) d'un contact. Portée « write » requise. Refuse si l'étape n'existe pas dans votre organisation (voir ficiel_list_tags_and_stages pour les stage_key exacts). Ne touche à rien d'autre : ni tags, ni conversations, ni envoi.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesIdentifiant du contact (lead_id).
stage_keyYesÉtape cible, ex. "qualifying".
ficiel_simulate_replySimuler une réponse (SANS envoi)A
Read-only
Inspect

AUCUN MESSAGE N'EST ENVOYÉ. Simule ce que Kord répondrait sur une conversation, avec l'identité, le ton et les règles apprises de votre organisation, et rend le texte pour relecture uniquement. Approximation, pas une reproduction exacte du bouton « Suggérer » de l'interface (moteur partagé, réglages fins différents). Consomme le même quota mensuel de conversations traitées par l'IA que toute génération réelle.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint annotations, it discloses that no message is sent, that it consumes the same monthly AI-processed-conversation quota as a real generation, and that output is an approximation with different fine-tuning than the UI button. The quota note is a genuinely useful behavioral trait not captured by any annotation.

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

Conciseness5/5

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

Front-loaded with the critical constraint 'AUCUN MESSAGE N'EST ENVOYÉ' in caps, followed by two tight sentences covering behavior, caveat, and cost. Every sentence earns its place with no filler.

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 single-parameter, read-only, non-open-world tool with no output schema, the description covers what it does, that nothing is sent, the approximation caveat, and the quota cost. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

There is a single parameter (conversation_id) with 100% schema description coverage, so the schema already carries the semantics. The description adds no format, scope, or validity detail beyond what the schema provides, matching the baseline 3 for fully-documented params.

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 description states a specific verb (simulate/render for review) and resource (a reply on a conversation) and explicitly differentiates from real sending with 'AUCUN MESSAGE N'EST ENVOYÉ'. It also distinguishes itself from the UI 'Suggérer' button, so an agent can tell it apart from siblings like ficiel_send_message.

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

Usage Guidelines4/5

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

It clearly frames the context — use this to preview text for review only, nothing is dispatched — which implies the alternative (real send tools). However, it never names a sibling (e.g. ficiel_send_message) or states an explicit when-not-to-use condition, so routing is inferred rather than spelled out.

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

ficiel_statut_envoiIssue d’un envoiA
Read-onlyIdempotent
Inspect

L’issue réelle d’un message envoyé depuis le widget : envoye (le canal l’a accepté), non_envoye (avec la raison) ou en_cours.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds value by defining the three possible outcomes and clarifying that non_envoye includes a reason, which helps interpret results. It does not discuss auth or rate limits, but those are less critical for a read-only status call.

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

Conciseness5/5

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

A single well-structured sentence front-loads the core purpose and then enumerates the possible values compactly. No redundant or filler text.

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

Completeness4/5

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

For a simple read-only lookup with no output schema, the description provides the essential return semantics (statuses and reason). Annotations cover safety, and the schema covers the parameter type; the main gap is the lack of explicit parameter guidance, which is minor for a single required ID.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter message_id is not mentioned in the description. While the tool concept implies a message identifier, the description adds no detail about the required UUID format, how to obtain the ID, or what it identifies.

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

Purpose4/5

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

States the outcome of a message sent from the widget and enumerates possible statuses. It clearly identifies the resource being retrieved, but does not name a sibling alternative, so differentiation from related status tools is implicit.

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

Usage Guidelines3/5

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

The phrase 'message envoyé depuis le widget' implies the use case—checking the real outcome of a widget-sent message—but the description gives no explicit when-to-use guidance, prerequisites, or alternatives among the many sibling tools.

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

ficiel_syntheseSynthèse du moisA
Read-onlyIdempotent
Inspect

AFFICHE UN WIDGET : l’écran Statistiques sur 30 ou 90 jours : messages reçus et envoyés, l’entonnoir (nouveaux contacts, en qualification, qualifiés, lien envoyé, réservés, signés), taux de réponse et taux de booking, comparés à la période précédente, avec la courbe des messages par jour. Mêmes chiffres que l’application, calculés à la même source.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoUn compte connecté précis ; tous les comptes si absent.
period_daysNo30 ou 90 jours (défaut 30).

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-openWorld, so safety is covered. The description then adds genuinely useful unannotated behavior: that the output is a rendered widget rather than raw data, and that figures are computed from the same source as the app so they match. With no output schema, this disclosure of returned content carries real weight.

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?

Front-loaded with the key verb and the widget nature, then a single dense sentence enumerating contents. The long funnel listing is heavy but each item conveys what the widget returns, so it earns its place. Minor tightening possible but no filler.

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

Completeness4/5

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

For a read-only widget tool with full schema coverage and no output schema, the description supplies what the schema cannot: the rendered output form and the exact metrics shown, including prior-period comparison. What is missing is only routing against the many overlapping stats siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (account_id, period_days) are already documented in the schema. The description restates the 30/90-day choice but adds no syntax, defaulting, or account-scoping detail beyond what the schema provides. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('AFFICHE UN WIDGET' of the 30/90-day Statistics screen) and enumerates its exact contents: messages, funnel stages, response/booking rates, prior-period comparison, daily curve. It is unusually specific about what it does. The one gap is sibling differentiation: with get_stats, get_funnel, compare_periods and afficher_analyse present, it never says how it differs from them.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative named. Given the dense cluster of overlapping statistics tools (ficiel_get_stats, ficiel_get_stats_by_channel, ficiel_get_funnel, ficiel_compare_periods), the absence of any routing guidance is a real gap. Usage can only be inferred from the data it lists.

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

ficiel_unarchive_conversationDésarchiver une conversationA
Idempotent
Inspect

Remet la conversation dans la boîte de réception. Une éventuelle conversation jumelle active du même contact sur le même compte est archivée à sa place. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing a non-obvious side effect: an active twin conversation from the same contact on the same account gets archived in its place. It also confirms reversibility, that no message is sent and nothing is deleted, that the required scope is 'write', and that the response carries an already_in_state flag.

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

Conciseness5/5

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

Four short sentences, each carrying distinct information: the core action, the twin-conversation side effect, the safety profile, and the idempotent response. The primary action is front-loaded with zero filler.

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?

With a single required parameter and no output schema, the description covers what an agent needs: the action, the collateral effect on twin conversations, safety guarantees, and the already_in_state response field. Nothing material is missing.

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

Parameters3/5

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

There is only one parameter and schema description coverage is 100%, so the schema already documents conversation_id fully. The description adds no syntax, format, or lookup guidance beyond that, which is the baseline case for full schema coverage.

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

Purpose4/5

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

States a specific verb and resource ('Remet la conversation dans la boîte de réception') and scopes it to one-to-one or group conversations. The inverse relationship with ficiel_archive_conversation is inferable but the sibling is never named, so differentiation relies on the agent's reasoning rather than explicit text.

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

Usage Guidelines4/5

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

Clear about the applicable context (conversations à deux ou groupe) and explicitly describes the no-op branch when the conversation is already unarchived. It does not name ficiel_archive_conversation as the counterpart or state when not to use this tool, which keeps it below a 5.

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

ficiel_unmerge_leadsDéfusionner deux contactsA
DestructiveIdempotent
Inspect

Défait une fusion (merge_id de ficiel_list_lead_merges) dont lead_id est la fiche principale : conversations et messages rendus à la fiche réunie, tags, notes et événements restitués, champs de la principale ramenés à leur valeur d'avant. tags_policy règle ce qui a été ajouté APRÈS la fusion : keep_master (défaut, reste sur la principale) ou copy_both (les tags posés depuis vont sur les deux fiches). Refusée avec la raison si une fiche a été purgée, rattachée ailleurs depuis, ou si une conversation active occupe déjà le canal. N'envoie aucun message. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
lead_idYesFiche principale de la fusion.
merge_idYesFusion à défaire (merge_id).
tags_policyNokeep_master ou copy_both.keep_master

TDQS

A4.6/5.0
Behavior5/5

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

Annotations mark it destructive and idempotent, but the description goes well beyond them: it enumerates exactly what is restored (conversations, messages, tags, notes, events) and what is reverted (master fields), explains the tags_policy fork for tags added after the merge, discloses refusal reasons, and states no message is sent and write scope is required.

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?

Front-loaded with the core action and the id's provenance, then the side effects, then the policy, then failure modes. Dense but every clause carries information; the run-on middle sentence could be broken up, keeping it just short of a 5.

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 destructive, no-output-schema mutation, the description covers restoration semantics, policy branching, refusal behavior, message side effects, and required scope — everything an agent needs before invoking it.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the schema's tags_policy description is just 'keep_master ou copy_both' while the tool description actually explains what the parameter governs (tags added after the merge) and the effect of each value. lead_id and merge_id are also disambiguated as master fiche vs. fusion to undo.

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?

Names a specific verb (unmerge/défaire une fusion) and resource (two leads), and ties the merge_id input directly to its source tool, ficiel_list_lead_merges. An agent can distinguish it from ficiel_merge_leads without opening either schema.

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

Usage Guidelines4/5

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

Points the agent at ficiel_list_lead_merges as the source of merge_id and states the refusal conditions (purged fiche, reattached elsewhere, active conversation holding the channel), which effectively defines when the call will fail. It never explicitly contrasts itself with ficiel_merge_leads or says when not to use it, so it falls short of a 5.

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

ficiel_unpin_conversationDésépingler une conversationA
Idempotent
Inspect

Retire l'épingle : la conversation revient au classement automatique. Conversation à deux ou groupe. Réversible, n'envoie aucun message et ne supprime rien. Si la conversation est déjà dans cet état, rien ne change et la réponse le dit (already_in_state). Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesIdentifiant de la conversation (conversation_id).

TDQS

A4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the operation is reversible, sends no message, deletes nothing, and the already_in_state case returns an explanatory response. These are exactly the traits an agent needs before invoking a mutation, and they extend rather than restate idempotentHint/destructiveHint.

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

Conciseness5/5

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

Four short clauses, zero padding, with the core effect front-loaded and the idempotency note placed after the safety guarantees.

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

Completeness4/5

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

For a single-parameter, non-destructive mutation with no output schema, the description covers effect, safety, scope requirement and the degenerate already_in_state response. Only error cases (e.g. unknown conversation_id) are unaddressed, a minor gap.

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

Parameters3/5

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

Only one parameter (conversation_id) and schema description coverage is 100%, so the schema fully documents it. The description adds no syntax or format detail, which is fine at this baseline but is not a value-add.

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

Purpose4/5

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

States a precise verb and resource: 'Retire l'épingle : la conversation revient au classement automatique', plus the scope ('Conversation à deux ou groupe'). The inverse relationship to ficiel_pin_conversation is legible from the verb, though the sibling is never named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the verb (unpin when a conversation should return to automatic ranking) and a prerequisite is given ('Portée « write » requise'). But it never names an alternative tool or a when-not-to-use condition.

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

ficiel_update_leadModifier la fiche d'un contactA
DestructiveIdempotent
Inspect

Modifie les champs de la fiche d'un contact, ceux du formulaire de l'application : prenom, nom, telephone, email, disponibilite (texte libre), score (entier 0 à 100) et custom_display_name (surnom affiché). Seuls les champs fournis changent ; null ou un texte vide EFFACE le champ. Renvoie ce qui a changé (avant, après). Attention : le surnom et le téléphone servent à reconnaître le contact dans les outils d'envoi (destinataire nommé). Ne touche ni l'étape (ficiel_set_stage), ni la note (ficiel_add_note), ni Kord, ni le montant encaissé, ni le verdict de qualification. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nomNoNom de famille (120 caractères au plus).
emailNoAdresse email valide (200 caractères au plus).
scoreNoScore de 0 à 100.
prenomNoPrénom (120 caractères au plus).
lead_idYesIdentifiant du contact (lead_id).
telephoneNoTéléphone (40 caractères au plus), saisi comme dans l'interface.
disponibiliteNoDisponibilités, texte libre (200 caractères au plus).
custom_display_nameNoSurnom affiché à la place du nom du canal (120 caractères au plus).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=true, and the description goes further: it explains the destructive mechanism ('null ou un texte vide EFFACE le champ'), only supplied fields change, it returns a before/after diff, and it requires a write scope. This is exactly the added behavioral context the annotations alone do not 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?

Front-loaded with purpose, then fields, then mutation semantics, warnings and exclusions. Dense but every sentence carries information; the semicolon-separated clauses are efficient though the middle section is slightly packed.

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 mutation tool with no output schema, the description covers what changes, how null is handled, what the return contains (before/after), the auth scope, and the fields it must not touch. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics beyond the schema: per-field types (disponibilite as free text, score as integer 0-100, custom_display_name as displayed nickname) and the critical null-erases-a-field rule that governs every optional parameter.

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?

States a specific verb (Modifie) plus the exact resource (champs de la fiche d'un contact) and enumerates the mutable fields. It further distinguishes itself from siblings by explicitly naming what it does NOT touch (ficiel_set_stage, ficiel_add_note), so an agent can route correctly without opening schemas.

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

Usage Guidelines4/5

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

Clear context for use (updating contact form fields) and explicit exclusions that point to sibling tools for stage, notes, Kord, deal amount and qualification. Lacks an explicit 'use this when X vs Y' condition for the closest sibling (ficiel_get_lead / fiche_prospect), but the exclusion list is strong routing guidance.

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

ficiel_update_tagModifier un tagA
DestructiveIdempotent
Inspect

Modifie un tag existant (tag_id de ficiel_list_tags_and_stages) : name (1 à 48 caractères, unique sans tenir compte de la casse), color (hexadécimal à six chiffres), description (500 caractères au plus, null pour l'effacer), excludes_from_relance et blocks_auto_send. Seuls les champs fournis changent. ⚠️ Les deux derniers CHANGENT DES ENVOIS : excludes_from_relance retire de la relance tous les contacts qui portent le tag, blocks_auto_send bloque les envois automatiques vers eux ; la réponse le rappelle. Un tag système (Blacklist, Ignorer) garde son nom et sa description : seules sa couleur et ses comportements se règlent. Ne supprime jamais un tag. Portée « write » requise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNouveau nom (1 à 48 caractères).
colorNoNouvelle couleur, ex. #6366f1.
tag_idYesIdentifiant du tag (tag_id de ficiel_list_tags_and_stages).
descriptionNoNouvelle description, ou null pour l'effacer.
blocks_auto_sendNotrue = aucun envoi automatique vers les contacts portant ce tag.
excludes_from_relanceNotrue = les contacts portant ce tag sortent des relances.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=true; the description goes well beyond them by spelling out the real downstream effect of excludes_from_relance (removes tagged contacts from relances) and blocks_auto_send (blocks automatic sends), warning that these CHANGE SENDS, noting the response echoes this, and stating the required 'write' scope. It also discloses the system-tag carve-out and the never-delete guarantee.

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?

Front-loaded with the action and supported fields, then the warning about send-affecting flags, then edge cases. Every sentence carries weight (field list, patch semantics, send side effects, system-tag rule, scope). The paragraph is dense and slightly long, but not padded; a minor deduction for density over brevity.

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 mutation tool with no output schema, the description covers what an agent needs: which fields are editable, patch vs full-replace behavior, the destructive side effects of the two boolean flags, the system-tag restriction, the no-delete guarantee, and the required scope. Nothing essential is left unstated.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning on top: case-insensitive uniqueness of name, null explicitly erases description, hex color format, and the crucial patch semantics ('only provided fields change'). It stipulates that system tags cannot alter name/description, which the schema alone does not convey.

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?

States a specific verb (Modifie) and resource (tag existant), then enumerates exactly which fields it touches (name, color, description, excludes_from_relance, blocks_auto_send). It names the sibling that supplies tag_id (ficiel_list_tags_and_stages) and distinguishes itself from creation tools by explicitly saying 'Ne supprime jamais un tag'. An agent can separate this from ficiel_create_tag / ficiel_add_tag without opening a schema.

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

Usage Guidelines4/5

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

Clarifies that 'Seuls les champs fournis changent' (partial-update semantics) and points to ficiel_list_tags_and_stages for retrieving tag_id, plus the rule that system tags (Blacklist, Ignorer) only allow color/behavior edits. It stops short of an explicit when-to-use-this-vs-create_tag statement, leaving the create/edit boundary to inference from the verb.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updates
    • Addedficiel_approve_card
    • Addedficiel_approve_learned_patterns
    • Addedficiel_archive_conversation
    • Addedficiel_convert_learned_patterns
    • Removedficiel_decide_card
    • Addedficiel_defer_card
    • Addedficiel_dismiss_learned_patterns
    • Addedficiel_mark_conversation_read
    • Addedficiel_mark_conversation_unread
    • Addedficiel_pin_conversation
    • Addedficiel_reject_card
    • Removedficiel_review_learned_pattern
    • Addedficiel_unarchive_conversation
    • Addedficiel_unpin_conversation
    • Removedficiel_update_conversation
  2. 1 tool update
    • Addedficiel_send_document
  3. 1 tool update
    • Changedficiel_send_media4 fields changed
      • changedInput schema / properties / file_name / description
        Previous value: -"Nom de fichier affiché (optionnel, déduit sinon)."New value: +"Nom de fichier affiché, par exemple guide.pdf. Requis avec media_base64, optionnel avec media_url."
      • addedInput schema / properties / media_base64
        Added value: +{
        +  "description": "Contenu entier du fichier en base64 (10 Mo au plus), pour un fichier sans lien public. Pour image, video et file, à la place de media_url. Exige mime_type et file_name.",
        +  "maxLength": 14000000,
        +  "type": "string"
        +}
      • changedInput schema / properties / media_url / description
        Previous value: -"Adresse publique du fichier. Requis pour image, video et file."New value: +"Adresse publique du fichier déjà en ligne. Pour image, video et file, à la place de media_base64."
      • addedInput schema / properties / mime_type
        Added value: +{
        +  "description": "Type du fichier donné en media_base64, par exemple application/pdf, image/png, image/jpeg, video/mp4.",
        +  "maxLength": 120,
        +  "type": "string"
        +}
  4. 1 tool update
    • Changedficiel_edit_agent_profile1 field changed
      • addedInput schema / properties / moment_appel
        Added value: +{
        +  "description": "Quand Kord propose l'appel : dès qu'un lead qualifié parle du prix (prix), après deux ou trois échanges qualifiés (apres_echanges), ou seulement si le lead le demande (sur_demande).",
        +  "enum": [
        +    "prix",
        +    "apres_echanges",
        +    "sur_demande"
        +  ],
        +  "type": "string"
        +}
  5. 1 tool update
    • Changedficiel_decide_card3 fields changed
      • changedInput schema / properties / decision / description
        Previous value: -"approve = envoyer, reject = écarter."New value: +"approve = envoyer, reject = écarter, reporter = reproposer plus tard."
      • changedInput schema / properties / decision / enum
        Previous value: -[
        -  "approve",
        -  "reject"
        -]New value: +[
        +  "approve",
        +  "reject",
        +  "reporter"
        +]
      • addedInput schema / properties / jours
        Added value: +{
        +  "description": "reporter seulement : dans combien de jours le contact revient (30 par défaut).",
        +  "enum": [
        +    7,
        +    14,
        +    30,
        +    90
        +  ],
        +  "type": "number"
        +}
  6. 1 tool update
    • Changedficiel_edit_agent_profile2 fields changed
      • addedInput schema / properties / booking_link
        Added value: +{
        +  "description": "Lien de réservation partagé par Kord (adresse complète en https://). Chaîne vide = aucun lien.",
        +  "maxLength": 500,
        +  "type": "string"
        +}
      • addedInput schema / properties / remove_sources
        Added value: +{
        +  "description": "Sources à retirer, lien ou texte, désignées par leur adresse ou leur libellé exact. Une source introuvable fait refuser toute la modification.",
        +  "items": {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
  7. 3 tool updates
    • Removedficiel_list_voices
    • Changedficiel_schedule_message2 fields changed
      • changedInput schema / properties / text / description
        Previous value: -"Texte du message. Avec voice_id, c'est le texte à prononcer."New value: +"Texte du message."
      • removedInput schema / properties / voice_id
        Removed value: -{
        -  "description": "Identifiant d'une voix de votre organisation (voir ficiel_list_tags_and_stages, section voices) pour un vocal généré. Omis = message texte.",
        -  "type": "string"
        -}
    • Changedficiel_send_media3 fields changed
      • removedInput schema / properties / text
        Removed value: -{
        -  "description": "Texte à prononcer. Requis pour kind=voice.",
        -  "maxLength": 1000,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • addedInput schema / properties / voice_clip_id
        Added value: +{
        +  "description": "Identifiant d'un vocal préenregistré de votre organisation (clip_id de ficiel_list_voice_clips). Requis pour kind=voice.",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • removedInput schema / properties / voice_id
        Removed value: -{
        -  "description": "Identifiant de la voix (voir ficiel_list_tags_and_stages, section voices). Requis pour kind=voice.",
        -  "type": "string"
        -}
  8. 2 tool updates
    • Changedficiel_list_conversations3 fields changed
      • removedInput schema / properties / date_max / $ref
        Removed value: -"#/properties/date_min"
      • addedInput schema / properties / date_max / format
        Added value: +"date-time"
      • addedInput schema / properties / date_max / type
        Added value: +"string"
    • Changedficiel_search3 fields changed
      • removedInput schema / properties / date_max / $ref
        Removed value: -"#/properties/date_min"
      • addedInput schema / properties / date_max / format
        Added value: +"date-time"
      • addedInput schema / properties / date_max / type
        Added value: +"string"
  9. 74 tool updates
    • First observedficiel_add_note
    • First observedficiel_add_tag
    • First observedficiel_afficher_analyse
    • First observedficiel_blacklist_lead
    • First observedficiel_book_slot
    • First observedficiel_bulk_archive
    • First observedficiel_bulk_set_stage
    • First observedficiel_bulk_tag
    • First observedficiel_cancel_scheduled
    • First observedficiel_carte_relance
    • First observedficiel_changer_etape
    • First observedficiel_compare_periods
    • First observedficiel_configure_channel_ai
    • First observedficiel_create_automation
    • First observedficiel_create_tag
    • First observedficiel_decide_card
    • First observedficiel_edit_agent_profile
    • First observedficiel_edit_agent_prompt
    • First observedficiel_envoyer_relance
    • First observedficiel_fiche_prospect
    • First observedficiel_find_dormant_leads
    • First observedficiel_get_agent_config
    • First observedficiel_get_automation_runs
    • First observedficiel_get_automations
    • First observedficiel_get_blacklist
    • First observedficiel_get_cash
    • First observedficiel_get_channel_status
    • First observedficiel_get_conversation
    • First observedficiel_get_funnel
    • First observedficiel_get_lead
    • First observedficiel_get_lead_by_handle
    • First observedficiel_get_lead_context
    • First observedficiel_get_media
    • First observedficiel_get_send_budget
    • First observedficiel_get_slots
    • First observedficiel_get_stats
    • First observedficiel_get_stats_by_channel
    • First observedficiel_laisses_en_vu
    • First observedficiel_list_agent_config_versions
    • First observedficiel_list_conversations
    • First observedficiel_list_lead_merges
    • First observedficiel_list_learned_patterns
    • First observedficiel_list_pending_cards
    • First observedficiel_list_scheduled
    • First observedficiel_list_tags_and_stages
    • First observedficiel_list_team_members
    • First observedficiel_list_templates
    • First observedficiel_list_voice_clips
    • First observedficiel_list_voices
    • First observedficiel_mark_booked
    • First observedficiel_merge_leads
    • First observedficiel_ne_plus_proposer
    • First observedficiel_pause_conversation
    • First observedficiel_prepare_followup
    • First observedficiel_resolve_template
    • First observedficiel_restore_agent_config_version
    • First observedficiel_review_learned_pattern
    • First observedficiel_save_stage
    • First observedficiel_save_template
    • First observedficiel_schedule_message
    • First observedficiel_search
    • First observedficiel_send_media
    • First observedficiel_send_message
    • First observedficiel_set_automation
    • First observedficiel_set_average_deal
    • First observedficiel_set_lead_deal_amount
    • First observedficiel_set_stage
    • First observedficiel_simulate_reply
    • First observedficiel_statut_envoi
    • First observedficiel_synthese
    • First observedficiel_unmerge_leads
    • First observedficiel_update_conversation
    • First observedficiel_update_lead
    • First observedficiel_update_tag

Publisher details

Operator
Ficiel.io · Publisher source
Operator website
https://ficiel.io
Vendor relationship
First-party · Publisher source
Restrictions
Requires a Ficiel account: 10-day free trial, then a paid subscription. Messages are never sent without the user's approval. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to read, send, and manage Instagram direct messages, including viewing conversations, sending DMs to users, reacting to messages, and searching for users by username.
    10
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables sending LinkedIn messages and invitations, reading conversations, and managing outreach through natural language by automating a real LinkedIn session via a Chrome extension.
    17 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables reading and replying to direct messages, comments, and templates across Instagram, WhatsApp, and Messenger through official Meta Business APIs, with support for human handover and AI assistant controls.
    16 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to manage social DM inboxes and posting calendars across 12 platforms, allowing users to triage messages, draft replies, schedule posts, and pull stats from MCP clients.
    26 npm
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.