Gives Claude a trained writing voice, and audits drafts for AI writing tells.
Étincel demonstrates strong tool definitions with comprehensive parameter schemas, detailed descriptions, and clear naming conventions. All 20 tools are explicitly registered with input schemas and descriptions. Tools follow verb_noun patterns (list_styles, get_style_guide, train_style, etc.). Most parameters include type definitions and descriptions. However, output schemas are not formally documented in the code visible, and error handling lacks recovery guidance in descriptions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are correctly applied to all tools, which is excellent. The descriptions are LLM-optimized (ranging 100-400+ chars) and include WHEN to call each tool. Parameter constraints are well-defined (enums for 'register', numeric ranges for dials with 0-10 or 0-100 scales).
Add a custom word or phrase to the global banned-word dictionary. Every instance of this term will be flagged as an error when auditing, the same way as built-in banned terms.
Add a word or phrase to the global allowed-words dictionary (the 'corporate dictionary'). Any occurrence of this term will never be flagged, even if it matches a built-in or custom-banned term. Useful for brand names, acronyms, or jargon your organization uses that the auditor would otherwise flag.
Scan a text (draft email, blog post, essay, memo, or other prose) for 504 discrete checks: banned terms, soft-flag terms (common AI tells like 'empowering' and 'delve'), sentence-rhythm patterns that look AI-generated, structural red flags (whole-piece uniformity, lack of specificity, no human detail), and missing elicited facts. Returns a tier (green/yellow/orange/red), a 0-100 score, and a sorted list of findings by severity. Tier is determined by the worst finding; score by the aggregate weight of all findings. Use after drafting, before publication.
Scan a text for repeated phrases, structural patterns, and word choices that appear more often than the given style profile would predict. Useful to catch when a voice has become formulaic or when a draft leans too heavily on one sentence shape.
Output schemas not formally documented. While tool descriptions explain what data is returned, the actual response JSON structure (fields, types, nesting) is not visible in the provided code. This forces LLMs to infer response structure.
Error handling descriptions lack recovery guidance. Tools document error conditions but do not tell the LLM what to do next (e.g., 'If style not found, call list_styles() to see available options'). This forces agents to improvise recovery strategies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 80 | 2026-07-28+ | v2 |
Check whether a piece of writing matches the voice profile of a given style. Returns a similarity score and diagnostic feedback. Useful to validate whether a draft is in the target voice before publication.
Delete any custom instructions previously set for a style via set_style_instructions. The style's guide will no longer include those rules.
Create a new trained voice from explicit dial values (formality, warmth, directness, and mechanical dials like sentence length and contraction rate) instead of analyzing writing samples. Useful when the user describes their voice in abstract terms rather than providing text. The dial values are persisted as a new voice that can be trained further later.
Permanently delete a trained voice. Presets cannot be deleted. Deletion is not reversible.
Create a new trained voice based on an existing one (either a preset or a previously trained voice), as a starting point for further training. The forked voice is independent; changes to the original do not affect it.
Fetch the full drafting guide for one style (a preset id like 'direct-warm', the id of a trained voice, or 'team' for the shared style a .etincelrc in the current repo defines, if any). Returns prose instructions to follow while drafting or revising: sentence rhythm, tone dials, and (for trained voices) the writer's own measured habits. If a .etincelrc in the current repo sets team-wide instructions, those are folded into every style's instructions, not just 'team''s. Read this before drafting; it is context for you, the drafting model, not a tool that writes prose itself.
Fetch any custom instructions previously set for a style. Returns the style-specific instructions, the global instructions (if any), and the merged effective instructions that the user sees in the style guide.
List the global banned-word and allowed-word dictionaries: both custom entries the user has added and (if applicable) a repo-local .etincelrc's bannedWords and allowedWords.
List every available style: premade emotional-tone presets, any voices the user has trained from their own samples, and (if a .etincelrc in the current repo defines one) the shared team style, id 'team'. Call this before drafting or revising non-fiction prose if the caller hasn't been told which style to use, or if the user asks what styles exist.
Remove a previously added custom banned word from the global dictionary.
Remove a previously added custom allowed word from the global dictionary.
A lighter audit focused on readability and accessibility: sentence clarity, paragraph flow, jargon density, and passive-voice prevalence. Runs the same structural checks as audit_text but skips the AI-specific banned and soft-flag terms, making it suitable for any prose, not just AI-generated content. Returns the same tier and scoring structure.
Set which style is used by default when drafting or auditing if the user hasn't explicitly selected one.
Set free-text drafting instructions for a style: rules like 'always include a CTA,' 'audience is technical,' or 'never mention pricing.' These are merged into the style's guide (returned by get_style_guide) and do not affect the voice profile itself (the dials, sentence rhythm, etc.). Instructions survive retraining; if you later retrain the voice, these rules stay in place.
Analyze one or more of the user's own writing samples (emails, posts, essays, memos: real finished text they wrote or approved) and persist a trained voice profile under that name. Measures sentence length and variance, paragraph rhythm, contraction rate, em-dash and semicolon habits, fragment use, structural entropy (sentence-opener variety and punctuation-mark variety), and recurring phrasing. Call again with the same name and new samples to add more training data to that voice; the new samples blend into its existing measurements rather than replacing them. If the voice may have been renamed since it was created, pass its id (from list_styles) instead so the right voice is targeted regardless of its current name.
Adjust an existing trained voice's settings: rename it, change its persona dials (formality, warmth, directness), or update its description. Does not retrain from samples; call train_style instead to analyze new writing.
Pagination not implemented for list_styles or list_dictionary. No limit/offset parameters or cursor-based pagination visible. If training datasets grow large, responses could exceed context windows without pagination support.
audit_text 'sourceFacts' parameter accepts array but no guidance on how to specify which claim goes where in the text. Format is under-specified; LLMs may not know how to structure this array.