HebrewCore by baba Hebrew

Hebrew translation that keeps prices, names and dates exact, RTL display, nikud, clinical Hebrew.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
85%
Naming quality
88%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~15,486Tokens (tool definitions)
~9.7 KBTypical response size
Significant attention impact (12.10% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "hebrewcore": {
      "url": "https://hc.itsbaba.com/mcp"
    }
  }
}

Remote endpoints

https://hc.itsbaba.com/mcpstreamable-http

What it can do

Tool inventory

Tools (16)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸกtranslate(text, source_lang, target_lang, transliterate, quality, ...)

Translate one text between Hebrew, English, Russian and the other languages from list_languages. Use it for product, support, interface, finance, legal and general clinical text. Returns the translation with its direction metadata. Protected translation: set `protect: true`, a `domain` (`general`, `clinical`, `finance`, `legal`) or any protection field, and prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and `protected_terms` are kept exactly as written, and every sentence is verified; a sentence that cannot be verified comes back in the source language (status `fallback`) instead of a wrong value. `finance` also protects IBANs, card and account numbers and checks credit/debit direction; `legal` keeps clause references, citations and defined terms and checks shall/may modality; `clinical` protects drugs, doses and lab values. Gender: `listener_gender` is the reader ("you"), `speaker_gender` the speaker ("I", e.g. an assistant). `glossary` maps source terms to required renderings; `redact_terms` keeps names exact and hidden from the model. `message_format: "icu"` translates an ICU MessageFormat string and rewrites plural branches for Hebrew and Russian. `quality`: `fast`, `balanced` (default) or `smartest`. Uses the monthly character quota. For many short strings use translate_batch; for full English clinical documents into Hebrew use clinical_translate.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "Text to translate, 1 to 20,000 characters. Counts toward the monthly character quota.",
      "examples": [
        "Welcome to your account"
      ]
    },
    "source_lang": {
      "type": "string",
      "description": "BCP 47 source language, or `auto` (default) to detect it.",
      "examples": [
        "auto"
      ]
    },
    "target_lang": {
      "type": "string",
      "description": "BCP 47 target language, e.g. `he`, `en`, `ru`. See GET /v1/languages.",
      "examples": [
        "he"
      ]
    },
    "transliterate": {
      "type": "boolean",
      "default": false,
      "description": "Include a Latin transliteration when the target is Hebrew.",
      "examples": [
        false
      ]
    },
    "quality": {
      "type": "string",
      "enum": [
        "fast",
        "balanced",
        "smartest"
      ],
      "default": "balanced",
      "description": "`fast`: lowest latency, for high volume and short strings. `balanced`: the default. `smartest`: maximum nuance for long or sensitive text.",
      "examples": [
        "balanced"
      ]
    },
    "gender": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "general"
      ],
      "description": "Grammatical gender for the reader where the target language marks it. For assistants, prefer `listener_gender` and `speaker_gender`.",
      "examples": [
        "general"
      ]
    },
    "message_format": {
      "type": "string",
      "enum": [
        "icu"
      ],
      "description": "`icu`: the text is an ICU MessageFormat message. The result is a valid ICU message in the target language: arguments ({name}, {count, number}, {d, date, short}) and `#` are kept, plural and selectordinal branches are rewritten for the target language's CLDR categories (Hebrew one, two, other; Russian one, few, many, other; English one, other; exact matches such as =0 kept), and select keys are kept. A plural or select inside a sentence is moved to the top so every branch is a whole sentence; `protection.segments` lists each branch sentence. Always protected; Hebrew, English and Russian. Invalid ICU returns 400 `invalid_message_format`; a message that cannot be verified comes back unchanged with `protection.status: \"fallback\"`.",
      "examples": [
        "icu"
      ]
    },
    "protect": {
      "type": "boolean",
      "description": "Keep prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and <keep>โ€ฆ</keep> text exactly as written, and verify every sentence. Implied by any protection field. Hebrew, English and Russian. Account terms switch it on automatically for these pairs.",
      "examples": [
        true
      ]
    },
    "domain": {
      "type": "string",
      "enum": [
        "general",
        "clinical",
        "finance",
        "legal"
      ],
      "description": "`general` (default) for product, commerce, support and interface text. `clinical` adds clinical register and drug, dose, lab and abbreviation detection. `finance` adds a formal banking register, protects IBANs, SWIFT/BIC codes, bank account numbers (including Israeli bank-branch-account), Israeli ID numbers and card numbers (check digits verified; these values are never shown to the model), invoice, policy and transaction references, signed amounts, rates and basis points, and checks that every money direction (credit/debit, deposit/withdrawal, buy/sell, increase/decrease, gain/loss, who owes whom) is kept. `legal` adds a formal legal register, protects clause and section references (Section 4.2, Clause 7(b), ืกืขื™ืฃ 12(ื), ยง 3) and case and statute citations, renders each defined term (\"the Company\") the same way throughout, and checks that modality (shall, may, shall not, is not required to) is kept. Any value implies `protect`.",
      "examples": [
        "finance"
      ]
    },
    "audience": {
      "type": "string",
      "enum": [
        "clinician",
        "patient"
      ],
      "description": "Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words.",
      "examples": [
        "patient"
      ]
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 500,
      "description": "Terms kept exactly as written: product names, brand names, SKUs. Up to 500, each up to 200 characters. Added to the account terms list for this request.",
      "examples": [
        [
          "Wireless Earbuds Pro",
          "A-10234"
        ]
      ]
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 200,
      "description": "Kept exactly and never shown to the model: customer names and other personal data. Up to 200.",
      "examples": [
        [
          "Dana Levi"
        ]
      ]
    },
    "glossary": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "Source term โ†’ required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.",
      "examples": [
        {
          "Checkout": "ืœืชืฉืœื•ื"
        }
      ]
    },
    "listener_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the reader (\"you\"): ืชืจืฆื™ / ืชืจืฆื”. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms.",
      "examples": [
        "female"
      ]
    },
    "speaker_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the speaker (\"I\"), for an assistant or brand voice: ืžืฆืืชื™, ั ะฝะฐัˆะปะฐ / ั ะฝะฐัˆั‘ะป.",
      "examples": [
        "female"
      ]
    },
    "patient_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Clinical domain: gender of a patient referred to in the third person.",
      "examples": [
        "male"
      ]
    },
    "date_order": {
      "type": "string",
      "enum": [
        "MDY",
        "DMY"
      ],
      "description": "How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian.",
      "examples": [
        "MDY"
      ]
    },
    "date_style": {
      "type": "string",
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "description": "`hebrew` (default) spells the month out in the target language (\"4 ื‘ืžืจืฅ 2026\", \"4 ะผะฐั€ั‚ะฐ 2026 ะณ.\"); `iso`; `keep` (unambiguous dates only).",
      "examples": [
        "hebrew"
      ]
    },
    "bidi": {
      "type": "string",
      "enum": [
        "isolate",
        "none"
      ],
      "description": "`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap.",
      "examples": [
        "none"
      ]
    }
  },
  "required": [
    "text",
    "target_lang"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Request identifier. Include it when you contact support.",
      "examples": [
        "txn_a1b2c3d4e5f6"
      ]
    },
    "source": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "type": "string",
              "enum": [
                "ltr",
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`.",
              "examples": [
                "rtl"
              ]
            },
            "mixed": {
              "type": "boolean",
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.",
              "examples": [
                true
              ]
            },
            "lang": {
              "type": "string",
              "description": "Dominant BCP 47 language, from the dominant script.",
              "examples": [
                "he"
              ]
            },
            "script": {
              "type": "string",
              "description": "Dominant ISO 15924 script.",
              "examples": [
                "Hebr"
              ]
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap."
            }
          },
          "description": "Directionality metadata for one string."
        },
        {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "The source text as sent.",
              "examples": [
                "Welcome to your account"
              ]
            }
          }
        }
      ],
      "description": "The source text with its directionality metadata."
    },
    "translation": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "type": "string",
              "enum": [
                "ltr",
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`.",
              "examples": [
                "rtl"
              ]
            },
            "mixed": {
              "type": "boolean",
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.",
              "examples": [
                true
              ]
            },
            "lang": {
              "type": "string",
              "description": "Dominant BCP 47 language, from the dominant script.",
              "examples": [
                "he"
              ]
            },
            "script": {
              "type": "string",
              "description": "Dominant ISO 15924 script.",
              "examples": [
                "Hebr"
              ]
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap."
            }
          },
          "description": "Directionality metadata for one string."
        },
        {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "The translation, or the source text for sentences that fell back.",
              "examples": [
                "ื‘ืจื•ื›ื™ื ื”ื‘ืื™ื ืœื—ืฉื‘ื•ืŸ ืฉืœืš"
              ]
            },
            "transliteration": {
              "type": [
                "string",
                "null"
              ],
              "description": "Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null.",
              "examples": [
                "Bruchim haba'im lakheshbon shelkha"
              ]
            },
            "protection": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "retried",
                    "fallback",
                    "passthrough"
                  ],
                  "description": "Worst sentence status. `ok`: verified first time. `retried`: a sentence was retried with a stronger model and then passed. `fallback`: at least one sentence could not be verified and is returned in the source language. `passthrough`: no model was needed.",
                  "examples": [
                    "ok"
                  ]
                },
                "source_lang": {
                  "type": "string",
                  "description": "Source language used for protection (detected when `source_lang` is `auto`).",
                  "examples": [
                    "en"
                  ]
                },
                "spans": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "What was protected: `term`, `glossary`, `number`, `ordinal`, `date`, `identifier`, `email`, `url`, `template` (interface variables), `keep`, `markup`, `code_inline`, `name` (redacted); in the clinical domain `drug`, `dose`, `abbreviation`, `code`; in the finance domain `account` (IBAN, BIC, bank account), `id_number`, `card` (all three redacted), `reference`; in the legal domain `clause`, `citation`, `defined_term` (its `render` is the rendering used throughout).",
                        "examples": [
                          "date"
                        ]
                      },
                      "value": {
                        "type": "string",
                        "description": "The protected source value. Omitted for redacted values.",
                        "examples": [
                          "04/03/2026"
                        ]
                      },
                      "render": {
                        "type": "string",
                        "description": "How the value was written in the translation, when it was rewritten (dates).",
                        "examples": [
                          "3 ื‘ืืคืจื™ืœ 2026"
                        ]
                      },
                      "ambiguous_date": {
                        "type": "boolean",
                        "description": "True when a numeric date could be read two ways and `date_order` decided it.",
                        "examples": [
                          true
                        ]
                      }
                    }
                  },
                  "description": "Every protected value, in source order."
                },
                "issues": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "description": "Check that failed, e.g. `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `gender_mismatch`, `meaning`, `placeholder_missing`; finance: `direction_swapped` (error), `direction_lost` (warning); legal: `modality_changed`, `defined_term_changed`.",
                        "examples": [
                          "term_missing"
                        ]
                      },
                      "severity": {
                        "type": "string",
                        "enum": [
                          "error",
                          "warning"
                        ],
                        "examples": [
                          "error"
                        ]
                      },
                      "detail": {
                        "type": "string",
                        "examples": [
                          "\"A-10234\" (term) is missing or altered."
                        ]
                      }
                    }
                  },
                  "description": "Problems found by the checks. Empty when every sentence passed."
                },
                "segments": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "source": {
                        "type": "string",
                        "examples": [
                          "Would you like me to schedule delivery for 04/03/2026?"
                        ]
                      },
                      "text": {
                        "type": "string",
                        "examples": [
                          "ื”ืื ืชืจืฆื™ ืฉืืงื‘ืข ืืช ื”ืžืฉืœื•ื— ืœึพ3 ื‘ืืคืจื™ืœ 2026?"
                        ]
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "ok",
                          "retried",
                          "fallback",
                          "passthrough"
                        ],
                        "examples": [
                          "ok"
                        ]
                      }
                    }
                  },
                  "description": "Per-sentence result, in order."
                }
              },
              "description": "Present when the request used protected translation."
            }
          }
        }
      ],
      "description": "The translation with its directionality metadata."
    },
    "quality": {
      "type": "string",
      "description": "Quality tier used.",
      "examples": [
        "balanced"
      ]
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "description": "Characters charged to the monthly quota for this request.",
          "examples": [
            23
          ]
        }
      },
      "description": "What this request consumed."
    }
  }
}
โšชtranslate_batch(items, target_lang, source_lang, transliterate, quality, ...)

Translate 1 to 50 strings (each up to 5,000 characters) into one target language in a single call; results come back in input order. Use it for the interface strings of a screen, a string file, or the fields of a product. Takes every option of translate: `protect`, `domain` (`general`, `clinical`, `finance`, `legal`), `protected_terms`, `glossary`, `listener_gender`, `speaker_gender`, `message_format: "icu"` and `quality`. With protection, interface variables such as {count}, {{name}} and %s, numbers, prices and dates stay exactly as written, and each item carries its own verification status. Uses the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 5000
      },
      "minItems": 1,
      "maxItems": 50,
      "description": "1 to 50 strings, each up to 5,000 characters. A protected batch carries at most 20,000 characters in total.",
      "examples": [
        [
          "{count} items in your cart",
          "Checkout",
          "Last updated %s ago"
        ]
      ]
    },
    "target_lang": {
      "type": "string",
      "description": "BCP 47 target language, applied to every item.",
      "examples": [
        "he"
      ]
    },
    "source_lang": {
      "type": "string",
      "description": "BCP 47 source language, or `auto` (default).",
      "examples": [
        "auto"
      ]
    },
    "transliterate": {
      "type": "boolean",
      "default": false,
      "description": "Include a Latin transliteration when the target is Hebrew.",
      "examples": [
        false
      ]
    },
    "quality": {
      "type": "string",
      "enum": [
        "fast",
        "balanced",
        "smartest"
      ],
      "default": "balanced",
      "description": "Quality tier, applied to every item.",
      "examples": [
        "balanced"
      ]
    },
    "gender": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "general"
      ],
      "description": "Grammatical gender for the reader where the target language marks it.",
      "examples": [
        "general"
      ]
    },
    "message_format": {
      "type": "string",
      "enum": [
        "icu"
      ],
      "description": "`icu`: every item is an ICU MessageFormat message. Each result is a valid ICU message in the target language: arguments ({name}, {count, number}, {d, date, short}) and `#` are kept, plural and selectordinal branches are rewritten for the target language's CLDR categories (Hebrew one, two, other; Russian one, few, many, other; English one, other; exact matches such as =0 kept), and select keys are kept. A plural or select inside a sentence is moved to the top so every branch is a whole sentence; `protection.segments` lists each branch sentence. Always protected; Hebrew, English and Russian. Invalid ICU returns 400 `invalid_message_format`; a message that cannot be verified comes back unchanged with `protection.status: \"fallback\"`.",
      "examples": [
        "icu"
      ]
    },
    "protect": {
      "type": "boolean",
      "description": "Keep prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and <keep>โ€ฆ</keep> text exactly as written, and verify every sentence. Implied by any protection field. Hebrew, English and Russian. Account terms switch it on automatically for these pairs.",
      "examples": [
        true
      ]
    },
    "domain": {
      "type": "string",
      "enum": [
        "general",
        "clinical",
        "finance",
        "legal"
      ],
      "description": "`general` (default) for product, commerce, support and interface text. `clinical` adds clinical register and drug, dose, lab and abbreviation detection. `finance` adds a formal banking register, protects IBANs, SWIFT/BIC codes, bank account numbers (including Israeli bank-branch-account), Israeli ID numbers and card numbers (check digits verified; these values are never shown to the model), invoice, policy and transaction references, signed amounts, rates and basis points, and checks that every money direction (credit/debit, deposit/withdrawal, buy/sell, increase/decrease, gain/loss, who owes whom) is kept. `legal` adds a formal legal register, protects clause and section references (Section 4.2, Clause 7(b), ืกืขื™ืฃ 12(ื), ยง 3) and case and statute citations, renders each defined term (\"the Company\") the same way throughout, and checks that modality (shall, may, shall not, is not required to) is kept. Any value implies `protect`.",
      "examples": [
        "finance"
      ]
    },
    "audience": {
      "type": "string",
      "enum": [
        "clinician",
        "patient"
      ],
      "description": "Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words.",
      "examples": [
        "patient"
      ]
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 500,
      "description": "Terms kept exactly as written: product names, brand names, SKUs. Up to 500, each up to 200 characters. Added to the account terms list for this request.",
      "examples": [
        [
          "Wireless Earbuds Pro",
          "A-10234"
        ]
      ]
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 200,
      "description": "Kept exactly and never shown to the model: customer names and other personal data. Up to 200.",
      "examples": [
        [
          "Dana Levi"
        ]
      ]
    },
    "glossary": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "Source term โ†’ required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.",
      "examples": [
        {
          "Checkout": "ืœืชืฉืœื•ื"
        }
      ]
    },
    "listener_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the reader (\"you\"): ืชืจืฆื™ / ืชืจืฆื”. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms.",
      "examples": [
        "female"
      ]
    },
    "speaker_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the speaker (\"I\"), for an assistant or brand voice: ืžืฆืืชื™, ั ะฝะฐัˆะปะฐ / ั ะฝะฐัˆั‘ะป.",
      "examples": [
        "female"
      ]
    },
    "patient_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Clinical domain: gender of a patient referred to in the third person.",
      "examples": [
        "male"
      ]
    },
    "date_order": {
      "type": "string",
      "enum": [
        "MDY",
        "DMY"
      ],
      "description": "How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian.",
      "examples": [
        "MDY"
      ]
    },
    "date_style": {
      "type": "string",
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "description": "`hebrew` (default) spells the month out in the target language (\"4 ื‘ืžืจืฅ 2026\", \"4 ะผะฐั€ั‚ะฐ 2026 ะณ.\"); `iso`; `keep` (unambiguous dates only).",
      "examples": [
        "hebrew"
      ]
    },
    "bidi": {
      "type": "string",
      "enum": [
        "isolate",
        "none"
      ],
      "description": "`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap.",
      "examples": [
        "none"
      ]
    }
  },
  "required": [
    "items",
    "target_lang"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "dir": {
                "type": "string",
                "enum": [
                  "ltr",
                  "rtl"
                ],
                "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`.",
                "examples": [
                  "rtl"
                ]
              },
              "mixed": {
                "type": "boolean",
                "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.",
                "examples": [
                  true
                ]
              },
              "lang": {
                "type": "string",
                "description": "Dominant BCP 47 language, from the dominant script.",
                "examples": [
                  "he"
                ]
              },
              "script": {
                "type": "string",
                "description": "Dominant ISO 15924 script.",
                "examples": [
                  "Hebr"
                ]
              },
              "runs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string",
                      "description": "The run text. Equals `input.slice(start, end)`.",
                      "examples": [
                        "ืฉืœื•ื "
                      ]
                    },
                    "dir": {
                      "type": "string",
                      "enum": [
                        "ltr",
                        "rtl"
                      ],
                      "description": "Resolved direction of the run.",
                      "examples": [
                        "rtl"
                      ]
                    },
                    "script": {
                      "type": "string",
                      "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                      "examples": [
                        "Hebr"
                      ]
                    },
                    "lang": {
                      "type": "string",
                      "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                      "examples": [
                        "he"
                      ]
                    },
                    "start": {
                      "type": "integer",
                      "description": "UTF-16 offset of the first character, inclusive.",
                      "examples": [
                        0
                      ]
                    },
                    "end": {
                      "type": "integer",
                      "description": "UTF-16 offset after the last character, exclusive.",
                      "examples": [
                        5
                      ]
                    }
                  },
                  "description": "A maximal stretch of text with one direction, in logical order."
                },
                "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
              },
              "display_runs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text": {
                      "type": "string",
                      "description": "The run text. Equals `input.slice(start, end)`.",
                      "examples": [
                        "ืฉืœื•ื "
                      ]
                    },
                    "dir": {
                      "type": "string",
                      "enum": [
                        "ltr",
                        "rtl"
                      ],
                      "description": "Resolved direction of the run.",
                      "examples": [
                        "rtl"
                      ]
                    },
                    "script": {
                      "type": "string",
                      "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                      "examples": [
                        "Hebr"
                      ]
                    },
                    "lang": {
                      "type": "string",
                      "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                      "examples": [
                        "he"
                      ]
                    },
                    "start": {
                      "type": "integer",
                      "description": "UTF-16 offset of the first character, inclusive.",
                      "examples": [
                        0
                      ]
                    },
                    "end": {
                      "type": "integer",
                      "description": "UTF-16 offset after the last character, exclusive.",
                      "examples": [
                        5
                      ]
                    }
                  },
                  "description": "A maximal stretch of text with one direction, in logical order."
                },
                "description": "Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap."
              }
            },
            "description": "Directionality metadata for one string."
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "description": "The translation, or the source text for sentences that fell back.",
                "examples": [
                  "ื‘ืจื•ื›ื™ื ื”ื‘ืื™ื ืœื—ืฉื‘ื•ืŸ ืฉืœืš"
                ]
              },
              "transliteration": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null.",
                "examples": [
                  "Bruchim haba'im lakheshbon shelkha"
                ]
              },
              "protection": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "retried",
                      "fallback",
                      "passthrough"
                    ],
                    "description": "Worst sentence status. `ok`: verified first time. `retried`: a sentence was retried with a stronger model and then passed. `fallback`: at least one sentence could not be verified and is returned in the source language. `passthrough`: no model was needed.",
                    "examples": [
                      "ok"
                    ]
                  },
                  "source_lang": {
                    "type": "string",
                    "description": "Source language used for protection (detected when `source_lang` is `auto`).",
                    "examples": [
                      "en"
                    ]
                  },
                  "spans": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "description": "What was protected: `term`, `glossary`, `number`, `ordinal`, `date`, `identifier`, `email`, `url`, `template` (interface variables), `keep`, `markup`, `code_inline`, `name` (redacted); in the clinical domain `drug`, `dose`, `abbreviation`, `code`; in the finance domain `account` (IBAN, BIC, bank account), `id_number`, `card` (all three redacted), `reference`; in the legal domain `clause`, `citation`, `defined_term` (its `render` is the rendering used throughout).",
                          "examples": [
                            "date"
                          ]
                        },
                        "value": {
                          "type": "string",
                          "description": "The protected source value. Omitted for redacted values.",
                          "examples": [
                            "04/03/2026"
                          ]
                        },
                        "render": {
                          "type": "string",
                          "description": "How the value was written in the translation, when it was rewritten (dates).",
                          "examples": [
                            "3 ื‘ืืคืจื™ืœ 2026"
                          ]
                        },
                        "ambiguous_date": {
                          "type": "boolean",
                          "description": "True when a numeric date could be read two ways and `date_order` decided it.",
                          "examples": [
                            true
                          ]
                        }
                      }
                    },
                    "description": "Every protected value, in source order."
                  },
                  "issues": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "Check that failed, e.g. `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `gender_mismatch`, `meaning`, `placeholder_missing`; finance: `direction_swapped` (error), `direction_lost` (warning); legal: `modality_changed`, `defined_term_changed`.",
                          "examples": [
                            "term_missing"
                          ]
                        },
                        "severity": {
                          "type": "string",
                          "enum": [
                            "error",
                            "warning"
                          ],
                          "examples": [
                            "error"
                          ]
                        },
                        "detail": {
                          "type": "string",
                          "examples": [
                            "\"A-10234\" (term) is missing or altered."
                          ]
                        }
                      }
                    },
                    "description": "Problems found by the checks. Empty when every sentence passed."
                  },
                  "segments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "source": {
                          "type": "string",
                          "examples": [
                            "Would you like me to schedule delivery for 04/03/2026?"
                          ]
                        },
                        "text": {
                          "type": "string",
                          "examples": [
                            "ื”ืื ืชืจืฆื™ ืฉืืงื‘ืข ืืช ื”ืžืฉืœื•ื— ืœึพ3 ื‘ืืคืจื™ืœ 2026?"
                          ]
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "retried",
                            "fallback",
                            "passthrough"
                          ],
                          "examples": [
                            "ok"
                          ]
                        }
                      }
                    },
                    "description": "Per-sentence result, in order."
                  }
                },
                "description": "Present when the request used protected translation."
              }
            }
          }
        ],
        "description": "The translation with its directionality metadata."
      },
      "description": "One translation per item, in input order."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "description": "Characters charged to the monthly quota for this request.",
          "examples": [
            23
          ]
        }
      },
      "description": "What this request consumed."
    }
  }
}
๐ŸŸขanalyze_direction(text, fields, base)

