Koskamo

HebrewCore MCP

An official MCP server operated by baba Hebrew that exposes the HebrewCore API capabilities to AI agents. It enables translation between Hebrew, English, Russian and more, with protected values for prices and names, ICU plural handling, nikud addition, transliteration, and clinical domain support. Agents can use it for localization, language detection, and text analysis tasks.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

HebrewCore MCP logo, by baba HebrewVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by baba Hebrew
You need:Create a key, send it as a bearer token, and make a first call with curl, Node or Pythonsigning in creates an account, and a new account adds a card before it can create keys or use the API
MCP endpoint (Streamable HTTP)
https://hc.itsbaba.com/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 12 of 13 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to itsbaba.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Translate text with protected values like prices and names
  • Add nikud to Hebrew text for vocalized display
  • Localize UI strings using ICU plural formats
  • Detect language and directionality of input

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
hebrewcore 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
16 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

HebrewCore by baba Hebrew is a Hebrew language API (https://hc.itsbaba.com). Use these tools whenever text goes into or out of Hebrew, or when Hebrew must display correctly next to English. Which tool: - translate: one text between Hebrew, English, Russian and the other languages from list_languages. translate_batch: up to 50 strings at once (interface strings, string files, product fields). - clinical_translate: a full English clinical document into verified Hebrew. clinical_query: a Hebrew clinical question into an English record query. clinical_verify: check Hebrew someone else produced against its English source. The clinical tools need a key with Clinical access. - detect_language: which language a user wrote in. analyze_direction and wrap_for_display: right-to-left layout of mixed Hebrew/English lines. transliterate, add_nikud, strip_nikud: Hebrew script work. - list_terms, add_terms, delete_term: the account's protected names (drug, product, brand), kept exactly in every protected translation. Protect exact values. When the text carries money, amounts, account or card numbers, dates, doses, lab values, codes, identifiers, product names or interface variables, call translate with protect: true or a domain (finance, legal, clinical, general): these values then come back exactly as written and every sentence is verified. Never rewrite, round, convert or "fix" a protected value in your own answer; copy the tool output as returned. A sentence with status "fallback" could not be verified and is left in the source language: say so rather than translating it yourself. For clinical content prefer clinical_translate, and pass the patient's medications as protected_terms and names as redact_terms. Hebrew marks gender: set listener_gender for the reader ("you") and speaker_gender for the speaker ("I") when known. Quality: fast, balanced (default) or smartest. Tools that call a model use the account's monthly character quota and every call counts toward its per-minute rate limit. Errors such as quota_exceeded, rate_limited or payment_required come back as tool errors; do not retry a quota error.

Tools

16 advertised

translate — Translate text
Advertised by the server during the last successful anonymous check.

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.

translate input schema
{
  "type": "object",
  "required": [
    "text",
    "target_lang"
  ],
  "properties": {
    "bidi": {
      "enum": [
        "isolate",
        "none"
      ],
      "type": "string",
      "examples": [
        "none"
      ],
      "description": "`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap."
    },
    "text": {
      "type": "string",
      "examples": [
        "Welcome to your account"
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "Text to translate, 1 to 20,000 characters. Counts toward the monthly character quota."
    },
    "domain": {
      "enum": [
        "general",
        "clinical",
        "finance",
        "legal"
      ],
      "type": "string",
      "examples": [
        "finance"
      ],
      "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`."
    },
    "gender": {
      "enum": [
        "male",
        "female",
        "general"
      ],
      "type": "string",
      "examples": [
        "general"
      ],
      "description": "Grammatical gender for the reader where the target language marks it. For assistants, prefer `listener_gender` and `speaker_gender`."
    },
    "protect": {
      "type": "boolean",
      "examples": [
        true
      ],
      "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."
    },
    "quality": {
      "enum": [
        "fast",
        "balanced",
        "smartest"
      ],
      "type": "string",
      "default": "balanced",
      "examples": [
        "balanced"
      ],
      "description": "`fast`: lowest latency, for high volume and short strings. `balanced`: the default. `smartest`: maximum nuance for long or sensitive text."
    },
    "audience": {
      "enum": [
        "clinician",
        "patient"
      ],
      "type": "string",
      "examples": [
        "patient"
      ],
      "description": "Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words."
    },
    "glossary": {
      "type": "object",
      "examples": [
        {
          "Checkout": "לתשלום"
        }
      ],
      "description": "Source term → required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      }
    },
    "date_order": {
      "enum": [
        "MDY",
        "DMY"
      ],
      "type": "string",
      "examples": [
        "MDY"
      ],
      "description": "How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian."
    },
    "date_style": {
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "type": "string",
      "examples": [
        "hebrew"
      ],
      "description": "`hebrew` (default) spells the month out in the target language (\"4 במרץ 2026\", \"4 марта 2026 г.\"); `iso`; `keep` (unambiguous dates only)."
    },
    "source_lang": {
      "type": "string",
      "examples": [
        "auto"
      ],
      "description": "BCP 47 source language, or `auto` (default) to detect it."
    },
    "target_lang": {
      "type": "string",
      "examples": [
        "he"
      ],
      "description": "BCP 47 target language, e.g. `he`, `en`, `ru`. See GET /v1/languages."
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Dana Levi"
        ]
      ],
      "maxItems": 200,
      "description": "Kept exactly and never shown to the model: customer names and other personal data. Up to 200."
    },
    "transliterate": {
      "type": "boolean",
      "default": false,
      "examples": [
        false
      ],
      "description": "Include a Latin transliteration when the target is Hebrew."
    },
    "message_format": {
      "enum": [
        "icu"
      ],
      "type": "string",
      "examples": [
        "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\"`."
    },
    "patient_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "male"
      ],
      "description": "Clinical domain: gender of a patient referred to in the third person."
    },
    "speaker_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "female"
      ],
      "description": "Gender of the speaker (\"I\"), for an assistant or brand voice: מצאתי, я нашла / я нашёл."
    },
    "listener_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "female"
      ],
      "description": "Gender of the reader (\"you\"): תרצי / תרצה. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms."
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Wireless Earbuds Pro",
          "A-10234"
        ]
      ],
      "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."
    }
  }
}
translate output schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "examples": [
        "txn_a1b2c3d4e5f6"
      ],
      "description": "Request identifier. Include it when you contact support."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            23
          ],
          "description": "Characters charged to the monthly quota for this request."
        }
      },
      "description": "What this request consumed."
    },
    "source": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "enum": [
                "ltr",
                "rtl"
              ],
              "type": "string",
              "examples": [
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`."
            },
            "lang": {
              "type": "string",
              "examples": [
                "he"
              ],
              "description": "Dominant BCP 47 language, from the dominant script."
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "mixed": {
              "type": "boolean",
              "examples": [
                true
              ],
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count."
            },
            "script": {
              "type": "string",
              "examples": [
                "Hebr"
              ],
              "description": "Dominant ISO 15924 script."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "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",
              "examples": [
                "Welcome to your account"
              ],
              "description": "The source text as sent."
            }
          }
        }
      ],
      "description": "The source text with its directionality metadata."
    },
    "quality": {
      "type": "string",
      "examples": [
        "balanced"
      ],
      "description": "Quality tier used."
    },
    "translation": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "enum": [
                "ltr",
                "rtl"
              ],
              "type": "string",
              "examples": [
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`."
            },
            "lang": {
              "type": "string",
              "examples": [
                "he"
              ],
              "description": "Dominant BCP 47 language, from the dominant script."
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "mixed": {
              "type": "boolean",
              "examples": [
                true
              ],
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count."
            },
            "script": {
              "type": "string",
              "examples": [
                "Hebr"
              ],
              "description": "Dominant ISO 15924 script."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "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",
              "examples": [
                "ברוכים הבאים לחשבון שלך"
              ],
              "description": "The translation, or the source text for sentences that fell back."
            },
            "protection": {
              "type": "object",
              "properties": {
                "spans": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "examples": [
                          "date"
                        ],
                        "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)."
                      },
                      "value": {
                        "type": "string",
                        "examples": [
                          "04/03/2026"
                        ],
                        "description": "The protected source value. Omitted for redacted values."
                      },
                      "render": {
                        "type": "string",
                        "examples": [
                          "3 באפריל 2026"
                        ],
                        "description": "How the value was written in the translation, when it was rewritten (dates)."
                      },
                      "ambiguous_date": {
                        "type": "boolean",
                        "examples": [
                          true
                        ],
                        "description": "True when a numeric date could be read two ways and `date_order` decided it."
                      }
                    }
                  },
                  "description": "Every protected value, in source order."
                },
                "issues": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string",
                        "examples": [
                          "term_missing"
                        ],
                        "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`."
                      },
                      "detail": {
                        "type": "string",
                        "examples": [
                          "\"A-10234\" (term) is missing or altered."
                        ]
                      },
                      "severity": {
                        "enum": [
                          "error",
                          "warning"
                        ],
                        "type": "string",
                        "examples": [
                          "error"
                        ]
                      }
                    }
                  },
                  "description": "Problems found by the checks. Empty when every sentence passed."
                },
                "status": {
                  "enum": [
                    "ok",
                    "retried",
                    "fallback",
                    "passthrough"
                  ],
                  "type": "string",
                  "examples": [
                    "ok"
                  ],
                  "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."
                },
                "segments": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "examples": [
                          "האם תרצי שאקבע את המשלוח ל־3 באפריל 2026?"
                        ]
                      },
                      "source": {
                        "type": "string",
                        "examples": [
                          "Would you like me to schedule delivery for 04/03/2026?"
                        ]
                      },
                      "status": {
                        "enum": [
                          "ok",
                          "retried",
                          "fallback",
                          "passthrough"
                        ],
                        "type": "string",
                        "examples": [
                          "ok"
                        ]
                      }
                    }
                  },
                  "description": "Per-sentence result, in order."
                },
                "source_lang": {
                  "type": "string",
                  "examples": [
                    "en"
                  ],
                  "description": "Source language used for protection (detected when `source_lang` is `auto`)."
                }
              },
              "description": "Present when the request used protected translation."
            },
            "transliteration": {
              "type": [
                "string",
                "null"
              ],
              "examples": [
                "Bruchim haba'im lakheshbon shelkha"
              ],
              "description": "Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null."
            }
          }
        }
      ],
      "description": "The translation with its directionality metadata."
    }
  }
}
translate annotations
{
  "title": "Translate text",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
translate_batch — Translate a batch of strings
Advertised by the server during the last successful anonymous check.

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.

translate_batch input schema
{
  "type": "object",
  "required": [
    "items",
    "target_lang"
  ],
  "properties": {
    "bidi": {
      "enum": [
        "isolate",
        "none"
      ],
      "type": "string",
      "examples": [
        "none"
      ],
      "description": "`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5000,
        "minLength": 1
      },
      "examples": [
        [
          "{count} items in your cart",
          "Checkout",
          "Last updated %s ago"
        ]
      ],
      "maxItems": 50,
      "minItems": 1,
      "description": "1 to 50 strings, each up to 5,000 characters. A protected batch carries at most 20,000 characters in total."
    },
    "domain": {
      "enum": [
        "general",
        "clinical",
        "finance",
        "legal"
      ],
      "type": "string",
      "examples": [
        "finance"
      ],
      "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`."
    },
    "gender": {
      "enum": [
        "male",
        "female",
        "general"
      ],
      "type": "string",
      "examples": [
        "general"
      ],
      "description": "Grammatical gender for the reader where the target language marks it."
    },
    "protect": {
      "type": "boolean",
      "examples": [
        true
      ],
      "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."
    },
    "quality": {
      "enum": [
        "fast",
        "balanced",
        "smartest"
      ],
      "type": "string",
      "default": "balanced",
      "examples": [
        "balanced"
      ],
      "description": "Quality tier, applied to every item."
    },
    "audience": {
      "enum": [
        "clinician",
        "patient"
      ],
      "type": "string",
      "examples": [
        "patient"
      ],
      "description": "Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words."
    },
    "glossary": {
      "type": "object",
      "examples": [
        {
          "Checkout": "לתשלום"
        }
      ],
      "description": "Source term → required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      }
    },
    "date_order": {
      "enum": [
        "MDY",
        "DMY"
      ],
      "type": "string",
      "examples": [
        "MDY"
      ],
      "description": "How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian."
    },
    "date_style": {
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "type": "string",
      "examples": [
        "hebrew"
      ],
      "description": "`hebrew` (default) spells the month out in the target language (\"4 במרץ 2026\", \"4 марта 2026 г.\"); `iso`; `keep` (unambiguous dates only)."
    },
    "source_lang": {
      "type": "string",
      "examples": [
        "auto"
      ],
      "description": "BCP 47 source language, or `auto` (default)."
    },
    "target_lang": {
      "type": "string",
      "examples": [
        "he"
      ],
      "description": "BCP 47 target language, applied to every item."
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Dana Levi"
        ]
      ],
      "maxItems": 200,
      "description": "Kept exactly and never shown to the model: customer names and other personal data. Up to 200."
    },
    "transliterate": {
      "type": "boolean",
      "default": false,
      "examples": [
        false
      ],
      "description": "Include a Latin transliteration when the target is Hebrew."
    },
    "message_format": {
      "enum": [
        "icu"
      ],
      "type": "string",
      "examples": [
        "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\"`."
    },
    "patient_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "male"
      ],
      "description": "Clinical domain: gender of a patient referred to in the third person."
    },
    "speaker_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "female"
      ],
      "description": "Gender of the speaker (\"I\"), for an assistant or brand voice: מצאתי, я нашла / я нашёл."
    },
    "listener_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "female"
      ],
      "description": "Gender of the reader (\"you\"): תרצי / תרצה. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms."
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Wireless Earbuds Pro",
          "A-10234"
        ]
      ],
      "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."
    }
  }
}
translate_batch output schema
{
  "type": "object",
  "properties": {
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            23
          ],
          "description": "Characters charged to the monthly quota for this request."
        }
      },
      "description": "What this request consumed."
    },
    "results": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "dir": {
                "enum": [
                  "ltr",
                  "rtl"
                ],
                "type": "string",
                "examples": [
                  "rtl"
                ],
                "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`."
              },
              "lang": {
                "type": "string",
                "examples": [
                  "he"
                ],
                "description": "Dominant BCP 47 language, from the dominant script."
              },
              "runs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "dir": {
                      "enum": [
                        "ltr",
                        "rtl"
                      ],
                      "type": "string",
                      "examples": [
                        "rtl"
                      ],
                      "description": "Resolved direction of the run."
                    },
                    "end": {
                      "type": "integer",
                      "examples": [
                        5
                      ],
                      "description": "UTF-16 offset after the last character, exclusive."
                    },
                    "lang": {
                      "type": "string",
                      "examples": [
                        "he"
                      ],
                      "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                    },
                    "text": {
                      "type": "string",
                      "examples": [
                        "שלום "
                      ],
                      "description": "The run text. Equals `input.slice(start, end)`."
                    },
                    "start": {
                      "type": "integer",
                      "examples": [
                        0
                      ],
                      "description": "UTF-16 offset of the first character, inclusive."
                    },
                    "script": {
                      "type": "string",
                      "examples": [
                        "Hebr"
                      ],
                      "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                    }
                  },
                  "description": "A maximal stretch of text with one direction, in logical order."
                },
                "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
              },
              "mixed": {
                "type": "boolean",
                "examples": [
                  true
                ],
                "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count."
              },
              "script": {
                "type": "string",
                "examples": [
                  "Hebr"
                ],
                "description": "Dominant ISO 15924 script."
              },
              "display_runs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "dir": {
                      "enum": [
                        "ltr",
                        "rtl"
                      ],
                      "type": "string",
                      "examples": [
                        "rtl"
                      ],
                      "description": "Resolved direction of the run."
                    },
                    "end": {
                      "type": "integer",
                      "examples": [
                        5
                      ],
                      "description": "UTF-16 offset after the last character, exclusive."
                    },
                    "lang": {
                      "type": "string",
                      "examples": [
                        "he"
                      ],
                      "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                    },
                    "text": {
                      "type": "string",
                      "examples": [
                        "שלום "
                      ],
                      "description": "The run text. Equals `input.slice(start, end)`."
                    },
                    "start": {
                      "type": "integer",
                      "examples": [
                        0
                      ],
                      "description": "UTF-16 offset of the first character, inclusive."
                    },
                    "script": {
                      "type": "string",
                      "examples": [
                        "Hebr"
                      ],
                      "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                    }
                  },
                  "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",
                "examples": [
                  "ברוכים הבאים לחשבון שלך"
                ],
                "description": "The translation, or the source text for sentences that fell back."
              },
              "protection": {
                "type": "object",
                "properties": {
                  "spans": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "examples": [
                            "date"
                          ],
                          "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)."
                        },
                        "value": {
                          "type": "string",
                          "examples": [
                            "04/03/2026"
                          ],
                          "description": "The protected source value. Omitted for redacted values."
                        },
                        "render": {
                          "type": "string",
                          "examples": [
                            "3 באפריל 2026"
                          ],
                          "description": "How the value was written in the translation, when it was rewritten (dates)."
                        },
                        "ambiguous_date": {
                          "type": "boolean",
                          "examples": [
                            true
                          ],
                          "description": "True when a numeric date could be read two ways and `date_order` decided it."
                        }
                      }
                    },
                    "description": "Every protected value, in source order."
                  },
                  "issues": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "examples": [
                            "term_missing"
                          ],
                          "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`."
                        },
                        "detail": {
                          "type": "string",
                          "examples": [
                            "\"A-10234\" (term) is missing or altered."
                          ]
                        },
                        "severity": {
                          "enum": [
                            "error",
                            "warning"
                          ],
                          "type": "string",
                          "examples": [
                            "error"
                          ]
                        }
                      }
                    },
                    "description": "Problems found by the checks. Empty when every sentence passed."
                  },
                  "status": {
                    "enum": [
                      "ok",
                      "retried",
                      "fallback",
                      "passthrough"
                    ],
                    "type": "string",
                    "examples": [
                      "ok"
                    ],
                    "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."
                  },
                  "segments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string",
                          "examples": [
                            "האם תרצי שאקבע את המשלוח ל־3 באפריל 2026?"
                          ]
                        },
                        "source": {
                          "type": "string",
                          "examples": [
                            "Would you like me to schedule delivery for 04/03/2026?"
                          ]
                        },
                        "status": {
                          "enum": [
                            "ok",
                            "retried",
                            "fallback",
                            "passthrough"
                          ],
                          "type": "string",
                          "examples": [
                            "ok"
                          ]
                        }
                      }
                    },
                    "description": "Per-sentence result, in order."
                  },
                  "source_lang": {
                    "type": "string",
                    "examples": [
                      "en"
                    ],
                    "description": "Source language used for protection (detected when `source_lang` is `auto`)."
                  }
                },
                "description": "Present when the request used protected translation."
              },
              "transliteration": {
                "type": [
                  "string",
                  "null"
                ],
                "examples": [
                  "Bruchim haba'im lakheshbon shelkha"
                ],
                "description": "Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null."
              }
            }
          }
        ],
        "description": "The translation with its directionality metadata."
      },
      "description": "One translation per item, in input order."
    }
  }
}
translate_batch annotations
{
  "title": "Translate a batch of strings",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
analyze_direction — Analyze RTL/LTR direction
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

analyze_direction input schema
{
  "type": "object",
  "title": "AnalyzeRequest",
  "properties": {
    "base": {
      "enum": [
        "auto",
        "ltr",
        "rtl"
      ],
      "type": "string",
      "default": "auto",
      "examples": [
        "auto"
      ],
      "description": "Paragraph direction to resolve against. `auto` (default) uses the first strong letter."
    },
    "text": {
      "type": "string",
      "examples": [
        "שלום world"
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "A single string, up to 20,000 characters. Send this or `fields`."
    },
    "fields": {
      "type": "object",
      "examples": [
        {
          "title": "מסמך Q3 ready",
          "subtitle": "Read the summary"
        }
      ],
      "description": "A map of field name → string, up to 100 fields and 20,000 characters in total. Send this or `text`.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 20000
      }
    }
  },
  "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."
}
analyze_direction output schema
{
  "type": "object",
  "properties": {
    "fields": {
      "type": "object",
      "description": "Present when the request sent `fields`: one analysis per field name.",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "dir": {
            "enum": [
              "ltr",
              "rtl"
            ],
            "type": "string",
            "examples": [
              "rtl"
            ],
            "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`."
          },
          "lang": {
            "type": "string",
            "examples": [
              "he"
            ],
            "description": "Dominant BCP 47 language, from the dominant script."
          },
          "runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dir": {
                  "enum": [
                    "ltr",
                    "rtl"
                  ],
                  "type": "string",
                  "examples": [
                    "rtl"
                  ],
                  "description": "Resolved direction of the run."
                },
                "end": {
                  "type": "integer",
                  "examples": [
                    5
                  ],
                  "description": "UTF-16 offset after the last character, exclusive."
                },
                "lang": {
                  "type": "string",
                  "examples": [
                    "he"
                  ],
                  "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                },
                "text": {
                  "type": "string",
                  "examples": [
                    "שלום "
                  ],
                  "description": "The run text. Equals `input.slice(start, end)`."
                },
                "start": {
                  "type": "integer",
                  "examples": [
                    0
                  ],
                  "description": "UTF-16 offset of the first character, inclusive."
                },
                "script": {
                  "type": "string",
                  "examples": [
                    "Hebr"
                  ],
                  "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                }
              },
              "description": "A maximal stretch of text with one direction, in logical order."
            },
            "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
          },
          "mixed": {
            "type": "boolean",
            "examples": [
              true
            ],
            "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count."
          },
          "script": {
            "type": "string",
            "examples": [
              "Hebr"
            ],
            "description": "Dominant ISO 15924 script."
          },
          "display_runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dir": {
                  "enum": [
                    "ltr",
                    "rtl"
                  ],
                  "type": "string",
                  "examples": [
                    "rtl"
                  ],
                  "description": "Resolved direction of the run."
                },
                "end": {
                  "type": "integer",
                  "examples": [
                    5
                  ],
                  "description": "UTF-16 offset after the last character, exclusive."
                },
                "lang": {
                  "type": "string",
                  "examples": [
                    "he"
                  ],
                  "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                },
                "text": {
                  "type": "string",
                  "examples": [
                    "שלום "
                  ],
                  "description": "The run text. Equals `input.slice(start, end)`."
                },
                "start": {
                  "type": "integer",
                  "examples": [
                    0
                  ],
                  "description": "UTF-16 offset of the first character, inclusive."
                },
                "script": {
                  "type": "string",
                  "examples": [
                    "Hebr"
                  ],
                  "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                }
              },
              "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."
      }
    },
    "analysis": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dir": {
              "enum": [
                "ltr",
                "rtl"
              ],
              "type": "string",
              "examples": [
                "rtl"
              ],
              "description": "Paragraph base direction. With `base: \"auto\"` this follows the Unicode first-strong rule, matching CSS `dir=\"auto\"`."
            },
            "lang": {
              "type": "string",
              "examples": [
                "he"
              ],
              "description": "Dominant BCP 47 language, from the dominant script."
            },
            "runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "description": "A maximal stretch of text with one direction, in logical order."
              },
              "description": "Runs exactly as the Unicode Bidirectional Algorithm resolves them."
            },
            "mixed": {
              "type": "boolean",
              "examples": [
                true
              ],
              "description": "True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count."
            },
            "script": {
              "type": "string",
              "examples": [
                "Hebr"
              ],
              "description": "Dominant ISO 15924 script."
            },
            "display_runs": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dir": {
                    "enum": [
                      "ltr",
                      "rtl"
                    ],
                    "type": "string",
                    "examples": [
                      "rtl"
                    ],
                    "description": "Resolved direction of the run."
                  },
                  "end": {
                    "type": "integer",
                    "examples": [
                      5
                    ],
                    "description": "UTF-16 offset after the last character, exclusive."
                  },
                  "lang": {
                    "type": "string",
                    "examples": [
                      "he"
                    ],
                    "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
                  },
                  "text": {
                    "type": "string",
                    "examples": [
                      "שלום "
                    ],
                    "description": "The run text. Equals `input.slice(start, end)`."
                  },
                  "start": {
                    "type": "integer",
                    "examples": [
                      0
                    ],
                    "description": "UTF-16 offset of the first character, inclusive."
                  },
                  "script": {
                    "type": "string",
                    "examples": [
                      "Hebr"
                    ],
                    "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
                  }
                },
                "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`."
        }
      ]
    }
  }
}
analyze_direction annotations
{
  "title": "Analyze RTL/LTR direction",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
detect_language — Detect language
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

detect_language input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "Можно оплатить через PayPal сегодня?"
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "Text to classify, up to 20,000 characters. Built for short, code-switched input."
    }
  }
}
detect_language output schema
{
  "type": "object",
  "properties": {
    "dir": {
      "enum": [
        "ltr",
        "rtl"
      ],
      "type": "string",
      "examples": [
        "ltr"
      ],
      "description": "Base direction of the dominant language."
    },
    "lang": {
      "type": "string",
      "examples": [
        "ru"
      ],
      "description": "Dominant language (BCP 47). Latin script is tagged `en`."
    },
    "script": {
      "type": "string",
      "examples": [
        "Cyrl"
      ],
      "description": "Dominant ISO 15924 script."
    },
    "segments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "end": {
            "type": "integer",
            "examples": [
              28
            ]
          },
          "lang": {
            "type": "string",
            "examples": [
              "en"
            ]
          },
          "text": {
            "type": "string",
            "examples": [
              "PayPal "
            ]
          },
          "start": {
            "type": "integer",
            "examples": [
              21
            ]
          },
          "script": {
            "type": "string",
            "examples": [
              "Latn"
            ]
          }
        }
      },
      "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",
            "examples": [
              0.941
            ],
            "description": "Share of letters, 0 to 1."
          }
        }
      },
      "description": "Every language found, largest share first."
    },
    "confidence": {
      "type": "number",
      "examples": [
        0.941
      ],
      "description": "Share of letters in the dominant language, 0 to 1."
    }
  }
}
detect_language annotations
{
  "title": "Detect language",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
wrap_for_display — Wrap a line for display
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

wrap_for_display input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "base": {
      "enum": [
        "auto",
        "ltr",
        "rtl"
      ],
      "type": "string",
      "default": "auto",
      "examples": [
        "rtl"
      ],
      "description": "Paragraph direction of the display surface. Pass `rtl` for a Hebrew line even when it starts with a Latin term."
    },
    "text": {
      "type": "string",
      "examples": [
        "הנחה: 10–20% על Galaxy S25 עד 31/12"
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "The display line, up to 20,000 characters."
    },
    "format": {
      "enum": [
        "html",
        "isolate",
        "marks"
      ],
      "type": "string",
      "default": "html",
      "examples": [
        "html"
      ],
      "description": "`html` for the web; `isolate` (Unicode isolates) for modern text engines; `marks` (LRM/RLM) for every renderer, including older Android."
    }
  }
}
wrap_for_display output schema
{
  "type": "object",
  "properties": {
    "dir": {
      "enum": [
        "ltr",
        "rtl"
      ],
      "type": "string",
      "examples": [
        "rtl"
      ],
      "description": "Paragraph direction used."
    },
    "runs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "dir": {
            "enum": [
              "ltr",
              "rtl"
            ],
            "type": "string",
            "examples": [
              "rtl"
            ],
            "description": "Resolved direction of the run."
          },
          "end": {
            "type": "integer",
            "examples": [
              5
            ],
            "description": "UTF-16 offset after the last character, exclusive."
          },
          "lang": {
            "type": "string",
            "examples": [
              "he"
            ],
            "description": "Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols)."
          },
          "text": {
            "type": "string",
            "examples": [
              "שלום "
            ],
            "description": "The run text. Equals `input.slice(start, end)`."
          },
          "start": {
            "type": "integer",
            "examples": [
              0
            ],
            "description": "UTF-16 offset of the first character, inclusive."
          },
          "script": {
            "type": "string",
            "examples": [
              "Hebr"
            ],
            "description": "ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only."
          }
        },
        "description": "A maximal stretch of text with one direction, in logical order."
      },
      "description": "The display runs the output was built from."
    },
    "format": {
      "type": "string",
      "examples": [
        "html"
      ],
      "description": "Format used."
    },
    "output": {
      "type": "string",
      "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>"
      ],
      "description": "Render-ready text: HTML with `dir` spans, or the text with Unicode isolates or direction marks inserted."
    }
  }
}
wrap_for_display annotations
{
  "title": "Wrap a line for display",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
transliterate — Transliterate Hebrew ↔ Latin
Advertised by the server during the last successful anonymous check.

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.

transliterate input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שלום"
      ],
      "maxLength": 5000,
      "minLength": 1,
      "description": "Text to transliterate, up to 5,000 characters."
    },
    "direction": {
      "enum": [
        "he-to-latin",
        "latin-to-he"
      ],
      "type": "string",
      "default": "he-to-latin",
      "examples": [
        "he-to-latin"
      ],
      "description": "`he-to-latin` (default) romanizes Hebrew. `latin-to-he` writes Latin spelling in Hebrew letters, for name entry and search."
    }
  }
}
transliterate output schema
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שלום"
      ],
      "description": "The input."
    },
    "scheme": {
      "type": "string",
      "examples": [
        "general"
      ],
      "description": "Romanization scheme used."
    },
    "direction": {
      "type": "string",
      "examples": [
        "he-to-latin"
      ],
      "description": "Direction used."
    },
    "transliteration": {
      "type": "string",
      "examples": [
        "shalom"
      ],
      "description": "The transliterated text."
    }
  }
}
transliterate annotations
{
  "title": "Transliterate Hebrew ↔ Latin",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
add_nikud — Add nikud (vowel points)
Advertised by the server during the last successful anonymous check.

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.

add_nikud input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שלום עולם"
      ],
      "maxLength": 10000,
      "minLength": 1,
      "description": "Hebrew text to vocalize, up to 10,000 characters. English terms and numbers pass through."
    }
  }
}
add_nikud output schema
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שלום עולם"
      ],
      "description": "The input."
    },
    "nikud": {
      "type": "string",
      "examples": [
        "שָׁלוֹם עוֹלָם"
      ],
      "description": "The vocalized text, or the input unchanged when `verified` is false."
    },
    "verified": {
      "type": "boolean",
      "examples": [
        true
      ],
      "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."
    }
  }
}
add_nikud annotations
{
  "title": "Add nikud (vowel points)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
strip_nikud — Remove nikud
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

strip_nikud input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שָׁלוֹם"
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "Hebrew text with nikud or cantillation, up to 20,000 characters."
    }
  }
}
strip_nikud output schema
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "שָׁלוֹם"
      ],
      "description": "The input."
    },
    "stripped": {
      "type": "string",
      "examples": [
        "שלום"
      ],
      "description": "The text without nikud, dagesh or cantillation. Punctuation such as the maqaf is kept."
    }
  }
}
strip_nikud annotations
{
  "title": "Remove nikud",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_languages — List supported languages
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_languages input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_languages output schema
{
  "type": "object",
  "properties": {
    "languages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "dir": {
            "enum": [
              "ltr",
              "rtl"
            ],
            "type": "string",
            "examples": [
              "rtl"
            ],
            "description": "Writing direction."
          },
          "code": {
            "type": "string",
            "examples": [
              "he"
            ],
            "description": "BCP 47 code to pass as `source_lang` or `target_lang`."
          },
          "name": {
            "type": "string",
            "examples": [
              "Hebrew"
            ],
            "description": "English name."
          },
          "native": {
            "type": "string",
            "examples": [
              "עברית"
            ],
            "description": "Name in the language itself."
          }
        }
      },
      "description": "Every supported language."
    }
  }
}
list_languages annotations
{
  "title": "List supported languages",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
list_terms — List account terms
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_terms input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_terms output schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer"
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "examples": [
              "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
            ]
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "paracetamol 500 mg brand"
            ],
            "description": "Your own note, up to 500 characters."
          },
          "term": {
            "type": "string",
            "examples": [
              "Acamol"
            ],
            "description": "Kept exactly as written in every protected translation."
          },
          "created_at": {
            "type": "string",
            "examples": [
              "2026-01-15T09:30:00.000Z"
            ],
            "description": "ISO 8601 timestamp."
          },
          "translations": {
            "type": "object",
            "examples": [
              {
                "he": "אקמול"
              }
            ],
            "properties": {
              "en": {
                "type": "string"
              },
              "he": {
                "type": "string"
              },
              "ru": {
                "type": "string"
              }
            },
            "description": "Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim."
          }
        }
      }
    }
  }
}
list_terms annotations
{
  "title": "List account terms",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
add_terms — Add or update account terms
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

add_terms input schema
{
  "type": "object",
  "required": [
    "terms"
  ],
  "properties": {
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "term"
        ],
        "properties": {
          "note": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 500
          },
          "term": {
            "type": "string",
            "examples": [
              "Optalgin"
            ],
            "maxLength": 200,
            "minLength": 1
          },
          "translations": {
            "type": "object",
            "examples": [
              {
                "he": "אופטלגין",
                "ru": "Оптальгин"
              }
            ],
            "properties": {
              "en": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "he": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              },
              "ru": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1
              }
            },
            "additionalProperties": false
          }
        }
      },
      "maxItems": 2000,
      "minItems": 1
    }
  }
}
add_terms output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "examples": [
              "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
            ]
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "paracetamol 500 mg brand"
            ],
            "description": "Your own note, up to 500 characters."
          },
          "term": {
            "type": "string",
            "examples": [
              "Acamol"
            ],
            "description": "Kept exactly as written in every protected translation."
          },
          "created_at": {
            "type": "string",
            "examples": [
              "2026-01-15T09:30:00.000Z"
            ],
            "description": "ISO 8601 timestamp."
          },
          "translations": {
            "type": "object",
            "examples": [
              {
                "he": "אקמול"
              }
            ],
            "properties": {
              "en": {
                "type": "string"
              },
              "he": {
                "type": "string"
              },
              "ru": {
                "type": "string"
              }
            },
            "description": "Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim."
          }
        }
      }
    }
  }
}
add_terms annotations
{
  "title": "Add or update account terms",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
delete_term — Delete an account term
Advertised by the server during the last successful anonymous check.
Advertised destructive

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

delete_term input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "examples": [
        "3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f"
      ],
      "description": "The term id, from list_terms or add_terms."
    }
  }
}
delete_term output schema
{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "boolean"
    }
  }
}
delete_term annotations
{
  "title": "Delete an account term",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
clinical_translate — Translate clinical English to verified Hebrew
Advertised by the server during the last successful anonymous check.

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.

clinical_translate input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "bidi": {
      "enum": [
        "isolate",
        "none"
      ],
      "type": "string",
      "default": "isolate",
      "examples": [
        "isolate"
      ],
      "description": "`isolate` wraps English values in Unicode isolates so \"5 mg\" never renders as \"mg 5\". `none` returns plain text."
    },
    "text": {
      "type": "string",
      "examples": [
        "Based on your records, you are taking Eliquis 5 mg twice a day. Your dose was changed on 03/04/2026."
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "English text, 1 to 20,000 characters. Markdown lists, headings and tables keep their structure. Counts toward the monthly character quota."
    },
    "audience": {
      "enum": [
        "clinician",
        "patient"
      ],
      "type": "string",
      "default": "clinician",
      "examples": [
        "patient"
      ],
      "description": "Who reads the Hebrew. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes dosing shorthand (BID, PRN) as plain words."
    },
    "glossary": {
      "type": "object",
      "examples": [
        {
          "hypertension": "יתר לחץ דם"
        }
      ],
      "description": "English term → required Hebrew rendering. Up to 500 entries.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      }
    },
    "date_order": {
      "enum": [
        "MDY",
        "DMY"
      ],
      "type": "string",
      "default": "MDY",
      "examples": [
        "MDY"
      ],
      "description": "How to read ambiguous numeric dates in the source. US records are MDY."
    },
    "date_style": {
      "enum": [
        "hebrew",
        "iso",
        "keep"
      ],
      "type": "string",
      "default": "hebrew",
      "examples": [
        "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."
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Dana Levi"
        ]
      ],
      "maxItems": 200,
      "description": "Kept verbatim and never shown to the model (patient and staff names). Up to 200."
    },
    "reader_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "female"
      ],
      "description": "Gender of the reader, the person the text calls \"you\". Omit when unknown."
    },
    "patient_gender": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string",
      "examples": [
        "male"
      ],
      "description": "Gender of the patient in third-person references. Inferred from he/she when omitted."
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Eliquis 5 mg BID",
          "atrial fibrillation"
        ]
      ],
      "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."
    }
  }
}
clinical_translate output schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "examples": [
        "med_a1b2c3d4e5f6"
      ],
      "description": "Request identifier."
    },
    "text": {
      "type": "string",
      "examples": [
        "את נוטלת Eliquis 5 mg פעמיים ביום. המינון שלך שונה ב־4 במרץ 2026."
      ],
      "description": "The whole Hebrew document: every segment joined with its prefix and suffix."
    },
    "stats": {
      "type": "object",
      "properties": {
        "ok": {
          "type": "integer",
          "examples": [
            2
          ]
        },
        "retried": {
          "type": "integer",
          "examples": [
            0
          ]
        },
        "fallback": {
          "type": "integer",
          "examples": [
            0
          ],
          "description": "Sentences returned in English. Treat them as untranslated."
        },
        "segments": {
          "type": "integer",
          "examples": [
            2
          ],
          "description": "Total sentences."
        },
        "passthrough": {
          "type": "integer",
          "examples": [
            0
          ]
        }
      }
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            77
          ],
          "description": "Characters charged."
        }
      }
    },
    "segments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "examples": [
              "את נוטלת Eliquis 5 mg פעמיים ביום."
            ],
            "description": "Verified Hebrew, or the English source when status is `fallback`."
          },
          "index": {
            "type": "integer",
            "examples": [
              0
            ],
            "description": "Position of the sentence, from 0."
          },
          "spans": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "examples": [
                    "dose"
                  ],
                  "description": "What was protected: `drug`, `dose`, `abbreviation`, `code`, `number`, `date`, `term`, `glossary`, `identifier`, `name` and others."
                },
                "value": {
                  "type": "string",
                  "examples": [
                    "5 mg"
                  ],
                  "description": "The protected source value. Omitted for names and identifiers."
                },
                "render": {
                  "type": "string",
                  "examples": [
                    "4 במרץ 2026"
                  ],
                  "description": "How the value was written in the Hebrew, when it was rewritten (dates)."
                },
                "ambiguous_date": {
                  "type": "boolean",
                  "examples": [
                    true
                  ],
                  "description": "True when a numeric date could be read two ways and `date_order` decided it."
                }
              }
            },
            "description": "Protected values in this sentence. Redacted names and identifiers are left out."
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "examples": [
                    "negation_lost"
                  ],
                  "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."
                },
                "detail": {
                  "type": "string",
                  "examples": [
                    "The source says \"no known allergies\"; the translation drops the negation."
                  ],
                  "description": "Human-readable explanation."
                },
                "severity": {
                  "enum": [
                    "error",
                    "warning"
                  ],
                  "type": "string",
                  "examples": [
                    "error"
                  ],
                  "description": "`error` blocks the sentence; `warning` is informational."
                }
              }
            },
            "description": "Why a sentence was retried or fell back. Empty for `ok`."
          },
          "prefix": {
            "type": "string",
            "examples": [
              "- "
            ],
            "description": "Markdown structure emitted before the text (list marker, heading)."
          },
          "source": {
            "type": "string",
            "examples": [
              "You are taking Eliquis 5 mg twice a day."
            ],
            "description": "The English sentence."
          },
          "status": {
            "enum": [
              "ok",
              "retried",
              "fallback",
              "passthrough"
            ],
            "type": "string",
            "examples": [
              "ok"
            ],
            "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."
          },
          "suffix": {
            "type": "string",
            "examples": [
              "\n"
            ],
            "description": "Whitespace or structure after the text. Join `prefix + text + suffix` for every segment to rebuild the document."
          }
        }
      },
      "description": "One entry per sentence, in order."
    }
  }
}
clinical_translate annotations
{
  "title": "Translate clinical English to verified Hebrew",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
clinical_query — Hebrew question to English record query
Advertised by the server during the last successful anonymous check.

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.

clinical_query input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "examples": [
        "האם המטופלת עדיין לוקחת מטפורמין?"
      ],
      "maxLength": 2000,
      "minLength": 1,
      "description": "The Hebrew question, up to 2,000 characters."
    },
    "glossary": {
      "type": "object",
      "examples": [
        {
          "metformin": "מטפורמין"
        }
      ],
      "description": "English term → Hebrew rendering, used to map the Hebrew back to English.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      }
    },
    "known_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "metformin",
          "lisinopril"
        ]
      ],
      "maxItems": 500,
      "description": "English terms from the patient's record, used to map Hebrew spellings back. Up to 500. Account terms are added automatically."
    }
  }
}
clinical_query output schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "examples": [
        "Is the patient still taking metformin?"
      ],
      "description": "English query for your record search."
    },
    "terms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "hebrew": {
            "type": "string",
            "examples": [
              "מטפורמין"
            ]
          },
          "source": {
            "enum": [
              "known_terms",
              "lexicon",
              "glossary"
            ],
            "type": "string",
            "examples": [
              "known_terms"
            ],
            "description": "Where the mapping came from."
          },
          "english": {
            "type": "string",
            "examples": [
              "metformin"
            ]
          }
        }
      },
      "description": "Hebrew spellings that were mapped back to English terms."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            33
          ]
        }
      }
    }
  }
}
clinical_query annotations
{
  "title": "Hebrew question to English record query",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
clinical_verify — Verify a Hebrew clinical translation
Advertised by the server during the last successful anonymous check.

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.

clinical_verify input schema
{
  "type": "object",
  "required": [
    "source",
    "translation"
  ],
  "properties": {
    "source": {
      "type": "string",
      "examples": [
        "Metformin 500 mg BID since 03/04/2026."
      ],
      "maxLength": 20000,
      "minLength": 1,
      "description": "The English source, up to 20,000 characters."
    },
    "glossary": {
      "type": "object",
      "examples": [
        {
          "hypertension": "יתר לחץ דם"
        }
      ],
      "description": "English term → required Hebrew rendering.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      }
    },
    "date_order": {
      "enum": [
        "MDY",
        "DMY"
      ],
      "type": "string",
      "default": "MDY",
      "examples": [
        "MDY"
      ],
      "description": "How to read ambiguous numeric dates in the source."
    },
    "translation": {
      "type": "string",
      "examples": [
        "Metformin 50 mg BID מאז 03/04/2026."
      ],
      "maxLength": 40000,
      "minLength": 1,
      "description": "The Hebrew to check, up to 40,000 characters."
    },
    "redact_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Dana Levi"
        ]
      ],
      "maxItems": 200,
      "description": "Names replaced before the reviewer sees the text. Up to 200."
    },
    "verification": {
      "enum": [
        "strict",
        "standard"
      ],
      "type": "string",
      "default": "standard",
      "examples": [
        "standard"
      ],
      "description": "`standard` (default) runs the deterministic checks. `strict` adds an independent model review for meaning changes."
    },
    "protected_terms": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "examples": [
        [
          "Metformin"
        ]
      ],
      "maxItems": 500,
      "description": "Terms that must appear verbatim. Up to 500."
    }
  }
}
clinical_verify output schema
{
  "type": "object",
  "properties": {
    "pass": {
      "type": "boolean",
      "examples": [
        false
      ],
      "description": "True when no issue has severity `error`."
    },
    "usage": {
      "type": "object",
      "properties": {
        "characters": {
          "type": "integer",
          "examples": [
            72
          ],
          "description": "Characters charged: source plus translation."
        }
      }
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "examples": [
              "negation_lost"
            ],
            "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."
          },
          "detail": {
            "type": "string",
            "examples": [
              "The source says \"no known allergies\"; the translation drops the negation."
            ],
            "description": "Human-readable explanation."
          },
          "severity": {
            "enum": [
              "error",
              "warning"
            ],
            "type": "string",
            "examples": [
              "error"
            ],
            "description": "`error` blocks the sentence; `warning` is informational."
          }
        }
      },
      "description": "Every problem found."
    }
  }
}
clinical_verify annotations
{
  "title": "Verify a Hebrew clinical translation",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
health — Service health
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

health input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
health output schema
{
  "type": "object",
  "properties": {
    "db": {
      "type": "string",
      "examples": [
        "ok"
      ],
      "description": "`ok`, or `error` when the database check failed."
    },
    "status": {
      "type": "string",
      "examples": [
        "ok"
      ],
      "description": "`ok` when the API is serving."
    },
    "version": {
      "type": "string",
      "examples": [
        "1.0.0"
      ],
      "description": "API version."
    }
  }
}
health annotations
{
  "title": "Service health",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1239 ms
95th percentile latency
1239 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1239 ms · metadata changed · 16 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http hebrewcore-mcp https://hc.itsbaba.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add hebrewcore-mcp --url https://hc.itsbaba.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable hebrewcore-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "hebrewcore-mcp": {
      "url": "https://hc.itsbaba.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "hebrewcore-mcp": {
      "type": "streamableHttp",
      "url": "https://hc.itsbaba.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start hebrewcore-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "hebrewcore-mcp": {
      "type": "http",
      "url": "https://hc.itsbaba.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http hebrewcore-mcp https://hc.itsbaba.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://hc.itsbaba.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "hebrewcore-mcp": {
      "serverUrl": "https://hc.itsbaba.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like HebrewCore MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run HebrewCore MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing