_ registry / mcp + a2a JSONRPC · checked 3h ago

textwerk

https://text.halowerk.com

Registry code: f1bd989576778e0d

api record

Paid tools via x402. tools/list is free. Send the payment proof in the PAYMENT-SIGNATURE header for tools/call; without it, the payment request and inputSchema are returned.

endpoint
https://text.halowerk.com/
door code
b8fc7cf35ac325c5
protocol
JSONRPC ·0.3
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is textwerk live?
Yes — it answered the hub's last check (checked 3h ago). It answered 100% of checks over the last 30 days.
Is textwerk free to use?
Not measured yet.
What tools does textwerk have?
87 tools: Unicode report for a text or raw bytes: normalization forms, invisible and special characters with names and positions, NFKC changes, scripts, categories and UTF-8 validity., Transliterate Cyrillic to Latin by ISO 9:1995 (reversible, with diacritics) or by ICAO Doc 9303 for passport names (ru, uk, be, bg, MRZ form), and Greek by ELOT 743 / UN 1987., Create URL slugs with correct German handling (ä → ae, ß → ss, & → und), diacritics removed, length cut at word boundaries and uniqueness against existing slugs., Sort German words or names by DIN 5007-1 variant 1 (dictionary: ä = a, ß = ss) or variant 2 (name lists: ä = ae), with equivalence groups such as Müller/Mueller., Check text, code, file names or identifiers for bidirectional control characters (Trojan Source, RLO file-name spoofing), unbalanced embeddings/isolates and paragraph direction., Mark German officialese (Amtsdeutsch), legal and technical jargon, support-verb constructions and nominal style, with plainer alternatives from OpenThesaurus., Find measurements in German or English text and normalise them to SI: German number formats (1.234,5), ranges, tolerances, dimensions like 120 x 80 cm with area or volume, m², km/h, °C, PS, kWh, bar, GB and more., Link entity mentions (places, organisations, works, concepts) to Wikidata items with QID, label, description, instance-of types and a ranked candidate list; people are deliberately excluded., ….
Is textwerk safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
92ms

last good check

priced tools
18

of 87 tools

_ answered our checks, 90 days 2 checks · signed record
  • unknown → live
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts, and USDC settlements on base into the address this listing's priced doors name, read off the chain. Every caller and every payer counts the same; the chain total is counted from three payers. The address also stands behind 130 other origins: the chain figures are the gateway's, not this listing's alone. How it is counted.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

payers on base
45

distinct

settlements
10,979

last 2026-11-14

received on chain
36.5505 USDC

shared-payto

inferred, not observed

Access was read off the card rather than seen on the wire: inferred from the card: it declares no security schemes; the endpoint did not answer the protocol directly