Resolve the right-to-left / left-to-right structure of mixed Hebrew text: base direction, whether it mixes directions, dominant language and script, and the runs to render, where every left-to-right unit (a Latin term, a price, a range such as 10โ€“20%, a date, a model number) stays whole. Send one `text`, or `fields` (a map of name โ†’ string, up to 100) to analyze a whole record at once. `base`: `auto` (default), `ltr` or `rtl`. Deterministic and free: no model, no character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "A single string, up to 20,000 characters. Send this or `fields`.",
      "examples": [
        "ืฉืœื•ื world"
      ]
    },
    "fields": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "maxLength": 20000
      },
      "description": "A map of field name โ†’ string, up to 100 fields and 20,000 characters in total. Send this or `text`.",
      "examples": [
        {
          "title": "ืžืกืžืš Q3 ready",
          "subtitle": "Read the summary"
        }
      ]
    },
    "base": {
      "type": "string",
      "enum": [
        "auto",
        "ltr",
        "rtl"
      ],
      "default": "auto",
      "description": "Paragraph direction to resolve against. `auto` (default) uses the first strong letter.",
      "examples": [
        "auto"
      ]
    }
  },
  "title": "AnalyzeRequest",
  "description": "Provide exactly one of `text` (a single string) or `fields` (a map of name โ†’ string). Max 20,000 chars per string; up to 100 fields."
}

