moth docs
Protocol What is removed

What is removed

What leaves our servers is the request you meant to send without who sent it, and what comes back is the model's answer without the host's own fields.

Who you are

You sendThe host gets
Your IP addressMoth's server address, shared by every call
Your user agent and other headersOnly the headers Moth sets
Your key or walletOne pooled key
user, metadata and a message's nameNothing, they are dropped
Your prompt and its settingsThe prompt, with the model's name swapped for the host's own
The prompt goes on, since the model has to read it. Everything that says who sent it stops at the Mothpoint.

Fields dropped from the request

Each endpoint keeps only the fields it names, at every level of the body, and drops the rest without an error, so an SDK that adds fields of its own still works.

EndpointDropped
/chat/completionsuser, metadata, store, a message's name, logprobs, top_logprobs, logit_bias, service_tier, reasoning_effort and any routing field
/messagesmetadata, cache_control and service_tier

Settings a model can't take

Some settings reach only the models that understand them. Each model's entry in the catalog says which under capabilities.

SettingWhat happens
temperature, top_p, top_ksent only where sampling_params is true and dropped without an error elsewhere. top_k is taken only on /messages and reaches only Claude models. On /chat/completions a temperature above 1 becomes 1 on Claude models, and /messages refuses one above 1 with 400
presence_penalty, frequency_penalty, seedsent to the Gemini models only and dropped elsewhere
stop and stop_sequencesrefused with 400 on the GPT, Grok, DeepSeek and Kimi models
thinking and thinking blockssent to Claude models only and dropped elsewhere
response_formattext works everywhere, Claude models refuse a JSON format, and the GPT, Grok, DeepSeek and Kimi models take only json_schema with a schema
An image's detaildropped, except on the Gemini models
search_context_size and max_useschecked, then not sent on

What changes in the reply

  • The reply's id is Moth's own, msg_ or chatcmpl- followed by the request id without its req_, so a call logged as req_abc answers as msg_abc, and model is the Moth model ID.
  • usage counts only your input and output. The host's hidden prompt and Moth's own instruction are taken out, and cached tokens count as input.
  • Any cost figure the host adds is removed, and so is the host's error text, which becomes one of three plain errors.
  • Web sources lose their utm_source tag.
  • A one-line house instruction, whose tokens you don't pay for, asks the model not to write em dashes, and any it writes anyway become a comma, or a hyphen at the start of a line, in the reply's text.
  • Some hosts ignore max_tokens, so a reply that runs past five characters for every token of it is cut there and ends with max_tokens or length.

What it can't remove. Whatever a prompt says about you stays in the prompt. The Mothpoint removes who sent a request, not what it contains, and Anonymized and Sealed explains where that line sits.