_ what it can do 87 tools
18 paid 69 never probed 18 of 87 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • quote_in_source 0.004 USDC paid never probed

    Quote and source are normalised with an offset map back to the original source: Unicode NFKC, case folding, all quotation marks, apostrophes and dashes unified, whitespace collapsed, soft hyphens removed and line-end hyphenation joined (gekün-\ndigt -> gekündigt). Omission marks ([...], (...), ..., …) split the quote into segments that must occur in order. Each segment is searched exactly; otherwise the closest substring of the source is found with Sellers' semi-global edit distance (Sellers 1980) inside candidate windows proposed by shared words, accepted up to max_edit_ratio (default 0.15). Result: verbatim (all segments exact), near_verbatim (all found, some with small edits; word-level differences listed), partial, or not_found. With semantic=true, unmatched quotes are additionally compared with every one- and two-sentence window of the source using intfloat/multilingual-e5-small (MIT, pinned, SHA-256 checked); a window at or above semantic_threshold (default 0.93) is reported as paraphrase_candidate. Edit distances of the reported spans are cross-checked with fastest-levenshtein.

    textwerk

  • de_ch_convert 0.002 USDC paid never probed

    Applies the rules of Swiss Standard German as described in the Wikipedia article "Liste von Helvetismen" (orthography section, citing the Schreibweisungen of the Swiss Federal Chancellery): no ß (ß becomes ss, capital ẞ becomes SS), quotation marks «…» and ‹…› instead of „…“/‚…‘/»…«, thousands grouped with an apostrophe (1'234'567) and a decimal point in money amounts with a currency (CHF 1'234.50). Swiss vocabulary from the same list (revision 271694217, CC BY-SA 4.0; standard-language entries only) is offered as suggestions next to the German words found (Fahrrad → Velo, parken → parkieren), never replaced automatically because gender and inflection can differ.

    textwerk

  • readability_de 0.003 USDC paid never probed

    Splits the text into sentences (LanguageTool SRX rules for German, LGPL-2.1, abbreviations and ordinals handled), counts words, letters and syllables and computes Flesch-Amstad (FRE = 180 - ASL - 58.5 x ASW; Amstad 1978) and the four Wiener Sachtextformeln of Bamberger/Vanecek (1984) with their inputs MS, SL, IW and ES. Syllables follow slow speech: Liang hyphenation patterns de-1996 (MIT) plus vowel-nucleus counting; loanwords and -ie/-ien endings can deviate by one syllable. Formulas as listed in de.wikipedia "Lesbarkeitsindex" (checked 2026-11-01). Numbers are not counted as words.

    textwerk

  • grammar_check_de 0.004 USDC paid never probed

    Runs the open-source LanguageTool 6.8 rule engine (LGPL-2.1) on a local server for de-DE, de-AT or de-CH: Morfologik spell checking, several thousand XML grammar rules and Java rules for agreement, compounds, case, commas and typography. Returns every match with offset, length, message, up to five replacements, rule id and category, counts per category and optionally a text with the first suggestion applied. The free rule set without n-gram data is used, so confusion pairs that need statistics (das/dass in many contexts, seid/seit beyond rules) can be missed.

    textwerk

  • umlaut_restore 0.002 USDC paid never probed

    Every word containing ae, oe, ue or ss is compared with about 145,000 German full forms with umlauts or ß from the LanguageTool part-of-speech dictionary german-pos-dict 1.2.2 (Morphy, CC BY-SA 4.0). A word is only changed when it is not itself a valid form and exactly one dictionary form matches (fewest added ß preferred, so dass/muss/Fluss stay). Valid words with a valid umlaut twin (Masse/Maße) are kept and reported as ambiguous. Unknown compounds are split into dictionary parts (jWordSplitter data, CC BY-SA 4.0, linking s allowed). All-caps words keep SS; variant de-CH writes ss instead of ß.

    textwerk

  • anki_deck 0.004 USDC paid never probed

    Writes a real Anki package: an SQLite collection in the classic schema version 11 (collection.anki2, importable by Anki 2.1 desktop, AnkiDroid and AnkiMobile) with one note type (Basic or Basic and reversed card), one deck, notes with checksum (csum) and sort field, one new card per template, packed with an empty media map into a ZIP. Note GUIDs are derived from deck name and front text, so re-importing an updated deck updates notes instead of duplicating them. Text is HTML-escaped unless html=true. Up to 2,000 cards.

    textwerk

  • house_style_check 0.002 USDC paid never probed

    Rule types: forbidden (term with optional replacement and reason; inflected German forms matched by suffix -e/-en/-er/-es/-n/-s/-em/-ern, replacement only for the exact form), prefer (variants that should be written as the preferred spelling, replaced automatically with matching initial capital), require (term that must appear at least once), max_sentence_words (limit per sentence) and pattern (regular expression in RE2 syntax via re2-wasm, linear time, with message and optional replacement). Returns each finding with rule index, offset, excerpt and suggestion, statistics per rule and the text with all safe replacements applied.

    textwerk

  • din5008_formats 0.002 USDC paid never probed

    Formatting rules of DIN 5008:2020-03 restated in own words from public secondary sources (Wikipedia articles DIN 5008, Datumsformat, Uhrzeit, Rufnummer, Zifferngruppierung, IBAN, Prozentzeichen; Haufe Akademie summary, checked 2026-11-01): date YYYY-MM-DD (preferred), DD.MM.YYYY for domestic recipients, alphanumeric "1. November 2026" without leading zero; time HH:MM[:SS] with two digits and "Uhr" after a protected space, full hours "9 Uhr"; numbers from four digits grouped in threes by a (protected) space, decimal comma; amounts with a space before the currency; phone numbers grouped functionally (+49 30 12345-67, 030 12345-67); IBAN in groups of four after the mod-97 check; percent with a space. Text mode reports deviations with offsets and a suggestion.

    textwerk

  • hyphenate_de 0.001 USDC paid never probed

    Hyphenates every word of at least min_word_length letters with the Liang patterns hyph-de-1996 of the Deutschsprachige Trennmustermannschaft (MIT licence, via npm package hyphen 1.14.1, ISC): reformed spelling, ck stays together (Zu-cker), st may be split (Wes-ten), at least two letters before and after a break. Existing hyphens in compounds are kept and each part is hyphenated on its own. In HTML mode only text nodes are changed; tags, attributes, entities and the content of script, style, code, pre, textarea and kbd remain untouched. Returns the hyphenated text and a readable preview with visible break points.

    textwerk

  • easy_language_check 0.003 USDC paid never probed

    Implements the machine-checkable rules of "Die Regeln für Leichte Sprache" (Netzwerk Leichte Sprache e.V., 2022 edition) as heuristics and reports each finding with rule number, excerpt and offset: difficult, technical and foreign words (OpenThesaurus register labels, LGPL/CC BY-SA), long words with a hyphenated split, abbreviations, nominal style, passive, genitive, subjunctive, negation, idioms, Roman numerals, old years, large numbers and percentages, number words, date format, special characters, sentence length, subordinate clauses, questions, cross-references and one sentence per line. Rules that need human judgement or layout are listed as not checked. Thresholds are service defaults where the rulebook gives no number.

    textwerk

  • plural_rules_check 0.003 USDC paid never probed

    Uses Intl.PluralRules (CLDR plural rules as shipped with ICU) to get the cardinal and ordinal categories of the locale with sample numbers. ICU MessageFormat messages are parsed with a full parser; for every plural or selectordinal argument it reports missing categories, categories the locale never uses, explicit =N cases and the required other branch. A gettext Plural-Forms header is parsed with an own C-expression evaluator (no eval) and compared for the integers 0–1000: each gettext index must correspond to exactly one CLDR category and vice versa; conflicts are listed with example numbers.

    textwerk

  • hate_speech_de 0.005 USDC paid never probed

    Two open classifiers run locally (onnxruntime-node, pinned revisions, SHA-256 checked, downloaded once over hole()): Horizon-Labs/multilingual-hate-speech-base (Apache-2.0; mmBERT-base, MIT) for hate speech, i.e. attacks on people because of race/ethnicity, nationality/migration, religion, gender, sexual orientation, gender identity, disability or age, with seven target-group probabilities; and Horizon-Labs/multilingual-toxicity-small (Apache-2.0; trained on Civil Comments, CC0, and translations) for insult, threat, obscenity and toxicity. Documented German quality: hate on Multilingual HateCheck German (mteb/multi-hatecheck, CC-BY-4.0, 3,645 cases) ROC AUC 0.910, F1 at 0.5 0.877 (reproduced by HALOWERK on 2026-11-01 with HF tokenizers and onnxruntime); toxicity on TextDetox German (1,000 texts) AUC 0.859, F1 at 0.5 0.495 (model card). Texts are truncated at 256 tokens; at most 16 texts and 1,500 model tokens per call. Uncertainty bands are a fixed convention on the probability: high 0.3-0.7, medium 0.15-0.3 or 0.7-0.85, low otherwise. First call downloads about 910 MB.

    textwerk

  • corpus_overlap 0.004 USDC paid never probed

    Text reuse detection with word shingles (Broder 1997): text and corpus documents are segmented into words (Unicode, NFKC, lower case); every run of n words (default 5) is hashed (32-bit FNV-1a) and compared through a hash index of the text. Matching shingles are chained along diagonals into maximal passages, verified word by word against hash collisions and kept from min_passage_words (default 8) words on; each passage reports start and end offsets in the text and in the document. Per document the exact shingle sets give containment of the text in the document (|S_text ∩ S_doc| / |S_text|), containment of the document in the text and Jaccard resemblance; coverage is the share of the text's words inside reported passages. Exact sets are used because the corpus is supplied with every call, so no MinHash estimation error arises. Shingles that occur more than 50 times in the text (boilerplate) are ignored for passage seeding.

    textwerk

  • contradiction_detect 0.005 USDC paid never probed

    English only. The document is split into sentences; candidate pairs share at least one content word (Snowball stop words removed) and are ranked by the number of shared content words, at most max_pairs (default 100). Each candidate pair is scored in both directions with cross-encoder/nli-deberta-v3-xsmall (Apache-2.0; DeBERTa-v3-xsmall, MIT; trained on SNLI, CC BY-SA 4.0, and MultiNLI; model card: SNLI test accuracy 91.64 %, MNLI mismatched 87.77 %), run locally from the fp32 ONNX export of the model repository (pinned revision, SHA-256 checked; the int8 export gives unusable scores). The contradiction score is the larger contradiction probability of the two directions; pairs at or above threshold (default 0.8) are reported with both directions' probabilities. German and other languages are rejected because no NLI model with a clear commercial licence and documented German quality is available (XNLI- and ANLI-trained models carry non-commercial data). First call downloads about 300 MB.

    textwerk

  • de_at_variants 0.002 USDC paid never probed

    mode=set replaces German (Germany) terms by the Austrian terms of Protocol No. 10 to the 1994 Act of Accession (BGBl. Nr. 45/1995: Kartoffeln → Erdäpfel, Tomaten → Paradeiser, Sahne → Obers ...) and Januar by Jänner. A replacement is only made where the grammar stays correct: plural forms (dative plural from a preceding den or dative preposition), singular with the same gender, or bare nouns without article; other places are returned for manual change. Meat cuts (Filet, Keule, Kugel ...) need culinary=true. mode=mark only reports. Both modes list Austriacisms already in the text and further Austrian standard variants from the Wikipedia "Liste von Austriazismen" (revision 270896640, CC BY-SA 4.0).

    textwerk

  • style_check_de 0.002 USDC paid never probed

    Filler words: the list and exceptions of the LanguageTool rule FILLER_WORDS_DE (v6.8, LGPL-2.1; not at sentence start or after a comma, "allein" with sein, "recht" with haben/geben, so/besonders before adjectives, nicht nur … sondern auch, fixed pairs like immer wieder), flagged when they exceed 8 percent of the words (LanguageTool default). Passive: a form of werden together with a past participle from german-pos-dict 1.2.2 (CC BY-SA 4.0) in the same clause, flagged above 8 percent of the sentences (LanguageTool default) or for three passive sentences in a row. Nominal style: nominalisations (-ung, -heit, -keit, -ion, -tät, -nis, -schaft, -nahme) per sentence and genitive chains. Quotations can be excluded.

    textwerk

  • anglicism_replace 0.002 USDC paid never probed

    Looks up every word in about 1,050 entries that OpenThesaurus (export 2026-10-30, LGPL-2.1 or CC BY-SA 4.0) labels English, Anglicism or Denglisch, matching inflected forms from german-pos-dict 1.2.2 (CC BY-SA 4.0) and English heads of compounds (Teammeeting). Alternatives are the unlabelled synonyms of the same synset; for nouns the gender of both words is given and an article change is flagged. With replace=true a word is replaced by the preferred or first same-class alternative in the matching case and number when this is safe: plural nouns, singular nouns of the same gender or without article, infinitives and past participles; everything else is listed for manual editing.

    textwerk

  • term_consistency 0.002 USDC paid never probed

    Groups all words and two-word sequences by a normalised key (case, hyphens, spaces, ß/ss removed) and reports keys that occur in more than one spelling, with counts and offsets and the most frequent spelling as suggestion. Adds the 418 pairs of equally valid spellings that LanguageTool uses in its WordCoherencyRule (coherency.txt, v6.8, LGPL-2.1: Delfin/Delphin, Foto/Photo, Albtraum/Alptraum ...) and caller-defined groups of terms that must not be mixed (Kunde/Auftraggeber). Sentence-initial capitals are not counted as case variants.

    textwerk

  • unicode_report unknown never probed

    Checks NFC/NFD/NFKC/NFKD status, lists zero-width characters, bidi controls, format characters, variation selectors, special spaces, controls, private use, noncharacters, unassigned code points and U+FFFD with Unicode names (UnicodeData.txt 17.0.0), line and column. Lists characters changed by NFKC (ligatures, fullwidth, superscripts), stacked combining marks, newline styles, counts per general category and script. With bytes_base64 the bytes are validated as UTF-8 first (BOM, invalid sequences with offsets). Optionally returns the normalized text.

    textwerk

  • transliterate unknown never probed

    ISO 9:1995 (= GOST 7.79-2000 System A) maps every letter of the Russian, Ukrainian, Belarusian, Bulgarian, Serbian and Macedonian alphabets plus the historic letters Ѣ Ѫ Ѳ Ѵ one-to-one. ICAO Doc 9303 Part 3, 8th edition 2021, section 6 tables A and B give the machine-readable passport form (A–Z only) with the language rules for Ukrainian, Belarusian and Bulgarian; Latin letters with diacritics follow table A; optional MRZ name field SURNAME<<GIVEN<NAMES. Greek uses the ELOT 743 transcription adopted by the UN in 1987 (UNGEGN report version 4.0, 2016) incl. αυ/ευ/ηυ, μπ, γγ rules and accents. Characters a system does not cover are listed, not guessed.

    textwerk

  • slugify_de unknown never probed

    NFKC, then German umlauts and ß are expanded (ä → ae, ö → oe, ü → ue, ß/ẞ → ss) or reduced to the base letter on request; letters without a decomposition are mapped (æ → ae, œ → oe, ø → o, ł → l, đ/ð → d, þ → th, ı → i); remaining diacritics are removed after NFD. & + % € $ @ become words in German or English, apostrophes vanish, everything else becomes the separator. Non-Latin letters are dropped and listed so the caller can transliterate first. The slug is cut at the last separator before max_length and made unique against existing slugs with -2, -3, …

    textwerk

  • sort_din5007 unknown never probed

    Variant 1 (DIN 5007-1 section 6.1.1.4.1, dictionaries): ä, ö, ü sort like a, o, u and ß like ss; when everything else is equal the umlaut sorts after the plain vowel (Kohler before Köhler). Variant 2 (section 6.1.1.4.2, name lists and phone books): ä = ae, ö = oe, ü = ue, ß = ss. Both rules match the ICU collations de and de-u-co-phonebk (CLDR 48 / ICU 78), which are used; verified against the published examples (Göbel, Goethe, Goldmann, Göthe, Götz). Returns the order, a simplified primary key per entry and groups of entries that are equal at the base level.

    textwerk

  • bidi_check unknown never probed

    Lists all bidi controls (ALM, LRM, RLM, LRE, RLE, PDF, LRO, RLO, LRI, RLI, FSI, PDI) with position and name, tracks the embedding/isolate stack per paragraph as in UAX #9 (X1–X8, paragraph separators of class B) and reports unterminated or stray controls. The paragraph base direction follows UAX #9 P2/P3 (first strong L, R or AL outside isolates) using DerivedBidiClass.txt 17.0.0. For file names with one override the displayed name is approximated, e.g. invoice‮fdp.exe shown as invoiceexe.pdf. Risk is graded by context (code, file names, identifiers are stricter than prose).

    textwerk

  • jargon_flag unknown never probed

    Looks up every word and multi-word expression in the register labels of OpenThesaurus (export 2026-10-30; labels such as Amtsdeutsch, Papierdeutsch, Verwaltungssprache, juristisch, fachsprachlich, Jargon; LGPL-2.1 or CC BY-SA 4.0) and returns unlabelled synonyms from the same synsets as alternatives. Detects support-verb constructions (zur Anwendung bringen, in Kenntnis setzen, eine Prüfung erfolgt) by rule: preposition plus nominalisation plus support verb, or nominalisation plus erfolgen/vornehmen/durchführen/finden/treffen. Reports nominal-style density per sentence. Technical, legal and foreign labels are only used when OpenThesaurus labels the word in every synset, the other labels when it is labelled in at least half of its synsets.

    textwerk

  • unit_parse unknown never probed

    Reads numbers in German format (comma decimal, dot or space thousands, Swiss apostrophe; decimal=point for English), unicode fractions and simple fractions, ranges (10-20 kg, 10 bis 20 kg), tolerances (5 ± 0,1 mm) and dimension chains with x or ×. About 100 unit spellings in 16 quantity kinds are converted with exact factors: SI Brochure 9th ed. incl. Table 8 (ha, l, t, min, h, d, nautical mile), international inch/foot/pound (1959), PS = 735.49875 W, bar = 100 kPa (Directive 80/181/EEC), kcal = 4.184 kJ (Regulation (EU) 1169/2011), data units per IEC 80000-13; temperatures are converted to kelvin.

    textwerk

  • wikidata_link unknown never probed

    For each mention the public Wikidata API (wbsearchentities, German or English labels and aliases) returns up to 7 candidates; one query to the Wikidata Query Service fetches their instance-of (P31) types. Candidates are ranked by search rank, exact label or alias match and word overlap between an optional context and the item description and types; optional type QIDs filter by direct P31. Humans (Q5), family and given name items, disambiguation, category, list and template pages are removed, so the service does not identify persons. Wikidata data is CC0; results reflect the live database at call time.

    textwerk

  • pseudo_localize unknown never probed

    Maps A–Z/a–z to fixed accented look-alikes (e.g. Save → Šåṽé), so untranslated or concatenated strings stand out while staying readable. Expansion pads with ~ to the lower bound of the expansion table published by the W3C (“Text size in translation”, figures from IBM): up to 10 characters 200 %, 11–20 180 %, 21–30 160 %, 31–50 140 %, 51–70 151 %, over 70 130 %; or a fixed factor. ICU MessageFormat is parsed so that only message text is changed (selectors, argument names and # stay), and printf, mustache, ${…}, %{…}, HTML tags, entities and escapes are protected. Bidi mode wraps each word in RLO…PDF to test right-to-left layouts. Same input, same output.

    textwerk

  • locale_format unknown never probed

    Uses the Intl APIs of the runtime (CLDR 48 via ICU 78) to format the given values per locale and returns formatToParts-derived conventions: decimal and group separator, currency symbol position and spacing, percent sign spacing, numbering system, calendar, hour cycle, first day of week and weekend (Intl.Locale week info). Dates are ISO 8601 strings: a plain date is shown as that calendar date, a date-time with offset as that instant in time_zone, a date-time without offset as wall-clock time in time_zone; impossible dates such as 2026-02-30 are rejected. Useful to show agents how a value must look in a market instead of guessing. Information on CLDR conventions, not a legal formatting requirement (for DIN 5008 see din5008-formats).

    textwerk

  • language_detect unknown never probed

    Uses franc-min 6.2 (MIT): 76 languages (82 table entries incl. script variants) with at least 8 million speakers; trigram profiles per script, single-script languages (e.g. Japanese, Korean, Greek, Thai) by script. Returns ISO 639-3 code, the ISO 639-1 code where CLDR maps one, the English language name (CLDR), up to ten ranked candidates with franc distances normalised to 0–1, the dominant Unicode script and a reliability flag (at least 30 letters and a margin of 0.1 to the runner-up). Optional restriction to candidate languages and per-sentence detection for mixed texts. franc analyses only the first 2048 characters of a text (per sentence in per_sentence mode). Limits: not supported are e.g. Danish, Norwegian, Finnish, Slovak, Hebrew, Catalan; such texts are assigned to the closest supported language. Texts under min_length characters return und.

    textwerk

  • dunning_letters unknown never probed

    Determines the start of default under § 286 BGB from an agreed calendar due date (Abs. 2 Nr. 1), from the expiry of the deadline in an earlier reminder (Abs. 1) or 30 days after due date and receipt of the invoice (Abs. 3; consumers only with the notice in the invoice; end moved by § 193 BGB). Default interest under § 288 BGB (5 or 9 points above the base rate of the Deutsche Bundesbank, table 2002 to 2026 as of 2026-10-30, act/365, split at rate changes), the 40 EUR flat fee for non-consumers (§ 288 Abs. 5) and optional dunning costs only after default. The new payment deadline counts from the letter date (§§ 187, 188, 193 BGB with public holidays of the debtor's state). Returns the letter text in German, all amounts, the computation and the legal bases with version.

    textwerk

  • cancellation_letter unknown never probed

    Computes the termination date from the day the letter is received: employment four weeks to the 15th or month end, two weeks during probation, employer periods by completed years of service (§ 622 Abs. 1-3 BGB); residential lease by the tenant on the third working day of a month to the end of the month after next, Saturday counted except as the last day (§ 573c Abs. 1 BGB, public holidays of the state); consumer contracts for regular supply with the § 309 Nr. 9 BGB limits (one month before the end of the initial term, afterwards one month at any time); or a custom period in days, weeks or months to any day, the 15th/month end, month, quarter or year end (§§ 187, 188 BGB). Returns the letter in German, the form requirement (§ 623, § 568 BGB written form; § 309 Nr. 13 BGB text form) and the computation.

    textwerk

  • out_of_office unknown never probed

    Computes the return day as the first day after the absence that is neither a Saturday, Sunday nor a public holiday of the chosen country and region (date-holidays 3.38, data CC BY-SA 3.0; Germany by state, Austria, Switzerland by canton) and writes a fixed, formal message per language: absence period with dates formatted by the Unicode CLDR rules of the runtime (Intl.DateTimeFormat), optional reason (vacation, business trip, training), return day with weekday, deputy with contact and whether messages are forwarded. Texts are fixed templates for each language, not machine translation.

    textwerk

  • intent_classify unknown never probed

    The message is split into sentences (Unicode segmentation plus CLDR abbreviations); greetings and closings are recognised by rules and skipped. Every remaining sentence is embedded with intfloat/multilingual-e5-small (MIT, "query: " prefix, mean pooling, pinned int8 ONNX, SHA-256 checked) and compared with each intent prototype (description and examples; best match counts). A sentence gets the best intent if it beats the second-best by at least min_margin, otherwise it is marked unclear. The message-level result lists the distinct intents in order of their best sentence score, so a cancellation plus a complaint in one e-mail yields both. Default intents (own German descriptions and examples): inquiry, complaint, cancellation, withdrawal_return, order, change_request, praise, data_protection_request; supply your own to replace them. Speech acts (question, request, thanks, statement, greeting, closing) come from transparent rules. At most 6,000 model tokens per call.

    textwerk

  • sie_du_consistency unknown never probed

    Rule-based per Amtliches Regelwerk der deutschen Rechtschreibung (Rat für deutsche Rechtschreibung, 2024), § 65 (polite Sie and Ihr/Ihnen are capitalised) and § 66 (du and ihr are written in lower case, in letters also capitalised); no rule text is reproduced. Unambiguous formal markers: capitalised Sie, Ihnen, Ihr, Ihre ... not at sentence start (including imperatives like "Klicken Sie"). Unambiguous informal markers: du, dich, dir, dein... and euch, euer, eure..., plus lower-case ihr followed by a verb ending in -t (ihr habt). Sentence-initial Sie/Ihr/Ihnen can also mean she/they/her and are resolved only by context (formal if the rest of the text is formal), otherwise reported as ambiguous. Lower-case sie after a question verb ("Können sie mir") is flagged as a possible lower-case polite form. Verdict: formal, informal, mixed or unclear; with expected style every deviation is listed.

    textwerk

  • three_way_text_merge unknown never probed

    Implements the diff3 merge (Khanna, Kuber and Pierce 2007, "A Formal Investigation of Diff3"): base-ours and base-theirs are compared with Myers diffs; changed base ranges of both sides that overlap or touch form a region. A region changed on one side only takes that side, a region changed identically on both sides is taken once (false conflict), otherwise a conflict is emitted with markers <<<<<<< ours, ||||||| base (diff3 style), ======= and >>>>>>> theirs (labels configurable). Units are lines (default, line endings kept) or sentences (Unicode segmentation, whitespace kept with the preceding sentence) for prose without line breaks. Results for line mode follow git merge-file --diff3 on the documented test cases. Returns the merged text, a clean flag and every conflict with its unit ranges.

    textwerk

  • confusables_detect unknown never probed

    Implements UTS #39 (Unicode Security Mechanisms, revision 32 for Unicode 17.0.0): internalSkeleton (NFD, removal of Default_Ignorable_Code_Point, prototype mapping from confusables.txt 17.0.0, NFD again), augmented and resolved script sets from Script_Extensions, restriction levels with IdentifierStatus.txt and the Recommended Scripts of UAX #31 rev. 43. Domains are first mapped with UTS #46 (WHATWG URL, punycode decoded). Each reference is compared by skeleton and classified as single-script, mixed-script or whole-script confusable. Data: Unicode 17.0.0 security files (Unicode License v3).

    textwerk

  • emoji_replace unknown never probed

    Recognises all sequences of emoji-test.txt 17.0 (ZWJ sequences, skin tones, flags, keycaps) by longest match. By default fully-qualified, minimally-qualified and component sequences count; text-style characters such as © or ❤ without U+FE0F only with include_unqualified. Names: English CLDR short names from emoji-test.txt, German tts names from CLDR 48 annotations (fallback to English is marked). After a removal, only the spaces directly around the removed emoji are tidied (no double space, no space before punctuation or line end); the rest of the text is left as it is. Data under the Unicode License v3.

    textwerk

  • vocab_list_de unknown never probed

    Tokenises the text, lemmatises every word with the full-form lexicon german-pos-dict 1.2.4 (CC BY-SA 4.0; 41,902 noun, 10,452 verb and 8,101 adjective lemmas, 2022) and groups occurrences by lemma. Nouns get article, gender, genitive singular and plural (unknown compounds via their dictionary head word, flagged), verbs get 3rd person present, preterite, past participle, separable particle and the perfect auxiliary from English Wiktionary (kaikki.org extract of 2026-10-25, CC BY-SA/GFDL), adjectives get comparative and superlative. Function words are excluded. Output includes counts, first example sentence, coverage and attribution. No CEFR level: there is no openly licensed German level list (see limitations).

    textwerk

  • dictation_score unknown never probed

    Aligns the written text with the reference word by word (minimum edit alignment over words and punctuation) and classifies every difference by German orthography rule types: capitalisation (Groß-/Kleinschreibung), das/dass, ß/ss, umlaut and ä/e, consonant doubling (Schärfung), vowel length marking (Dehnung: h, ie, double vowels), final devoicing (d/t, g/k, b/p), wrong ending, compound written apart or together (Getrennt-/Zusammenschreibung), missing and extra words, and missing, extra or wrong punctuation. Returns all errors with position, counts per type, errors per 100 words and word accuracy. No grade is assigned because grading scales differ between schools and states.

    textwerk

  • nice_class_suggest unknown never probed

    Matches each described good or service against the 11,266 official indications and synonyms of the English Nice Classification, 13th edition, version 2026 (in force 1 January 2026, WIPO master files) plus the 45 class headings. Words are normalised (lower case, accents removed, stop words dropped, simple English plural stemming) and scored with IDF-weighted overlap (60 % share of the official term covered, bracketed clarifications such as [SaaS] not required; 40 % share of the input explained; identical word sets score 1). Returns the best official terms per item; a class is suggested for an item when one of its terms scores at least 0.5 and within 0.15 of the best match for that item, with heading and kind (goods 1-34, services 35-45). © WIPO; used with acknowledgement of WIPO copyright as the Nice FAQ requires. The office decides the final classification; lexical matching cannot judge purpose or material.

    textwerk

  • acronym_ideas unknown never probed

    Splits the title into words, marks German and English stop words (and, of, für, und …), and enumerates in word order every combination of the first 1-3 letters of each significant word (stop words contribute 0 or 1 letter when allowed), within the length limits. Each candidate is rated with the pronounceability rules (onsets, codas, vowels) for the chosen language(s): candidates scoring 80 or more read as a word (acronym), the rest are spelled out (initialism). Ranking: pronounceability minus 3 points per character away from 4-5 letters, +5 for plain initials. Every candidate states which letters came from which word.

    textwerk

  • objection_draft unknown never probed

    Computes the date of notification from posting or electronic dispatch with the four-day fiction (§ 122 Abs. 2, 2a AO; § 41 Abs. 2 VwVfG; § 37 Abs. 2 SGB X; one month for tax notices posted abroad) or from an actual receipt date, then the one-month objection period (§ 355 AO, § 70 VwGO, § 84 SGG; three months for SGG notices abroad) or one year without correct instructions on remedies (§ 356 Abs. 2 AO, § 58 Abs. 2 VwGO, § 66 Abs. 2 SGG), with § 188 Abs. 3 BGB for short months and the move to the next working day (§ 108 Abs. 3 AO, § 57 Abs. 2 VwGO with § 222 Abs. 2 ZPO, § 64 Abs. 3 SGG). The fiction date itself is not moved (safe reading). Returns a letter skeleton with the caller's grounds or placeholders, an optional application for suspension and the legal bases with version.

    textwerk

  • defect_notice unknown never probed

    Computes the deadline for subsequent performance or remedy from the letter date (§§ 187 Abs. 1, 188 Abs. 1, 193 BGB with public holidays) and the end of the limitation period: two years from delivery for goods, five years for buildings and building materials (§ 438 Abs. 1, 2 BGB), two or five years from acceptance for works (§ 634a Abs. 1, 2 BGB), with a warning when less than three months remain. Adds the presumption of § 477 BGB for consumer purchases within one year, the inspection and notice duty of § 377 HGB for commercial purchases and the notice duty of § 536c BGB for rented property. Letter in German with the defects as a numbered list and the legal consequences after the deadline (§§ 437, 439, 323, 441 BGB; §§ 634, 635, 637 BGB; §§ 536, 536a BGB).

    textwerk

  • reference_decode unknown never probed

    Searches the text for the "Zufriedenheitsformel" and maps it to the scale documented in the Wikipedia article "Arbeitszeugnis" (revision 267623717, CC BY-SA 4.0) with the case law cited there: stets zur vollsten Zufriedenheit = sehr gut, stets zur vollen = gut, zur vollen or stets zur Zufriedenheit = befriedigend (BAG 18.11.2014 - 9 AZR 584/13), zur Zufriedenheit = ausreichend, im Großen und Ganzen = mangelhaft, zu erledigen versucht/bemüht = ungenügend (BAG 14.10.2003 - 9 AZR 12/03). Each match gets a certainty and alternative readings where sources differ. Other "codes" are not decoded because no reliable source documents them; § 109 GewO (clarity requirement) is cited. Also reports whether a qualified reference covers performance and conduct.

    textwerk

  • job_ad_draft unknown never probed

    Builds the ad only from the supplied data (no invented marketing text): title with the gender note (m/w/d) unless one is present, company line, location or remote setting, start date, sections Ihre Aufgaben / Ihr Profil / Wir bieten, salary range with period, application contact and deadline. Generates schema.org JobPosting JSON-LD (title, description, datePosted, validThrough, employmentType, hiringOrganization, jobLocation or jobLocationType TELECOMMUTE with applicantLocationRequirements, baseSalary as QuantitativeValue) and checks required properties. All supplied texts are screened with the AGG rules of agg-check (grounds of § 1 AGG; § 11 AGG forbids discriminatory job ads).

    textwerk

  • agg_check unknown never probed

    Applies documented rules to the ad text and its first line or title: explicit age limits and age ranges, youth-related team wording and career-stage target groups (age); native-speaker, accent and origin requirements, nationality (ethnic origin, indirect); explicit gender requirements, masculine-only job titles without a note for all genders (person nouns that have a feminine -in or -frau form in german-pos-dict 1.2.2, CC BY-SA 4.0) and "(m/w)" without "d" (gender; since 2018 the register allows "divers", § 22 Abs. 3 PStG); religious affiliation (religion, § 9 AGG); health and full physical capacity (disability, § 8 AGG); sexual identity; requested photos. Every finding names the § 1 AGG ground; § 11 AGG forbids job ads that violate § 7 Abs. 1, and under § 22 AGG such indications shift the burden of proof. Possible justifications (§§ 8-10 AGG) are pointed out, not decided.

    textwerk

  • imprint_draft unknown never probed

    Builds the imprint in Markdown and plain text with the items of § 5 Abs. 1 DDG (Digitale-Dienste-Gesetz, version 2026-03-25): name and address, legal form and authorised representatives for legal persons and partnerships, e-mail and a second fast contact channel, supervisory authority for licensed activities, commercial/partnership/cooperative/association register with number, regulated professions (chamber, professional title and state, professional rules with access), VAT ID (§ 27a UStG; check digit verified with ISO 7064 MOD 11,10 as used by the Federal Central Tax Office) or business ID, liquidation note, optional capital statement, and for journalistic-editorial content the responsible person under § 18 Abs. 2 MStV. Lists every mandatory item that is missing for the chosen legal form.

    textwerk

  • complaint_severity unknown never probed

    Rule-based and explainable: ten topic rules (product defect/warranty, right of withdrawal, data protection, late delivery, billing dispute, cancellation, safety risk/injury, discrimination, fraud allegation, unsolicited advertising) and seven escalation signals (legal action, authority or arbitration, public exposure, repeated contact, deadline, money demand, strong wording) are matched with Unicode-aware patterns; matches preceded by a negation (nicht, kein, not, ...) are discarded. Each topic carries a documented weight and the relevant norms with links (BGB §§ 434, 437, 439, 441, 312g, 355-357, 286, 323, 312k, 675x; ProdHaftG § 1; AGG §§ 1, 19; UWG § 7; GDPR Art. 12, 15-17, 21, 77, 82; titles checked on gesetze-im-internet.de and EUR-Lex on 2026-11-01). Score = sum of weights (+1 for amounts of 1,000 EUR or more); levels none 0, low 1-2, medium 3-5, high 6-8, critical 9+; safety risks are at least high, injuries critical. Statutory response deadlines are listed where they follow from the matched norms.

    textwerk

  • spam_classify unknown never probed

    Explainable feature scoring without a model: honeypot field filled (5), submitted in under 3 seconds (3), BBCode/HTML link markup (3), URL in the name field (3), more links than allowed (2, +1 from 5 links), URL shorteners (2), spam vocabulary per category (pharma, gambling, finance, SEO, adult, phishing; 2 each), messenger contact redirection (2), money promises (2), only a link without text (2), invisible Unicode characters (2), script mismatch to the expected language (2), language mismatch by franc-min (1), generic cold-outreach openers (1), excessive capitals (1), character or word repetition (1), random-looking letter-digit tokens (2). Score below 3 = ham, 3-5 = suspicious, 6 or more = spam. Every fired feature is returned with its evidence so the decision can be checked; weights are a documented heuristic (not trained).

    textwerk

  • ticket_route unknown never probed

    Category scores are cosine similarities of embeddings computed locally with intfloat/multilingual-e5-small (MIT, about 100 languages, "query: " prefix as the model card prescribes for classification, mean pooling, int8 ONNX from the model repository, pinned revision, SHA-256 checked): message vs. "label: description", and, if examples are given, the best-matching example; with examples the score is 0.5 x description + 0.5 x best example. A small margin between the first two categories sets needs_review. Priority is rule-based and explainable: impact (high: outage, nobody can work, data loss, security incident; medium: several users or a team; else low) times urgency (high: dringend, sofort, ASAP, heute noch; medium: by tomorrow or a weekday, this week; else low) in a fixed matrix. Messages are embedded one by one (no batching effects); at most 6,000 model tokens per call. The first call on a server downloads the model once (118 MB).

    textwerk

  • review_pattern_check unknown never probed

    Deterministic pattern analysis over up to 2,000 reviews: exact duplicates after normalisation (NFKC, lower case, punctuation removed); near duplicates by Jaccard similarity of word 3-gram shingles (pairs found through a shingle index, exact Jaccard, default 0.8); shared templates as word n-grams (default 6 words) that occur in at least three reviews which are not near duplicates; daily bursts when a day has at least 3 reviews and more than mean + 3 standard deviations of the daily counts over the covered period; authors with several reviews; rating-text mismatch from small own lists of clearly positive and negative words; generic short praise; and disclosures of free products or incentives. Each review gets an attention score (sum of pattern weights) and every pattern names the reviews and evidence. Context: UWG Annex nos. 23b/23c and § 5b para. 3 UWG concern fake or unverified consumer reviews; this service only points to patterns that merit a human check.

    textwerk

  • compound_split_read unknown never probed

    Splits every word above a length threshold by dynamic programming over the jWordSplitter German dictionary (Morphy/LanguageTool data, CC BY-SA 4.0) with its exception list: each part must be a dictionary entry of at least three letters, a linking s and known compound stems (wohn-, miet- ...) are allowed between parts; fewer parts, joints on Liang hyphenation points and longer parts win. Every part is returned with its dictionary entry and linking element so the split can be checked. Styles: Mediopunkt with lower-case parts (Forschungsstelle Leichte Sprache, Hildesheim) or hyphen with capitalised noun parts (Netzwerk Leichte Sprache, rule W5).

    textwerk

  • sentence_split_de unknown never probed

    Applies the SRX segmentation rules of LanguageTool for German plus its language-independent rules (segment.srx, LGPL-2.1, retrieved 2026-11-01; 60+ rules covering abbreviation lists, ordinals before month names and nouns such as Platz or Jahrhundert, Roman numerals, initials, quotes, brackets, URLs and e-mail addresses) with one HALOWERK addition for street abbreviations before house numbers. Paragraph breaks or every line break can be added as hard boundaries. With explain=true each candidate break that an exception rule prevented is returned with the rule.

    textwerk

  • text_stats unknown never probed

    Counts characters, letters, words, numbers, sentences (LanguageTool SRX rules for German, simple punctuation rules for English) and paragraphs; reports average word and sentence length, the longest sentence and the most frequent content words (Snowball stop lists, BSD). Reading time uses the mean rates of Brysbaert (2019, Journal of Memory and Language 109:104047, Table 5): German 260 words/min silent and 169 aloud, English 236 and 190; custom rates are possible. Vocabulary: type-token ratio, Guiraud R, Herdan C, Yule K and MTLD (McCarthy and Jarvis 2010, threshold 0.72, only from 100 tokens).

    textwerk

  • headline_score unknown never probed

    Scores each variant from 100 down by documented penalties: characters above max_chars and words outside min/max (service defaults 70, 4 and 12), words longer than 15 letters, mean syllables per word above 2 (Liang patterns de-1996), share of words over 6 letters above 40 percent (the IW measure of the Wiener Sachtextformel), nominalisations, officialese and jargon labelled in OpenThesaurus, unexplained abbreviations, passive voice, vague forward-reference openers (Das, So, Dies, Hier ...), all-caps words and repeated exclamation marks. With a keyword, variants where it appears among the first three words get a bonus. A heuristic ranking, not a click-through prediction.

    textwerk

  • date_expression_de unknown never probed

    Combines chrono-node 2.10 (German parser: weekdays, relative days, times, explicit dates, ranges) with own rules for what chrono does not cover: quarters (Q3, 3. Quartal), half years, ISO calendar weeks, relative weeks/months/years, Anfang/Mitte/Ende of months per § 192 BGB (1st, 15th, last day) and of other periods (first, middle, last day), weekends, "kommenden Freitag", day.month without year, month and year ends, and holidays (Easter by the anonymous Gregorian algorithm). Missing years are chosen by prefer=future (default), past or nearest. Calculations run on the wall clock of the given time zone, independent of the server zone.

    textwerk

  • company_mentions unknown never probed

    Finds legal-form designations from a table of German, Austrian, Swiss, EU, UK, US and Dutch forms, each with its statutory basis (e.g. § 4 GmbHG, § 5a GmbHG, § 19 HGB, § 19 UGB, Art. 950 OR, Art. 11 SE-VO, Companies Act 2006 s. 58/59), and reads the firm name to the left: capitalised words, numbers and connectors (&, und, für, von ...) up to the previous clause boundary, without leading articles, prepositions and generic nouns (Firma, Kunde ...). Designations without a name in front, such as court abbreviations (AG München, KG Berlin), are not reported. Associations (e. V.) are marked as such.

    textwerk

  • law_citation_parse unknown never probed

    Reads § / §§ / Art. citations with numbers and letters, Absatz (also Roman numerals), Unterabsatz, Satz, Halbsatz, Nummer, Buchstabe/lit., Alternative, f./ff. and lists of norms, followed by a law abbreviation. Links are only produced for abbreviations verified on 2026-11-01: 166 federal laws checked against the table of contents and page titles of gesetze-im-internet.de (e.g. GModG instead of the replaced GEG) and 67 EU acts whose CELEX numbers and German titles were checked via the EU Publications Office SPARQL endpoint; article deep links only where the Cellar XHTML carries art_N anchors. Unknown abbreviations are parsed but not linked.

    textwerk

  • product_code_extract unknown never probed

    Finds digit sequences of GTIN-8/12/13/14 length (spaces and hyphens allowed) and validates the check digit per GS1 General Specifications 7.9 (weights 3/1); ISBN-13 (978/979) and ISBN-10 (mod 11, X), ISSN (mod 11, ISO 3297), PZN-8 (IFA rule: weights 1-7, mod 11, remainder 10 not issued) and ASIN (B0 + 8 characters, only with label). Article, part, order and model numbers are taken only after labels such as Art.-Nr., SKU, MPN, HAN, P/N, Modell, Typ; customs tariff numbers after Zolltarifnummer/HS/KN/TARIC. Every hit reports validity of its check digit or null when none exists.

    textwerk

  • reference_number_extract unknown never probed

    Court file numbers are matched as division + register sign + number/year (also BVerwG with dot, BSG with B prefix and R suffix, BVerfG BvR/BvL ...) and the register sign is looked up in 291 register signs with meaning and court from de.wikipedia "Aktenzeichen (Deutschland)" (CC BY-SA 4.0, retrieved 2026-11-01). EU cases C-/T- numbers. Invoice, customer, order, contract and reference numbers only after their labels (Rechnungsnummer, Kd.-Nr., Bestellnummer, Vertragsnummer, Unser Zeichen ...). HRA/HRB/GnR/PR/VR register numbers, VAT IDs (DE/AT/CH formats) and SEPA creditor identifiers with ISO 7064 MOD 97-10 check digits.

    textwerk

  • keyword_extract unknown never probed

    Own implementation of YAKE (Campos et al. 2020, Information Sciences 509:257-289): statistical features per word (casing, position, frequency, relatedness to context, spread over sentences) from the text alone, candidate n-grams up to three words that neither start nor end with a stop word, keyword score from the product of word scores, near-duplicates removed by Levenshtein similarity. Stop words from the Snowball project (BSD); language detection with franc-min when not given. Lower score = more relevant.

    textwerk

  • iptc_topic unknown never probed

    Matches the words of the text against the official IPTC Media Topics vocabulary (release 2026-09-30, 1059 active concepts, German and English labels and definitions, CC BY 4.0, data file in daten/G03): label words weigh 3 (German -ung labels also by their verb stem with 2: Impfung -> impf), nouns of German definitions 1 and words of English definitions 0.5; inverse concept frequency down-weights common words, a light suffix normalisation matches compound heads and modifiers (Wettervorhersage -> wetter, vorhersage) count half; scores are normalised by the number of terms per concept; top-level categories add their concepts with halving weights (1, 1/2, 1/4 ...). A transparent lexical method without a trained classifier; every topic lists the words that triggered it.

    textwerk

  • glossary_enforce unknown never probed

    For every glossary entry the source term is searched in each source segment with Unicode word boundaries (multi-word terms with flexible spacing); in stem mode simple inflection suffixes (s, es, e, en, n, er, ern, em, ens, 's) are accepted on the last word, which covers regular German and English plurals and cases. If the source term occurs, one of the allowed target terms must occur in the target; forbidden variants are reported wherever they appear. Case-insensitive unless an entry is case_sensitive. Returns violations with segment, term, expected and found forms plus a compliance rate. Rule-based, no language model; irregular inflection (Haus/Häuser) is not recognised.

    textwerk

  • translation_qa unknown never probed

    Compares each source/target pair deterministically. Times of day are compared in 24-hour form (5:30 PM = 17:30 = 17.30 Uhr). Numbers are parsed with the CLDR separators of the source and target locale (1,234.50 in en equals 1.234,50 in de); a number that only matches when the target is read with source separators is reported as not localized. Placeholders cover printf (%s, %1$d), Python %(name)s, Ruby %{name}, mustache {{name}}, ${name} and ICU MessageFormat arguments parsed with a full ICU parser. Also checks HTML/XML tag sets and nesting, URLs and e-mail addresses, leading/trailing whitespace, doubled spaces, final punctuation (incl. CJK, Arabic, Devanagari and the Greek question mark), unbalanced brackets and quotes, repeated words, empty and identical targets and the target/source length ratio.

    textwerk

  • urgency_detect unknown never probed

    Own rules, no model: deadlines are parsed from German and English dates (05.11.2026, 5.11., 15. November, November 6, 2026, ISO), relative words (heute, morgen, übermorgen, today, tomorrow, EOD), periods (innerhalb von 14 Tagen, binnen 10 Werktagen, within 7 business days; business days skip weekends only), weekdays (bis Freitag, by Friday: next occurrence, today counts), end of week (Friday), end of month (last day, cf. § 192 BGB) and end of year, all relative to reference_date (default: today in Europe/Berlin). A date counts as an explicit deadline when a marker such as bis, spätestens, Frist, innerhalb, by, until, due or no later than stands before it. Urgency cues are weighted (urgency words 2, final notice 3, reminder 1, soft urgency 1) and consequences (andernfalls, Inkasso, Mahnbescheid, Sperrung, otherwise, late fee ...) are listed. Level: critical if an explicit deadline is due within 1 day or overdue, or a consequence comes with a deadline within 3 days; high if a deadline is within 3 days, a consequence is threatened or cue weight is 4+; medium if a deadline is within 14 days or cue weight is 2+; low for any other cue or date; otherwise none.

    textwerk

  • emotion_de unknown never probed

    Runs Horizon-Labs/multilingual-emotions-small locally (Apache-2.0; mmBERT-small, MIT; trained on GoEmotions, Apache-2.0, and Qwen3.8-27B translations into 35 languages incl. German; pinned revision, SHA-256 checked, int8-embedding ONNX, onnxruntime-node). Output per text: the 28 GoEmotions label probabilities (active per the label thresholds tuned on the GoEmotions validation set, thresholds.json), and six Ekman groups (anger: anger/annoyance/disapproval; fear incl. nervousness = Sorge; joy; sadness; disgust; surprise) scored as the maximum of their labels per the GoEmotions paper mapping (ekman_mapping.json). Group presence uses the per-emotion thresholds tuned for German on the BRIGHTER dev set (eval/this_model.json). Documented German quality on BRIGHTER (human-labelled German texts, CC-BY-4.0, 1,500 test texts): macro-F1 0.418 over six emotions; per emotion F1 anger 0.573, sadness 0.507, joy 0.472, disgust 0.459, fear 0.254, surprise 0.245 (model card; reproduced by HALOWERK on 2026-11-01 on all 5,208 German test texts with the same thresholds: macro-F1 0.417). Texts are truncated at 256 tokens; at most 32 texts and 5,000 model tokens per call; the first call downloads about 300 MB.

    textwerk

  • political_ad_flag unknown never probed

    Indicator rules with the legal basis per finding, linked to EUR-Lex (CELEX 32024R0900, OJ L 2024/900 of 20 March 2024, applicable from 10 October 2025 per Art. 30): political actor references (Art. 3 point 4 (a)-(g) with Art. 3 point 2 (a); built-in short names of parties from the official results of the Bundestag election 2025 and the European election 2024 published by the Federal Returning Officer, plus your own names), election/referendum references and calls to vote (Art. 3 point 2 (b)), legislative or regulatory processes and lobbying calls (Art. 3 point 2 (b)), paid or sponsored markers (remuneration, Art. 3 point 2). Counter-indicators: official election information (Art. 3 point 2 (i)), editorial content (Art. 1(2)), personal opinions (Art. 1(3)), purely commercial content (Art. 3 point 2 (a)). If political indicators are present, the label elements of Art. 11(1) (a) statement, (b) sponsor, (c) linked election or process, (d) targeting statement, (e) transparency notice are checked in text and metadata. Timing: publication within three months before an election (Art. 5(2)) or within the last month (Art. 15(7), Art. 16(4)). Art. 8(1) lists the features to weigh; the service never decides.

    textwerk

  • semantic_diff unknown never probed

    Both versions are split into sentences (Unicode segmentation plus CLDR abbreviations). Identical sentences are aligned first by a longest common subsequence (Myers 1986); identical sentences outside that sequence count as moved. The remaining sentences are embedded with intfloat/multilingual-e5-small (MIT, "query: " prefix for symmetric similarity, mean pooling, pinned int8 ONNX, SHA-256 checked) and paired greedily by highest cosine similarity at or above min_similarity (default 0.9). Paired sentences get a token-level Myers diff and meaning-relevant flags: numbers, negation (nicht, kein, not, never ...), modal verbs (muss, kann, darf, must, may, shall ...) and quantifiers (alle, einige, all, some ...). A pair whose position contradicts the order of the aligned sentences is also marked moved. Unpaired old sentences are removed, unpaired new ones added. At most 6,000 model tokens per call; sentences identical in both versions need no model.

    textwerk

  • paraphrase_pairs unknown never probed

    Every text is embedded with intfloat/multilingual-e5-small (MIT, "query: " prefix as prescribed for paraphrase retrieval, mean pooling, pinned int8 ONNX, SHA-256 checked); all pairs with cosine similarity at or above threshold (default 0.93, calibrated on German and English examples: paraphrases about 0.945-0.98, unrelated sentences about 0.83-0.88) are reported with word Jaccard and character 3-gram Jaccard. Labels: duplicate when word Jaccard is at least 0.8; similar_but_conflicting when negation words or numbers differ between the two texts (e.g. "kann gekündigt werden" vs. "kann nicht gekündigt werden"); otherwise paraphrase. Duplicates and paraphrases are grouped into clusters (union-find). Texts are embedded one by one; at most 300 texts and 8,000 model tokens per call.

    textwerk

  • numbers_consistency unknown never probed

    Rule-based, no model. Numbers are parsed in German (1.234,5) or English (1,234.5) format with scale words (Tsd., Mio., Mrd., thousand, million, billion), percent and percentage-point units; plain integers count as exact counts, decimals stand for their rounding interval (±0.5 of the last digit), qualifiers such as rund, etwa, about widen it by 5 %. All checks use interval arithmetic, so a statement is inconsistent only if no combination of the stated, rounded values can be right. Checks: "X von/of Y ... Z %" (Z = 100·X/Y); totals with parts ("insgesamt N, davon A und B": parts above the total are inconsistent, an exact sum is consistent); shares listed after verteilen sich, entfallen auf, setzt sich zusammen, split, breakdown must add up to 100 %; changes "von A auf B" with stated percent (relative change) or Prozentpunkte/percentage points (difference), including the percent-vs-percentage-point confusion and the direction of the verb (gestiegen, gesunken, rose, fell ...); verdoppelt/halbiert/tripled; and written arithmetic "A + B = C". Every check returns stated value, computed interval, status and the evidence span.

    textwerk

  • reference_list_check unknown never probed

    Splits the list into entries (blank lines, or one per line with continuation lines joined), extracts DOIs (Crossref pattern 10.NNNN/...), URLs and the year, and classifies each entry's style signature (numeric [1], numbered 1., APA-like Author, A. A. (2019)., ISO-690-like FAMILY, Given, Chicago-author-date-like, other author-year). DOIs are looked up through the public Crossref REST API (https://api.crossref.org, metadata CC0) in the polite pool ([email protected]), at most 3 requests at a time and max_lookups per call: found works are compared with the entry (title word overlap, year, first author family name); unknown DOIs are checked with the /works/{doi}/agency endpoint to tell DataCite or other registration agencies from unregistered DOIs. Optional URL checks send one HEAD request (GET fallback) per URL after a robots.txt check, at most 10 URLs and 5 per host. Also reported: majority style and deviating entries, mixed DOI notation (https://doi.org/ vs. doi:), entries without year, duplicate DOIs and near-identical entries.

    textwerk

  • bibtex_clean unknown never probed

    Own BibTeX parser (braces and quotes, nested braces, # concatenation, @string macros incl. the standard month macros, @preamble kept, @comment skipped, broken entries reported with line numbers instead of aborting). Cleaning: entry types and field names lower case, whitespace collapsed, empty fields removed, page ranges with -- (BibTeX en dash), DOIs without https://doi.org/ or doi: prefix, month names and numbers as month macros (jan ... dec), author/editor separators normalised to " and ", ISBN-10/13 check digits verified. Required fields per standard entry type follow "BibTeXing" (O. Patashnik, 1988, section 3.1); missing ones are reported. Duplicates: same DOI, or same normalised title (Levenshtein ratio ≥ 0.92) with the same year and first-author family name; the most complete entry is kept, missing fields are filled from the others and conflicting values are listed. Duplicate keys get suffixes. Output: cleaned BibTeX with consistent formatting (two-space indent, braces around values, numbers bare, macros bare), a change log per entry and statistics.

    textwerk

  • mojibake_fix unknown never probed

    Finds runs of characters that, re-encoded in a legacy single-byte reading (Windows-1252 incl. Latin-1 C1 controls, Windows-1250, Windows-1251, Mac Roman; byte tables from the WHATWG Encoding Standard via ICU), form valid UTF-8. A run is only replaced when its evidence score reaches 3: several sequences in a row, 3/4-byte sequences, C1 controls, or a single Latin-1 target in word context; a second pass lets runs confirmed elsewhere in the same text support single sequences of the same script. Word-final punctuation, script mixing inside a word and runs that already form a normal word in their own script count against a fix, so correct text such as „Gruß“ or ВЁСНЫ stays untouched. Up to three rounds repair double encoding. Every replacement lists bytes, reading and rules; ambiguous runs and remaining suspects are reported, not changed. Own heuristic inspired by the idea of ftfy; no code copied.

    textwerk

  • braille_convert unknown never probed

    Translates text to German Basisschrift following the liblouis 3.39.0 tables de-g0.utb/de-g0-core.uti, de-chardefs6.cti and de-accents.cti (LGPL-2.1-or-later, SBS 2018, after BSKDL "Das System der deutschen Brailleschrift" 2015/2018): letters and umlauts, ß (2346), 94 accented letters, digits as a–j with number sign (3456), decimal comma and thousands point inside numbers, dot 6 before a–j after digits, context rules for quotation marks, brackets, question and exclamation marks, dashes, minus, §, %, °, € and arithmetic signs between numbers. Capitals are not marked, as in the source table. Verified against all 383 applicable cases of the liblouis/blista test suite de-g0.yaml. Vollschrift letter-group contractions, Kurzschrift, emphasis, URLs and e-mail addresses (computer Braille) are not supported.

    textwerk

  • meaning_check unknown never probed

    Looks the name up in English Wiktionary (one MediaWiki API request for the name, its lower-case and capitalised forms, its words and optionally its letter sequences of 4+ characters; Japanese romanisations are followed to the kana entry). Senses in the 20 checked language sections are classified: high when a usage label or qualifier says vulgar, offensive, derogatory, pejorative, slur, obscene or sexual, or the gloss names a sexual, excremental or swear word; medium for slang/euphemistic labels or glosses about death, illness, stupidity, dirt and the like. All senses found are returned with labels, so the agent can judge. Content: Wiktionary contributors, CC BY-SA 4.0; each used page is listed with revision ID and URL (attribution required on reuse). Stand 2026-11-01. Limits: only entries that exist in English Wiktionary; sound-alikes, other scripts (except Japanese romanisation) and brand associations are not covered.

    textwerk

  • domain_ideas unknown never probed

    Builds labels from the keywords (transliterated to LDH: ä→ae, ß→ss, accents removed): joined keywords, reversed pair, single keywords, initials, prefixes get/try/use/go/my/the, suffixes hq/app/hub/labs/ly/ify, hyphenated forms if allowed and domain hacks where a keyword ends in a requested TLD. Labels follow RFC 1035/5891 LDH rules and the length limit; scores combine length, hyphens, digits and the English pronounceability score of pronounceability. Availability: the RDAP base URL comes from the IANA RDAP bootstrap file (RFC 9224); HTTP 404 means the registry has no registration object (likely available; premium or reserved names are not detected), HTTP 200 means registered. Only gTLDs (ICANN-contracted registries) are queried; ccTLDs are reported as not checked (.de explicitly excluded by DENIC terms). Stand 2026-11-01.

    textwerk

  • pronounceability unknown never probed

    Rule-based, no model: each word is split into consonant and vowel groups and checked against listed word-initial clusters (onsets) and word-final clusters (codas) for German and English orthography; inner clusters must split into a legal coda plus onset. Penalties for missing vowels, illegal clusters, more than three consonant sounds in a row, runs of three or more vowel letters, q without u, umlauts in English, digits, more than 12 letters and more than 4 syllables. Returns a 0-100 score and verdict per language, per-word findings, a syllable estimate and graphemes that are read differently in German and English (w, v, z, j, ei, ie, eu, th, sch, ch …). The full onset and coda lists are part of the answer.

    textwerk

  • length_fit unknown never probed

    Counts like the target platform: code points, grapheme clusters, Google Ads characters (double-width CJK characters count 2; responsive search ads: headline 30, description 90, path 15), X weighted length (twitter-text config v3: weight 1 for U+0000-10FF and some punctuation ranges, 2 otherwise, emoji 2, URLs 23; limit 280) or SMS segments (GSM 7-bit alphabet with 2-septet extension characters per 3GPP TS 23.038, 160/153 septets, otherwise UCS-2 70/67). Shortening stops as soon as the text fits and applies in order: whitespace, remove (...) and [...], standard abbreviations (z. B., bzw., inkl., e.g., approx. …), filler words, und/and to &, GSM transliteration of typographic quotes and dashes (SMS only), drop trailing sentences, drop trailing clauses, cut at a word boundary (without dangling conjunctions or punctuation) with ellipsis. Protected phrases are never changed or removed. Each applied step is reported with the length before and after.

    textwerk

  • i18n_key_diff unknown never probed

    Flattens nested resources to dotted keys (Rails-style YAML with a root locale key is unwrapped automatically) and compares every target locale with the base: missing keys, keys that no longer exist in the base, empty values, values identical to the base (possible untranslated text), type mismatches and placeholder mismatches (printf, ICU, mustache, ${…}). With plural_style i18next, keys ending in _zero/_one/_two/_few/_many/_other (and _ordinal_…) are grouped and checked against the CLDR plural categories of each target locale (e.g. ru needs one, few, many, other), instead of being reported as missing or orphaned keys.

    textwerk

  • xliff_po_check unknown never probed

    Parses XLIFF 1.2 (trans-unit, state, maxwidth/size-unit) and XLIFF 2.x (unit/segment, state, slr:sizeRestriction in code points) with fast-xml-parser in document order, and GNU gettext PO files with an own parser (msgctxt, plurals, flags, obsolete entries, C escapes). Checks per unit: missing or empty target, fuzzy or needs-review state (XLIFF 2 segments whose state is initial or not set count as not reviewed), inline elements (x, g, ph, bpt/ept, pc, sc/ec …) and text placeholders (printf, ICU, mustache) between source and target, length limits, duplicate ids or msgctxt+msgid, leading/trailing newline consistency, msgstr[n] count against Plural-Forms, Plural-Forms syntax and its agreement with the CLDR plural categories of the language.

    textwerk

  • term_extract unknown never probed

    Splits the text into sentences (Intl.Segmenter) and punctuation-free chunks, builds word n-grams up to max_ngram that neither start nor end with a function word (hand-compiled closed-class lists) and contain no function word inside. German candidates must end in a capitalised word (noun head); sentence-initial single words count only if they also appear capitalised elsewhere. Plural variants are merged when the shorter form also occurs. Candidates are ranked by C-value (Frantzi, Ananiadou and Mima 2000, with log2(n+1) so single words can rank), which discounts terms that mainly occur nested in longer ones. Rule-based, no part-of-speech model; meant as input for a human glossary review.

    textwerk

  • koelner_phonetik unknown never probed

    Encodes each letter by the published rule table of Hans Joachim Postel (IBM-Nachrichten 19, 1969) including the context rules for C, D/T, P and X and the initial-sound rules; umlauts count as vowels and ß as S. Then repeated digits are collapsed and all zeros except a leading one are removed. Words are coded separately (hyphenated names stay one word unless split_hyphens). Returns raw code, collapsed code and final code, and groups names with identical codes.

    textwerk

  • fuzzy_name_match unknown never probed

    Normalises names (NFKC, case, ICAO-style folding ä → ae, ø → oe, diacritics removed, & / und / and unified), detects legal-form suffixes from the GLEIF ISO 20275 Entity Legal Forms code list v1.6 for the chosen countries (default DE, AT, CH), lists the matching ELF entries and removes the suffix from the core name, removes academic titles and reorders "Surname, Given" for persons. Score = 0.35 token-sorted Levenshtein similarity + 0.25 Jaro-Winkler + 0.25 token Dice + 0.15 Dice of Cologne phonetic codes (for names without Latin letters the phonetic part is left out and the rest rescaled); legal forms that no ELF entry lists together multiply by 0.9. The weights are a documented heuristic, not a probability. Each candidate gets the breakdown.

    textwerk

  • article_check unknown never probed

    Finds determiner + adjective(s) + noun phrases in German text and checks them against the full-form lexicon german-pos-dict 1.2.4 (CC BY-SA 4.0; 41,902 noun lemmas, 2022): the determiner (der/ein/kein/possessives/dieser/jeder/welcher) must share case, number and gender with the noun form, attributive adjectives must carry the weak, mixed or strong ending required after it, and after a preposition the governed case (mit + dative, für + accusative …) is enforced. Unknown compounds are checked via their dictionary head word (Fahrradschloss → Schloss). Errors come with corrected article or ending; learner pairs (article + noun) are checked for the nominative; nouns can be looked up with article, genitive and plural. Coverage and attribution are reported.

    textwerk

  • conjugate_de unknown never probed

    Looks the verb up in german-pos-dict 1.2.4 (CC BY-SA 4.0; 10,452 verb lemmas with all simple forms, 2022) by infinitive or by any inflected form (ging → gehen). Returns present, preterite, Konjunktiv I and II for all six persons, imperative (du, ihr, Sie), present and past participle, zu-infinitive, separable particle (main-clause forms like "fängt an"), verb class derived from the forms (weak, strong, mixed, irregular) and spelling variants. Compound tenses (Perfekt, Plusquamperfekt, Futur I and II) use the perfect auxiliary listed in English Wiktionary (kaikki.org extract of 2026-10-25, CC BY-SA/GFDL); verbs without that entry get Futur I only and a note. Reformed spelling is preferred over pre-1996 ß spellings.

    textwerk

  • exercise_gen unknown never probed

    Builds cloze exercises from your own text without any language model: articles and adjective endings come from determiner–adjective–noun phrases checked against german-pos-dict 1.2.4 (CC BY-SA 4.0), prepositions from its preposition list with governed case as hint, finite verbs from its verb forms with the infinitive as hint. The C-test follows Klein-Braley and Raatz (1984): from the second sentence on, the second half of every second word is deleted (the larger half for odd lengths), first and last sentence stay intact. Gaps are spread evenly over all candidates (deterministic, no randomness). Returns the exercise text with numbered gaps, an answer key, hints, multiple-choice options for articles and a word bank.

    textwerk

  • syllable_rhyme unknown never probed

    For each word: syllable count from the IPA transcription in English Wiktionary (kaikki.org extract of 2026-10-25, CC BY-SA/GFDL, 75,636 German words with IPA) or, if missing, from orthographic vowel groups (diphthongs and double vowels count once), syllable division with the TeX hyphenation patterns de-1996 (reformed spelling) and a rhyme key from the last stressed vowel of the IPA (r variants and length marks normalised) or an orthographic approximation (flagged). For poems: syllables per line, end words and rhyme scheme letters (AABB, ABAB …). find_rhymes_for lists dictionary words sharing the rhyme key, same syllable count first.

    textwerk

_ try it over a2a through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id f1bd989576778e0d.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/f1bd989576778e0d/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/f1bd989576778e0d/badge.svg)](https://brick.blue/agent/f1bd989576778e0d?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
1
ok
0
failed
1
success rate
0%
median latency
117ms
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

1 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on halowerk.com 116 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.

108 more sit on this domain. All of them.