Output Schema

{
  "type": "object",
  "properties": {
    "analysis": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "type": "string",
              "enum": [
                "ltr",
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`.",
              "examples": [
                "rtl"
              ]
            },
            "mixed": {
              "type": "boolean",
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.",
              "examples": [
                true
              ]
            },
            "lang": {
              "type": "string",
              "description": "Dominant BCP 47 language, from the dominant script.",
              "examples": [
                "he"
              ]
            },
            "script": {
              "type": "string",
              "description": "Dominant ISO 15924 script.",
              "examples": [
                "Hebr"
              ]
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "The run text. Equals `input.slice(start, end)`.",
                    "examples": [
                      "ืฉืœื•ื "
                    ]
                  },
                  "dir": {
                    "type": "string",
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "description": "Resolved direction of the run.",
                    "examples": [
                      "rtl"
                    ]
                  },
                  "script": {
                    "type": "string",
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                    "examples": [
                      "Hebr"
                    ]
                  },
                  "lang": {
                    "type": "string",
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                    "examples": [
                      "he"
                    ]
                  },
                  "start": {
                    "type": "integer",
                    "description": "UTF-16 offset of the first character, inclusive.",
                    "examples": [
                      0
                    ]
                  },
                  "end": {
                    "type": "integer",
                    "description": "UTF-16 offset after the last character, exclusive.",
                    "examples": [
                      5
                    ]
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap."
            }
          },
          "description": "Directionality metadata for one string."
        },
        {
          "description": "Present when the request sent `text`."
        }
      ]
    },
    "fields": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "dir": {
            "type": "string",
            "enum": [
              "ltr",
              "rtl"
            ],
            "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`.",
            "examples": [
              "rtl"
            ]
          },
          "mixed": {
            "type": "boolean",
            "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.",
            "examples": [
              true
            ]
          },
          "lang": {
            "type": "string",
            "description": "Dominant BCP 47 language, from the dominant script.",
            "examples": [
              "he"
            ]
          },
          "script": {
            "type": "string",
            "description": "Dominant ISO 15924 script.",
            "examples": [
              "Hebr"
            ]
          },
          "runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string",
                  "description": "The run text. Equals `input.slice(start, end)`.",
                  "examples": [
                    "ืฉืœื•ื "
                  ]
                },
                "dir": {
                  "type": "string",
                  "enum": [
                    "ltr",
                    "rtl"
                  ],
                  "description": "Resolved direction of the run.",
                  "examples": [
                    "rtl"
                  ]
                },
                "script": {
                  "type": "string",
                  "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                  "examples": [
                    "Hebr"
                  ]
                },
                "lang": {
                  "type": "string",
                  "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                  "examples": [
                    "he"
                  ]
                },
                "start": {
                  "type": "integer",
                  "description": "UTF-16 offset of the first character, inclusive.",
                  "examples": [
                    0
                  ]
                },
                "end": {
                  "type": "integer",
                  "description": "UTF-16 offset after the last character, exclusive.",
                  "examples": [
                    5
                  ]
                }
              },
              "description": "A maximal stretch of text with one direction, in logical order."
            },
            "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
          },
          "display_runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string",
                  "description": "The run text. Equals `input.slice(start, end)`.",
                  "examples": [
                    "ืฉืœื•ื "
                  ]
                },
                "dir": {
                  "type": "string",
                  "enum": [
                    "ltr",
                    "rtl"
                  ],
                  "description": "Resolved direction of the run.",
                  "examples": [
                    "rtl"
                  ]
                },
                "script": {
                  "type": "string",
                  "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
                  "examples": [
                    "Hebr"
                  ]
                },
                "lang": {
                  "type": "string",
                  "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
                  "examples": [
                    "he"
                  ]
                },
                "start": {
                  "type": "integer",
                  "description": "UTF-16 offset of the first character, inclusive.",
                  "examples": [
                    0
                  ]
                },
                "end": {
                  "type": "integer",
                  "description": "UTF-16 offset after the last character, exclusive.",
                  "examples": [
                    5
                  ]
                }
              },
              "description": "A maximal stretch of text with one direction, in logical order."
            },
            "description": "Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap."
          }
        },
        "description": "Directionality metadata for one string."
      },
      "description": "Present when the request sent `fields`: one analysis per field name."
    }
  }
}
๐ŸŸขdetect_language(text)

Detect the dominant language, script and direction of a string, with one segment per language. Built for short, code-switched input (chat messages, search queries, voice transcripts): a brand or acronym such as "PayPal" or "API" inside a Hebrew or Russian sentence does not change the dominant language. Use it to pick `source_lang` or the reply language before translating. Latin script is tagged `en`. Deterministic and free: no character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "Text to classify, up to 20,000 characters. Built for short, code-switched input.",
      "examples": [
        "ะœะพะถะฝะพ ะพะฟะปะฐั‚ะธั‚ัŒ ั‡ะตั€ะตะท PayPal ัะตะณะพะดะฝั?"
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "description": "Dominant language (BCP 47). Latin script is tagged `en`.",
      "examples": [
        "ru"
      ]
    },
    "script": {
      "type": "string",
      "description": "Dominant ISO 15924 script.",
      "examples": [
        "Cyrl"
      ]
    },
    "dir": {
      "type": "string",
      "enum": [
        "ltr",
        "rtl"
      ],
      "description": "Base direction of the dominant language.",
      "examples": [
        "ltr"
      ]
    },
    "confidence": {
      "type": "number",
      "description": "Share of letters in the dominant language, 0 to 1.",
      "examples": [
        0.941
      ]
    },
    "segments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "examples": [
              "PayPal "
            ]
          },
          "start": {
            "type": "integer",
            "examples": [
              21
            ]
          },
          "end": {
            "type": "integer",
            "examples": [
              28
            ]
          },
          "script": {
            "type": "string",
            "examples": [
              "Latn"
            ]
          },
          "lang": {
            "type": "string",
            "examples": [
              "en"
            ]
          }
        }
      },
      "description": "Same-script stretches in order, e.g. ru ยท en (\"CBC\") ยท ru. Latin script is tagged en."
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "examples": [
              "ru"
            ]
          },
          "share": {
            "type": "number",
            "description": "Share of letters, 0 to 1.",
            "examples": [
              0.941
            ]
          }
        }
      },
      "description": "Every language found, largest share first."
    }
  }
}
๐ŸŸขwrap_for_display(text, format, base)

Make one mixed Hebrew/English display line render correctly: every left-to-right unit (a Latin term, a price, a number with its unit, a range such as "10โ€“20%", a date, a comparison such as "<5") is kept whole and in order, so nothing is reversed or mirrored inside a Hebrew line. `format`: `html` (dir spans, for web and React), `isolate` (Unicode isolates, for iOS, Android 7+ and browsers) or `marks` (LRM/RLM, for any renderer including older Android). Pass `base: "rtl"` for a Hebrew line that starts with a Latin term. Deterministic and free: no character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "The display line, up to 20,000 characters.",
      "examples": [
        "ื”ื ื—ื”: 10โ€“20% ืขืœ Galaxy S25 ืขื“ 31/12"
      ]
    },
    "format": {
      "type": "string",
      "enum": [
        "html",
        "isolate",
        "marks"
      ],
      "default": "html",
      "description": "`html` for the web; `isolate` (Unicode isolates) for modern text engines; `marks` (LRM/RLM) for every renderer, including older Android.",
      "examples": [
        "html"
      ]
    },
    "base": {
      "type": "string",
      "enum": [
        "auto",
        "ltr",
        "rtl"
      ],
      "default": "auto",
      "description": "Paragraph direction of the display surface. Pass `rtl` for a Hebrew line even when it starts with a Latin term.",
      "examples": [
        "rtl"
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "dir": {
      "type": "string",
      "enum": [
        "ltr",
        "rtl"
      ],
      "description": "Paragraph direction used.",
      "examples": [
        "rtl"
      ]
    },
    "format": {
      "type": "string",
      "description": "Format used.",
      "examples": [
        "html"
      ]
    },
    "output": {
      "type": "string",
      "description": "Render-ready text: HTML with `dir` spans, or the text with Unicode isolates or direction marks inserted.",
      "examples": [
        "<span dir=\"rtl\">ื”ื ื—ื”: <span dir=\"ltr\" lang=\"und\">10โ€“20%</span> ืขืœ <span dir=\"ltr\" lang=\"en\">Galaxy S25</span> ืขื“ <span dir=\"ltr\" lang=\"und\">31/12</span></span>"
      ]
    },
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "The run text. Equals `input.slice(start, end)`.",
            "examples": [
              "ืฉืœื•ื "
            ]
          },
          "dir": {
            "type": "string",
            "enum": [
              "ltr",
              "rtl"
            ],
            "description": "Resolved direction of the run.",
            "examples": [
              "rtl"
            ]
          },
          "script": {
            "type": "string",
            "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.",
            "examples": [
              "Hebr"
            ]
          },
          "lang": {
            "type": "string",
            "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).",
            "examples": [
              "he"
            ]
          },
          "start": {
            "type": "integer",
            "description": "UTF-16 offset of the first character, inclusive.",
            "examples": [
              0
            ]
          },
          "end": {
            "type": "integer",
            "description": "UTF-16 offset after the last character, exclusive.",
            "examples": [
              5
            ]
          }
        },
        "description": "A maximal stretch of text with one direction, in logical order."
      },
      "description": "The display runs the output was built from."
    }
  }
}
๐ŸŸกtransliterate(text, direction)

Romanize Hebrew into Latin letters (`direction: "he-to-latin"`, the default), or write Latin spelling in Hebrew letters (`direction: "latin-to-he"`) for name entry and search. Up to 5,000 characters. Uses the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "Text to transliterate, up to 5,000 characters.",
      "examples": [
        "ืฉืœื•ื"
      ]
    },
    "direction": {
      "type": "string",
      "enum": [
        "he-to-latin",
        "latin-to-he"
      ],
      "default": "he-to-latin",
      "description": "`he-to-latin` (default) romanizes Hebrew. `latin-to-he` writes Latin spelling in Hebrew letters, for name entry and search.",
      "examples": [
        "he-to-latin"
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The input.",
      "examples": [
        "ืฉืœื•ื"
      ]
    },
    "transliteration": {
      "type": "string",
      "description": "The transliterated text.",
      "examples": [
        "shalom"
      ]
    },
    "scheme": {
      "type": "string",
      "description": "Romanization scheme used.",
      "examples": [
        "general"
      ]
    },
    "direction": {
      "type": "string",
      "description": "Direction used.",
      "examples": [
        "he-to-latin"
      ]
    }
  }
}
๐ŸŸกadd_nikud(text)

Add full nikud (vowel points) to Hebrew text, for learners, vocalized display and text-to-speech, where unvocalized Hebrew is ambiguous. English terms and numbers pass through unchanged. The result is verified: `verified: true` means removing the points gives back the input; when false, `nikud` is the input unchanged. Up to 10,000 characters. Uses the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "Hebrew text to vocalize, up to 10,000 characters. English terms and numbers pass through.",
      "examples": [
        "ืฉืœื•ื ืขื•ืœื"
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The input.",
      "examples": [
        "ืฉืœื•ื ืขื•ืœื"
      ]
    },
    "nikud": {
      "type": "string",
      "description": "The vocalized text, or the input unchanged when `verified` is false.",
      "examples": [
        "ืฉึธืืœื•ึนื ืขื•ึนืœึธื"
      ]
    },
    "verified": {
      "type": "boolean",
      "description": "True when removing the points gives back exactly the input. When false, `nikud` is the input unchanged: send it to speech unvocalized or retry.",
      "examples": [
        true
      ]
    }
  }
}
๐ŸŸขstrip_nikud(text)

Remove nikud, dagesh and cantillation marks from Hebrew text, keeping punctuation such as the maqaf. Use it to normalize text for search keys, comparison and de-duplication, or to get display text back from vocalized text. Deterministic and free: no character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "Hebrew text with nikud or cantillation, up to 20,000 characters.",
      "examples": [
        "ืฉึธืืœื•ึนื"
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The input.",
      "examples": [
        "ืฉึธืืœื•ึนื"
      ]
    },
    "stripped": {
      "type": "string",
      "description": "The text without nikud, dagesh or cantillation. Punctuation such as the maqaf is kept.",
      "examples": [
        "ืฉืœื•ื"
      ]
    }
  }
}
๐ŸŸขlist_languages

List every language HebrewCore translates to and from, with its code (use it as `source_lang` / `target_lang`), English and native name, and writing direction. Protected translation covers Hebrew, English and Russian. Free.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "languages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "BCP 47 code to pass as `source_lang` or `target_lang`.",
            "examples": [
              "he"
            ]
          },
          "name": {
            "type": "string",
            "description": "English name.",
            "examples": [
              "Hebrew"
            ]
          },
          "native": {
            "type": "string",
            "description": "Name in the language itself.",
            "examples": [
              "ืขื‘ืจื™ืช"
            ]
          },
          "dir": {
            "type": "string",
            "enum": [
              "ltr",
              "rtl"
            ],
            "description": "Writing direction.",
            "examples": [
              "rtl"
            ]
          }
        }
      },
      "description": "Every supported language."
    }
  }
}
๐ŸŸขlist_terms

List the account's protected terms: drug, product and brand names that every protected translation on the account keeps exactly as written (or renders with the term's per-language translation when one is set). Returns each term's id, which delete_term needs. Free.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "examples": [
              "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
            ]
          },
          "term": {
            "type": "string",
            "examples": [
              "Acamol"
            ],
            "description": "Kept exactly as written in every protected translation."
          },
          "translations": {
            "type": "object",
            "properties": {
              "he": {
                "type": "string"
              },
              "en": {
                "type": "string"
              },
              "ru": {
                "type": "string"
              }
            },
            "examples": [
              {
                "he": "ืืงืžื•ืœ"
              }
            ],
            "description": "Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim."
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "paracetamol 500 mg brand"
            ],
            "description": "Your own note, up to 500 characters."
          },
          "created_at": {
            "type": "string",
            "examples": [
              "2026-01-15T09:30:00.000Z"
            ],
            "description": "ISO 8601 timestamp."
          }
        }
      }
    },
    "limit": {
      "type": "integer"
    }
  }
}
๐Ÿ”ดadd_terms(terms)

Add protected terms to the account, or update existing ones (matched by exact term text). Every later protected translation on the account (translate, translate_batch and the clinical tools) keeps these terms exactly as written, or uses `translations.he` / `.en` / `.ru` for that target language when set. Sending a term that already exists replaces its translations and note. Up to 2,000 terms per account, each up to 200 characters. Changes apply to new requests within 30 seconds. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "term": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "examples": [
              "Optalgin"
            ]
          },
          "translations": {
            "type": "object",
            "properties": {
              "he": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "en": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "ru": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              }
            },
            "additionalProperties": false,
            "examples": [
              {
                "he": "ืื•ืคื˜ืœื’ื™ืŸ",
                "ru": "ะžะฟั‚ะฐะปัŒะณะธะฝ"
              }
            ]
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 500
          }
        },
        "required": [
          "term"
        ]
      },
      "minItems": 1,
      "maxItems": 2000
    }
  },
  "required": [
    "terms"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "examples": [
              "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
            ]
          },
          "term": {
            "type": "string",
            "examples": [
              "Acamol"
            ],
            "description": "Kept exactly as written in every protected translation."
          },
          "translations": {
            "type": "object",
            "properties": {
              "he": {
                "type": "string"
              },
              "en": {
                "type": "string"
              },
              "ru": {
                "type": "string"
              }
            },
            "examples": [
              {
                "he": "ืืงืžื•ืœ"
              }
            ],
            "description": "Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim."
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "paracetamol 500 mg brand"
            ],
            "description": "Your own note, up to 500 characters."
          },
          "created_at": {
            "type": "string",
            "examples": [
              "2026-01-15T09:30:00.000Z"
            ],
            "description": "ISO 8601 timestamp."
          }
        }
      }
    },
    "count": {
      "type": "integer"
    }
  }
}
๐Ÿ”ดdelete_term(id)

Permanently delete one account term by its id (from list_terms or add_terms). Protected translations stop using it within 30 seconds. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The term id, from list_terms or add_terms.",
      "examples": [
        "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
      ]
    }
  },
  "required": [
    "id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "boolean"
    }
  }
}
โšชclinical_translate(audience, reader_gender, patient_gender, protected_terms, redact_terms, ...)

Translate a complete English clinical text (a discharge summary, patient instructions, a visit note, a model's answer) into Israeli medical Hebrew for a clinician or a patient. Drug names, doses, lab values, units, ICD-10 codes, clinical abbreviations, identifiers and every number are kept exactly; every sentence is checked for numbers, negation and laterality and reviewed for meaning. A sentence that fails is retried, then returned in English with status `fallback`: unverified Hebrew is never returned. Treat fallback sentences as untranslated. `audience`: `clinician` (default, keeps BID/PO shorthand) or `patient` (plain words). Pass the patient's medication and problem lists as `protected_terms`, names as `redact_terms` (hidden from the model), `reader_gender` and `patient_gender` when known, and `date_order` (US records are MDY). Counts 3ร— toward the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "audience": {
      "type": "string",
      "enum": [
        "clinician",
        "patient"
      ],
      "default": "clinician",
      "description": "Who reads the Hebrew. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes dosing shorthand (BID, PRN) as plain words.",
      "examples": [
        "patient"
      ]
    },
    "reader_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the reader, the person the text calls \"you\". Omit when unknown.",
      "examples": [
        "female"
      ]
    },
    "patient_gender": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Gender of the patient in third-person references. Inferred from he/she when omitted.",
      "examples": [
        "male"
      ]
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 500,
      "description": "Kept verbatim. Pass the patient's medication and problem lists from the record. Up to 500, each up to 200 characters. Added to the account terms list for this request.",
      "examples": [
        [
          "Eliquis 5 mg BID",
          "atrial fibrillation"
        ]
      ]
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 200,
      "description": "Kept verbatim and never shown to the model (patient and staff names). Up to 200.",
      "examples": [
        [
          "Dana Levi"
        ]
      ]
    },
    "glossary": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "English term โ†’ required Hebrew rendering. Up to 500 entries.",
      "examples": [
        {
          "hypertension": "ื™ืชืจ ืœื—ืฅ ื“ื"
        }
      ]
    },
    "date_order": {
      "type": "string",
      "enum": [
        "MDY",
        "DMY"
      ],
      "default": "MDY",
      "description": "How to read ambiguous numeric dates in the source. US records are MDY.",
      "examples": [
        "MDY"
      ]
    },
    "date_style": {
      "type": "string",
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "default": "hebrew",
      "description": "`hebrew` writes \"4 ื‘ืžืจืฅ 2026\"; `iso` writes 2026-03-04; `keep` leaves unambiguous dates as written (an ambiguous one is still rewritten). A two-digit year is kept as written.",
      "examples": [
        "hebrew"
      ]
    },
    "bidi": {
      "type": "string",
      "enum": [
        "isolate",
        "none"
      ],
      "default": "isolate",
      "description": "`isolate` wraps English values in Unicode isolates so \"5 mg\" never renders as \"mg 5\". `none` returns plain text.",
      "examples": [
        "isolate"
      ]
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "English text, 1 to 20,000 characters. Markdown lists, headings and tables keep their structure. Counts toward the monthly character quota.",
      "examples": [
        "Based on your records, you are taking Eliquis 5 mg twice a day. Your dose was changed on 03/04/2026."
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Request identifier.",
      "examples": [
        "med_a1b2c3d4e5f6"
      ]
    },
    "text": {
      "type": "string",
      "description": "The whole Hebrew document: every segment joined with its prefix and suffix.",
      "examples": [
        "ืืช ื ื•ื˜ืœืช Eliquis 5 mg ืคืขืžื™ื™ื ื‘ื™ื•ื. ื”ืžื™ื ื•ืŸ ืฉืœืš ืฉื•ื ื” ื‘ึพ4 ื‘ืžืจืฅ 2026."
      ]
    },
    "segments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Position of the sentence, from 0.",
            "examples": [
              0
            ]
          },
          "prefix": {
            "type": "string",
            "description": "Markdown structure emitted before the text (list marker, heading).",
            "examples": [
              "- "
            ]
          },
          "suffix": {
            "type": "string",
            "description": "Whitespace or structure after the text. Join `prefix + text + suffix` for every segment to rebuild the document.",
            "examples": [
              "\n"
            ]
          },
          "source": {
            "type": "string",
            "description": "The English sentence.",
            "examples": [
              "You are taking Eliquis 5 mg twice a day."
            ]
          },
          "text": {
            "type": "string",
            "description": "Verified Hebrew, or the English source when status is `fallback`.",
            "examples": [
              "ืืช ื ื•ื˜ืœืช Eliquis 5 mg ืคืขืžื™ื™ื ื‘ื™ื•ื."
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "retried",
              "fallback",
              "passthrough"
            ],
            "description": "`ok`: verified first time. `retried`: passed after one retry with a stronger model. `fallback`: no translation passed, `text` is the English. `passthrough`: structure or values only, no model needed.",
            "examples": [
              "ok"
            ]
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "Check that failed: `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `laterality_swapped`, `gender_mismatch`, `meaning`, `placeholder_missing`, `length_ratio`, `provider_error` and others.",
                  "examples": [
                    "negation_lost"
                  ]
                },
                "severity": {
                  "type": "string",
                  "enum": [
                    "error",
                    "warning"
                  ],
                  "description": "`error` blocks the sentence; `warning` is informational.",
                  "examples": [
                    "error"
                  ]
                },
                "detail": {
                  "type": "string",
                  "description": "Human-readable explanation.",
                  "examples": [
                    "The source says \"no known allergies\"; the translation drops the negation."
                  ]
                }
              }
            },
            "description": "Why a sentence was retried or fell back. Empty for `ok`."
          },
          "spans": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "What was protected: `drug`, `dose`, `abbreviation`, `code`, `number`, `date`, `term`, `glossary`, `identifier`, `name` and others.",
                  "examples": [
                    "dose"
                  ]
                },
                "value": {
                  "type": "string",
                  "description": "The protected source value. Omitted for names and identifiers.",
                  "examples": [
                    "5 mg"
                  ]
                },
                "render": {
                  "type": "string",
                  "description": "How the value was written in the Hebrew, when it was rewritten (dates).",
                  "examples": [
                    "4 ื‘ืžืจืฅ 2026"
                  ]
                },
                "ambiguous_date": {
                  "type": "boolean",
                  "description": "True when a numeric date could be read two ways and `date_order` decided it.",
                  "examples": [
                    true
                  ]
                }
              }
            },
            "description": "Protected values in this sentence. Redacted names and identifiers are left out."
          }
        }
      },
      "description": "One entry per sentence, in order."
    },
    "stats": {
      "type": "object",
      "properties": {
        "segments": {
          "type": "integer",
          "description": "Total sentences.",
          "examples": [
            2
          ]
        },
        "ok": {
          "type": "integer",
          "examples": [
            2
          ]
        },
        "retried": {
          "type": "integer",
          "examples": [
            0
          ]
        },
        "fallback": {
          "type": "integer",
          "description": "Sentences returned in English. Treat them as untranslated.",
          "examples": [
            0
          ]
        },
        "passthrough": {
          "type": "integer",
          "examples": [
            0
          ]
        }
      }
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "description": "Characters charged.",
          "examples": [
            77
          ]
        }
      }
    }
  }
}
๐ŸŸขclinical_query(text, known_terms, glossary)

Turn a Hebrew clinical question (up to 2,000 characters) into an English query for a record search or an English model. English terms, numbers and dates are kept exactly, and Hebrew spellings of drug names are mapped back to English, preferring the patient's own terms in `known_terms` and the account terms. Counts 3ร— toward the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "The Hebrew question, up to 2,000 characters.",
      "examples": [
        "ื”ืื ื”ืžื˜ื•ืคืœืช ืขื“ื™ื™ืŸ ืœื•ืงื—ืช ืžื˜ืคื•ืจืžื™ืŸ?"
      ]
    },
    "known_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 500,
      "description": "English terms from the patient's record, used to map Hebrew spellings back. Up to 500. Account terms are added automatically.",
      "examples": [
        [
          "metformin",
          "lisinopril"
        ]
      ]
    },
    "glossary": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "English term โ†’ Hebrew rendering, used to map the Hebrew back to English.",
      "examples": [
        {
          "metformin": "ืžื˜ืคื•ืจืžื™ืŸ"
        }
      ]
    }
  },
  "required": [
    "text"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "English query for your record search.",
      "examples": [
        "Is the patient still taking metformin?"
      ]
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "hebrew": {
            "type": "string",
            "examples": [
              "ืžื˜ืคื•ืจืžื™ืŸ"
            ]
          },
          "english": {
            "type": "string",
            "examples": [
              "metformin"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "known_terms",
              "lexicon",
              "glossary"
            ],
            "description": "Where the mapping came from.",
            "examples": [
              "known_terms"
            ]
          }
        }
      },
      "description": "Hebrew spellings that were mapped back to English terms."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            33
          ]
        }
      }
    }
  }
}
๐ŸŸขclinical_verify(source, translation, protected_terms, redact_terms, glossary, ...)

Check Hebrew that was produced some other way (for example by your own model) against its English clinical source: every drug, dose, lab value, code and number must appear exactly, no number may be added, dates must be unambiguous, and negation and laterality must survive. `verification: "strict"` adds an independent model review for meaning changes; `standard` (default) is deterministic. Returns pass or fail with every issue. Counts 3ร— toward the monthly character quota.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "The English source, up to 20,000 characters.",
      "examples": [
        "Metformin 500 mg BID since 03/04/2026."
      ]
    },
    "translation": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40000,
      "description": "The Hebrew to check, up to 40,000 characters.",
      "examples": [
        "Metformin 50 mg BID ืžืื– 03/04/2026."
      ]
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 500,
      "description": "Terms that must appear verbatim. Up to 500.",
      "examples": [
        [
          "Metformin"
        ]
      ]
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 200,
      "description": "Names replaced before the reviewer sees the text. Up to 200.",
      "examples": [
        [
          "Dana Levi"
        ]
      ]
    },
    "glossary": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "English term โ†’ required Hebrew rendering.",
      "examples": [
        {
          "hypertension": "ื™ืชืจ ืœื—ืฅ ื“ื"
        }
      ]
    },
    "date_order": {
      "type": "string",
      "enum": [
        "MDY",
        "DMY"
      ],
      "default": "MDY",
      "description": "How to read ambiguous numeric dates in the source.",
      "examples": [
        "MDY"
      ]
    },
    "verification": {
      "type": "string",
      "enum": [
        "strict",
        "standard"
      ],
      "default": "standard",
      "description": "`standard` (default) runs the deterministic checks. `strict` adds an independent model review for meaning changes.",
      "examples": [
        "standard"
      ]
    }
  },
  "required": [
    "source",
    "translation"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "pass": {
      "type": "boolean",
      "description": "True when no issue has severity `error`.",
      "examples": [
        false
      ]
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Check that failed: `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `laterality_swapped`, `gender_mismatch`, `meaning`, `placeholder_missing`, `length_ratio`, `provider_error` and others.",
            "examples": [
              "negation_lost"
            ]
          },
          "severity": {
            "type": "string",
            "enum": [
              "error",
              "warning"
            ],
            "description": "`error` blocks the sentence; `warning` is informational.",
            "examples": [
              "error"
            ]
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation.",
            "examples": [
              "The source says \"no known allergies\"; the translation drops the negation."
            ]
          }
        }
      },
      "description": "Every problem found."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "description": "Characters charged: source plus translation.",
          "examples": [
            72
          ]
        }
      }
    }
  }
}
๐ŸŸขhealth

Check that the HebrewCore API is up and its database reachable. Needs no API key and uses no quota.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "`ok` when the API is serving.",
      "examples": [
        "ok"
      ]
    },
    "db": {
      "type": "string",
      "description": "`ok`, or `error` when the database check failed.",
      "examples": [
        "ok"
      ]
    },
    "version": {
      "type": "string",
      "description": "API version.",
      "examples": [
        "1.0.0"
      ]
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools