Tohru

Tohru — guide d'utilisation

Tohru est un assistant conversationnel pour Mac, iPhone, iPad et iPhone Duo. Il répond avec Apple Intelligence (modèle serveur Private Cloud Compute) dès l'installation, ou avec votre propre modèle désigné par son URL, et il peut utiliser les outils de vos serveurs MCP (Model Context Protocol).

  1. Premier lancement
  2. Choisir le cerveau
  3. Utiliser votre propre modèle (URL d'inférence)
  4. Donner des outils à Tohru : les serveurs MCP
  5. Confirmation des actions
  6. Pièces jointes, dictée, voix
  7. Dépannage
  8. Confidentialité

1. Premier lancement

Rien à configurer : posez votre question. Tohru utilise Apple Intelligence (Private Cloud Compute).

Conditions : un appareil compatible avec Apple Intelligence, Apple Intelligence activée (Réglages › Apple Intelligence et Siri), une connexion à Internet. Les requêtes sont décomptées du quota quotidien de votre compte iCloud ; l'état du quota s'affiche dans Réglages › Général et dans le panneau d'état (pastille en bas de la liste des conversations). La roue crantée ⚙︎ à côté ouvre les réglages ; la loupe, en haut à droite de la liste, cherche dans les conversations ; un balayage vers la gauche supprime une conversation.

2. Choisir le cerveau

Réglages › Général › Cerveau (Mac : menu Tohru › Réglages…, ⌘, ou roue crantée ⚙︎ ; iPhone et iPad : roue crantée ⚙︎ en bas de la liste des conversations). Le menu en bas de la liste des conversations permet aussi de basculer à tout moment.

Cerveau Quand le choisir
Apple Intelligence (Private Cloud Compute) Par défaut : aucun réglage, contexte de 32 768 jetons.
Modèle compatible OpenAI (URL) Modèle local (Ollama, LM Studio…) ou service en ligne : grand contexte, aucun quota Apple.

Les deux cerveaux partagent les conversations, les outils MCP, la consigne système et la température (Réglages › Général). La consigne par défaut suit la langue de l'appareil ; « Rétablir la consigne par défaut » annule une consigne personnalisée.

3. Utiliser votre propre modèle (URL d'inférence)

Réglages › Modèle à URL :

Champ Exemple Rôle
URL http://192.168.1.20:11434/v1 Adresse de l'API compatible OpenAI, terminée en général par /v1. Tohru appelle …/chat/completions et …/models.
Modèle qwen3:8b Nom du modèle. Le bouton Lister interroge …/models et propose les modèles du serveur.
Nom affiché Ollama du salon Facultatif.
Clé Facultative : envoyée en Authorization: Bearer, conservée dans le trousseau (synchronisé par iCloud), jamais dans un fichier. Inutile pour Ollama et LM Studio.
Compte du trousseau inference Nom sous lequel la clé est rangée.
Contexte 32768 Fenêtre annoncée du modèle, en jetons.
Réflexion Réglage du serveur Transmise en reasoning_effort (none, low, medium, high) aux modèles qui raisonnent.

Enregistrer et utiliser ce modèle l'enregistre et le choisit comme cerveau ; Retirer revient à Apple Intelligence.

Adresses usuelles :

Serveur URL
Ollama http://<adresse>:11434/v1 (sur le même Mac : http://localhost:11434/v1)
LM Studio http://<adresse>:1234/v1
vLLM, llama.cpp (llama-server) http://<adresse>:8000/v1 (port selon votre lancement)
Service en ligne l'URL de base « compatible OpenAI » du fournisseur, avec sa clé

Le HTTP non chiffré n'est accepté que vers le réseau local (adresses privées, .local) ; un service sur Internet doit être en HTTPS. Avec Ollama, exposez le serveur au réseau (OLLAMA_HOST=0.0.0.0) et réglez sa fenêtre de contexte (OLLAMA_CONTEXT_LENGTH).

4. Donner des outils à Tohru : les serveurs MCP

Un serveur MCP (Model Context Protocol) met des outils à la disposition de Tohru : rechercher dans une documentation, lire un dossier, piloter un service… Pour l'ajouter, son adresse suffit : Tohru découvre tout seul ses outils et, s'il est protégé, ouvre sa page de connexion. Il n'y a aucun fichier à écrire.

Tohru joint les serveurs MCP en HTTP « streamable » (adresse se terminant en général par /mcp). Les serveurs « stdio », lancés en ligne de commande, ne sont pas joignables depuis un iPhone : leur fournisseur doit les exposer en HTTP (par exemple avec mcp-proxy).

4.1 Ajouter un serveur par son adresse

Réglages › Serveurs MCP › Ajouter un serveur (Mac : menu Tohru › Réglages…, ⌘, ou roue crantée ⚙︎ ; iPhone et iPad : roue crantée ⚙︎ en bas de la liste des conversations › Serveurs MCP).

  1. Collez dans Adresse du serveur l'adresse que le fournisseur vous a donnée (https:// est ajouté s'il manque).
  2. Touchez Se connecter. Tohru interroge le serveur et affiche ses outils ; le Nom est repris de celui que le serveur annonce, vous pouvez le changer. Selon la réponse du serveur, la fiche fait apparaître ce qu'il faut, et seulement cela :
  3. une page de connexion s'ouvre aussitôt (serveur protégé par OAuth, § 4.2) ;
  4. la section Jeton d'accès passe au premier plan (serveur à clé d'API, § 4.2) ;
  5. la section Certificat non reconnu affiche l'empreinte du certificat (serveur à certificat auto-signé, § 4.3).
  6. Touchez Enregistrer.

Pour un premier essai, Ajouter l'exemple DeepWiki ajoute un serveur public, sans compte, qui répond sur les dépôts GitHub publics. Demandez ensuite : « Avec DeepWiki, à quoi sert le dépôt modelcontextprotocol/swift-sdk ? »

La liste montre chaque serveur avec son état (nombre d'outils, ou erreur en orange) ; le toucher rouvre sa fiche. Supprimer ce serveur (en bas de la fiche ; sur iPhone et iPad, aussi par balayage dans la liste) le retire après confirmation.

4.2 Serveur qui demande de vous identifier

Pour un serveur protégé, Se connecter ouvre directement la page de connexion du fournisseur (compte, mot de passe, double authentification…), où Tohru se présente sous le nom Tohru AI. Une fois l'accès autorisé, vous revenez dans Tohru et les outils s'affichent :

Cette connexion suit la norme d'autorisation de MCP (OAuth 2.1 avec PKCE). Si le fournisseur vous a remis un identifiant client, saisissez-le dans Options avancées › Identifiant client OAuth ; sinon, Tohru s'identifie de lui-même.

Certains serveurs fournissent plutôt une clé d'API (jeton fixe) et répondent « 401 » sans publier de métadonnées OAuth. Après Se connecter, la fiche montre alors la section Jeton d'accès au premier plan, avec le message « Ce serveur demande un jeton d'accès : collez-le dans le champ « Jeton d'accès », puis « Se connecter ». » :

  1. touchez Coller dans la section Jeton d'accès : Tohru se connecte aussitôt (un jeton saisi au clavier, ou collé par ⌘V dans le champ, demande Se connecter) ; sur iPhone et iPad, un jeton copié sur le Mac arrive par le Presse-papiers universel ;
  2. touchez Enregistrer.

Le jeton est envoyé en Authorization: Bearer et conservé dans le trousseau ; il ne figure jamais dans un fichier, un lien ou un code QR. Un jeton refusé affiche « Jeton refusé par le serveur (HTTP 401). » Ne plus envoyer de jeton le retire. Pour un serveur qui n'a rien demandé, Options avancées › Utiliser un jeton d'accès fixe fait apparaître le champ.

Un jeton collé par erreur dans Certificat d'autorité (PEM) est reconnu et déplacé dans Jeton d'accès, avec un avis ; un certificat collé dans le champ du jeton va, lui, dans le champ du certificat.

4.3 Serveur à certificat auto-signé

Si le certificat du serveur n'est pas reconnu par le système (serveur personnel, réseau local), la fiche affiche la section Certificat non reconnu, avec Émis pour et l'Empreinte SHA-256 présentée. Comparez-la avec celle que l'administrateur du serveur vous a communiquée (sur le serveur : openssl x509 -in cert.pem -noout -fingerprint -sha256) ; si elles sont identiques, touchez Faire confiance à ce certificat. La section devient Certificat : Tohru n'acceptera ensuite que ce certificat pour ce serveur, y compris après l'enregistrement et au redémarrage. S'il change, la connexion est refusée (« le certificat de … ne correspond pas à l'empreinte attendue ») et la fiche montre l'Empreinte attendue à côté de la nouvelle. Oublier ce certificat retire cette confiance.

Le certificat se règle pour l'adresse (hôte et port), pas pour le chemin : une connexion sécurisée ne connaît que l'hôte et le port. Les serveurs d'une même adresse partagent donc le même réglage. Un nouveau serveur ajouté à une adresse déjà utilisée en reprend le réglage, et un certificat différent y est refusé (« le serveur enregistré « … » utilise déjà … avec un autre réglage de certificat »), même par un lien d'ajout. Si le certificat a réellement changé, modifiez d'abord le serveur enregistré : la confiance accordée dans sa fiche vaut alors pour toute l'adresse.

Une connexion coupée en cours de route (serveur qui redémarre, réseau interrompu) n'est pas présentée comme un problème de certificat : la liste indique « connexion sécurisée impossible avec … ».

Pour un serveur signé par une autorité privée, collez plutôt le certificat de l'autorité dans Options avancées › Certificat d'autorité (PEM).

4.4 Lien d'ajout

Un fournisseur peut publier un lien qui ouvre directement dans Tohru la fiche pré-remplie du serveur, qui s'essaie aussitôt. Si le lien porte auth=bearer (le serveur attend un jeton), collez le jeton dans Jeton d'accès (Coller connecte aussitôt, § 4.2) ; puis touchez Enregistrer.

https://r0o.wtf/tohru/add?url=https%3A%2F%2Fmcp.example.com%2Fmcp&name=example
tohru://add?url=https%3A%2F%2Fmcp.example.com%2Fmcp&name=example&sha256=6B:C1:80:…:68:BB&auth=bearer
Paramètre Rôle
url Obligatoire : adresse du serveur (https:// ajouté s'il manque).
name Facultatif : nom proposé.
sha256 Facultatif : empreinte SHA-256 du certificat du serveur (64 chiffres hexadécimaux, avec ou sans « : » entre les paires, majuscules ou minuscules). Tohru l'affiche dans la section Certificat et l'épingle : la connexion n'aboutit que si le serveur présente ce certificat, sinon elle est refusée avec un message clair. Une empreinte invalide est ignorée, avec un avis. Un lien ne change jamais d'office le certificat accepté pour une adresse (hôte et port) déjà enregistrée : une autre empreinte y est montrée, jamais appliquée (ci-dessous et § 4.3).
auth=bearer Facultatif : le serveur attend un jeton fixe ; la fiche s'ouvre avec la section Jeton d'accès au premier plan.

Encodez chaque valeur (encodeURIComponent). Le jeton ne figure jamais dans un lien : un paramètre qui en porterait un (token, access_token…) est ignoré, et la fiche le signale ; un jeton ou un mot de passe glissé dans l'adresse elle-même (…/mcp?token=…, https://utilisateur:jeton@…) en est retiré, avec un avis. Le jeton se colle dans la fiche (Presse-papiers universel entre le Mac et l'iPhone ou l'iPad). Le lien https:// s'ouvre dans Tohru quand l'application est installée, et sinon affiche une page qui y mène ; il transmet à l'application toute sa requête. Les liens existants (url seul, url et name) restent valables.

Serveur déjà enregistré. Si le lien désigne un serveur que vous avez déjà (même adresse et même chemin), Tohru rouvre sa fiche au lieu d'en créer une seconde : collez-y le nouveau jeton si l'on vous en a remis un, puis touchez Enregistrer ; rien ne change avant. Si l'empreinte du lien diffère de celle acceptée pour cette adresse, la fiche montre les deux (section Empreinte du lien d'ajout) et garde l'empreinte enregistrée : le certificat accepté ne change que si vous faites confiance à celui que le serveur présente (Faire confiance à ce certificat), puis touchez Enregistrer. Un lien vers un autre chemin de la même adresse ajoute un second serveur, dont le nom proposé est rendu unique (docs2…).

4.5 Régler les outils d'un serveur

Après Se connecter, la fiche liste les outils du serveur. Chacun se règle : Proposé (le modèle peut l'appeler), Avec confirmation (une carte vous demande votre accord à chaque appel) ou Masqué (jamais proposé au modèle). Un outil qui écrit, envoie ou supprime demande déjà une confirmation (§ 5).

4.6 Ce que Tohru fait de vos serveurs

4.7 Pour les fournisseurs de serveurs MCP

Pour que vos utilisateurs n'aient qu'une adresse à coller :

5. Confirmation des actions

Un outil qui agit (écrit, envoie, supprime, commande…) n'est jamais exécuté sans votre accord : une carte s'affiche sous la réponse avec l'outil et tous ses arguments ; seul Autoriser fait partir l'appel. Refuser, ne pas répondre en 5 minutes ou arrêter la réponse (Stop, ⌘.) vaut refus, et les autres actions de la même réponse sont alors écartées.

Tohru reconnaît un outil qui agit par ses annotations MCP (readOnlyHint, destructiveHint), sinon par le verbe de tête de son nom (send_…, delete_…, create_…, ajouter_……). Le réglage de chaque outil dans la fiche du serveur (§ 4.5) corrige ce classement.

6. Pièces jointes, dictée, voix

7. Dépannage

Symptôme Cause et remède
« Apple Intelligence n'est pas disponible » Activez-la (Réglages › Apple Intelligence et Siri) sur un appareil compatible, ou choisissez un modèle à URL.
« Quota d'Apple Intelligence atteint » Le quota du compte iCloud est épuisé pour le moment : attendez la remise à zéro ou basculez sur un modèle à URL.
« Les garde-fous d'Apple Intelligence ont refusé cette demande » Reformulez, ou utilisez un modèle à URL.
Serveur en orange « connexion requise » Le serveur demande de vous identifier : ouvrez sa fiche, S'identifier auprès du serveur… (§ 4.2).
Serveur en orange « jeton refusé (HTTP 401) » Clé d'API absente ou refusée : corrigez Jeton d'accès dans la fiche du serveur (§ 4.2).
Serveur en orange « certificat non reconnu » Certificat auto-signé : ouvrez sa fiche et vérifiez l'empreinte présentée avant de lui faire confiance (§ 4.3), ou collez le certificat de l'autorité.
Serveur en orange « … ne correspond pas à l'empreinte attendue » Le serveur présente un autre certificat que celui accepté : ne faites confiance au nouveau que si son administrateur vous confirme le changement (§ 4.3).
Fiche : « le serveur enregistré « … » utilise déjà … avec un autre réglage de certificat » Ce serveur a la même adresse (hôte et port) qu'un serveur enregistré dont le certificat accepté est différent : vérifiez l'adresse ; si le certificat a changé, modifiez d'abord le serveur enregistré (§ 4.3).
Serveur en orange « connexion sécurisée impossible avec … » La connexion a été coupée pendant l'échange chiffré (serveur qui redémarre, réseau) : touchez Reconnecter les serveurs. Ce n'est pas un problème de certificat.
Réponse précédée de l'avis « La réponse du modèle s'est interrompue » ou « … elle est peut-être incomplète » Le service du modèle s'est arrêté en cours de réponse : reposez la question.
Rien ne répond sur le réseau local Autorisez « Réseau local » pour Tohru (Réglages › Confidentialité et sécurité › Réseau local).
http:// refusé Le HTTP clair n'est permis que vers le réseau local : utilisez HTTPS pour un serveur sur Internet.

8. Confidentialité

Tohru — User Guide

Tohru is a conversational assistant for Mac, iPhone, iPad, and iPhone Duo. It answers with Apple Intelligence (the Private Cloud Compute server model) right after installation, or with your own model specified by its URL, and it can use the tools of your MCP servers (Model Context Protocol).

  1. First Launch
  2. Choosing the Engine
  3. Using Your Own Model (Inference URL)
  4. Giving Tohru Tools: MCP Servers
  5. Confirming Actions
  6. Attachments, Dictation, Voice
  7. Troubleshooting
  8. Privacy

1. First Launch

Nothing to configure: just ask your question. Tohru uses Apple Intelligence (Private Cloud Compute).

Requirements: a device compatible with Apple Intelligence, Apple Intelligence turned on (Settings › Apple Intelligence & Siri), and an Internet connection. Requests count against the daily quota of your iCloud account; the quota status is shown in Settings › General and in the status panel (the status button at the bottom of the conversation list). The gear ⚙︎ next to it opens Settings; the magnifying glass at the top right of the list searches conversations; a swipe to the left deletes a conversation.

2. Choosing the Engine

Settings › General › Engine (Mac: Tohru menu › Settings…, ⌘, or the gear ⚙︎; iPhone and iPad: the gear ⚙︎ at the bottom of the conversation list). The menu at the bottom of the conversation list also lets you switch at any time.

Engine When to choose it
Apple Intelligence (Private Cloud Compute) Default: no setup, 32,768-token context.
OpenAI-Compatible Model (URL) Local model (Ollama, LM Studio…) or online service: large context, no Apple quota.

Both engines share the conversations, the MCP tools, the System Prompt, and the Temperature (Settings › General). The default prompt follows the device language; “Restore Default Prompt” discards a custom prompt.

3. Using Your Own Model (Inference URL)

Settings › Model by URL:

Field Example Purpose
URL http://192.168.1.20:11434/v1 Address of the OpenAI-compatible API, usually ending in /v1. Tohru calls …/chat/completions and …/models.
Model qwen3:8b Model name. The List button queries …/models and offers the server's models.
Display Name Living room Ollama Optional.
Key Optional: sent as Authorization: Bearer, stored in the keychain (synced through iCloud), never in a file. Not needed for Ollama or LM Studio.
Keychain Account inference Name under which the key is stored.
Context 32768 The model's advertised context window, in tokens.
Reasoning Server Setting Sent as reasoning_effort (none, low, medium, high) to reasoning models.

Save and Use This Model saves it and selects it as the engine; Remove switches back to Apple Intelligence.

Common addresses:

Server URL
Ollama http://<address>:11434/v1 (on the same Mac: http://localhost:11434/v1)
LM Studio http://<address>:1234/v1
vLLM, llama.cpp (llama-server) http://<address>:8000/v1 (port depends on how you launch it)
Online service the provider's “OpenAI-compatible” base URL, with its key

Unencrypted HTTP is accepted only toward the local network (private addresses, .local); a service on the Internet must use HTTPS. With Ollama, expose the server to the network (OLLAMA_HOST=0.0.0.0) and set its context window (OLLAMA_CONTEXT_LENGTH).

4. Giving Tohru Tools: MCP Servers

An MCP (Model Context Protocol) server gives Tohru tools: searching documentation, reading a folder, controlling a service… To add one, its address is all you need: Tohru discovers its tools on its own and, if the server is protected, opens its login page. There is no file to write.

Tohru reaches MCP servers over streamable HTTP (an address usually ending with /mcp). “stdio” servers, launched from the command line, cannot be reached from an iPhone: their provider has to expose them over HTTP (for example with mcp-proxy).

4.1 Adding a Server by Its Address

Settings › MCP Servers › Add a server (Mac: Tohru menu › Settings…, ⌘, or the gear ⚙︎; iPhone and iPad: the gear ⚙︎ at the bottom of the conversation list › MCP Servers).

  1. Paste into Server address the address the provider gave you (https:// is added if missing).
  2. Tap Connect. Tohru queries the server and lists its tools; the Name is taken from the one the server announces, and you can change it. Depending on the server's answer, the sheet shows what is needed, and only that:
  3. a login page opens right away (server protected by OAuth, § 4.2);
  4. the Access token section comes to the front (API-key server, § 4.2);
  5. the Unrecognized certificate section shows the certificate's fingerprint (self-signed certificate, § 4.3).
  6. Tap Save.

For a first try, Add the DeepWiki example adds a public server, with no account, that answers questions about public GitHub repositories. Then ask: “Using DeepWiki, what is the modelcontextprotocol/swift-sdk repository for?”

The list shows each server with its status (number of tools, or an error in orange); selecting it reopens its sheet. Delete this server (at the bottom of the sheet; on iPhone and iPad, also by swiping in the list) removes it after confirmation.

4.2 Servers That Ask You to Sign In

For a protected server, Connect opens the provider's login page directly (account, password, two-factor authentication…), where Tohru introduces itself as Tohru AI. Once you allow access, you return to Tohru and the tools appear:

This sign-in follows the MCP authorization standard (OAuth 2.1 with PKCE). If the provider gave you a client ID, enter it under Advanced options › OAuth client ID; otherwise Tohru identifies itself.

Some servers issue an API key (static token) instead and answer “401” without publishing OAuth metadata. After Connect, the sheet then shows the Access token section at the front, with the message “This server requires an access token: paste it into the “Access token” field, then “Connect”.”:

  1. tap Paste in the Access token section: Tohru connects right away (a token typed in, or pasted into the field with ⌘V, needs Connect); on iPhone and iPad, a token copied on the Mac arrives through Universal Clipboard;
  2. tap Save.

The token is sent as Authorization: Bearer and kept in the keychain; it never appears in a file, a link or a QR code. A rejected token shows “Token rejected by the server (HTTP 401).” Stop sending a token removes it. For a server that did not ask for one, Advanced options › Use a static access token shows the field.

A token pasted by mistake into CA certificate (PEM) is recognized and moved to Access token, with a notice; a certificate pasted into the token field goes to the certificate field.

4.3 Servers with a Self-Signed Certificate

If the system does not recognize the server's certificate (personal server, local network), the sheet shows the Unrecognized certificate section, with Issued to and the SHA-256 fingerprint presented. Compare it with the one the server's administrator gave you (on the server: openssl x509 -in cert.pem -noout -fingerprint -sha256); if they match, tap Trust this certificate. The section becomes Certificate: Tohru will then accept this certificate and no other for this server, including after saving and after a restart. If it changes, the connection is refused (“the certificate of … does not match the expected fingerprint”) and the sheet shows the Expected fingerprint next to the new one. Forget this certificate removes this trust.

The certificate is set for the address (host and port), not for the path: a secure connection only knows the host and the port. Servers at the same address therefore share the same setting. A new server added at an address already in use takes over its setting, and a different certificate is refused there (“the saved server “…” already uses … with a different certificate setting”), even through an add link. If the certificate really changed, edit the saved server first: the trust granted in its sheet then applies to the whole address.

A connection cut off midway (server restarting, network interrupted) is not reported as a certificate problem: the list says “secure connection to … failed”.

For a server signed by a private authority, paste the authority's certificate into Advanced options › CA certificate (PEM) instead.

A provider can publish a link that opens the server's prefilled sheet directly in Tohru, which tries the connection right away. If the link carries auth=bearer (the server expects a token), paste the token into Access token (Paste connects right away, § 4.2); then tap Save.

https://r0o.wtf/tohru/add?url=https%3A%2F%2Fmcp.example.com%2Fmcp&name=example
tohru://add?url=https%3A%2F%2Fmcp.example.com%2Fmcp&name=example&sha256=6B:C1:80:…:68:BB&auth=bearer
Parameter Role
url Required: the server address (https:// added if missing).
name Optional: suggested name.
sha256 Optional: SHA-256 fingerprint of the server's certificate (64 hexadecimal digits, with or without “:” between pairs, upper or lower case). Tohru shows it in the Certificate section and pins it: the connection only succeeds if the server presents this certificate; otherwise it is refused with a clear message. An invalid fingerprint is ignored, with a notice. A link never changes on its own the certificate accepted for an address (host and port) that is already saved: a different fingerprint is shown there, never applied (below and § 4.3).
auth=bearer Optional: the server expects a static token; the sheet opens with the Access token section at the front.

Encode every value (encodeURIComponent). The token is never part of a link: a parameter that would carry one (token, access_token…) is ignored, and the sheet says so; a token or password slipped into the address itself (…/mcp?token=…, https://user:token@…) is removed from it, with a notice. The token is pasted into the sheet (Universal Clipboard between the Mac and the iPhone or iPad). The https:// link opens in Tohru when the app is installed, and otherwise shows a page that leads to it; it passes its whole query to the app. Existing links (url alone, url and name) remain valid.

Server already saved. If the link points to a server you already have (same address and same path), Tohru reopens its sheet instead of adding a second one: paste the new token there if you were given one, then tap Save; nothing changes before that. If the link's fingerprint differs from the one accepted for that address, the sheet shows both (Add link fingerprint section) and keeps the saved fingerprint: the accepted certificate only changes if you trust the one the server actually presents (Trust this certificate), then tap Save. A link to another path at the same address adds a second server, with a unique suggested name (docs2…).

4.5 Setting a Server's Tools

After Connect, the sheet lists the server's tools. Each one can be set to Offered (the model may call it), With confirmation (a card asks for your approval at every call) or Hidden (never offered to the model). A tool that writes, sends or deletes already asks for confirmation (§ 5).

4.6 What Tohru Does with Your Servers

4.7 For MCP Server Providers

So that your users only have an address to paste:

5. Confirming Actions

A tool that acts (writes, sends, deletes, issues commands…) is never run without your consent: a card appears below the reply showing the tool and all of its arguments; only Allow sends the call. Declining, not answering within 5 minutes, or stopping the reply (Stop, ⌘.) counts as a refusal, and the other actions in the same reply are then discarded.

Tohru recognizes a tool that acts by its MCP annotations (readOnlyHint, destructiveHint), or otherwise by the leading verb of its name (send_…, delete_…, create_…, ajouter_……). Each tool's setting in the server's sheet (§ 4.5) overrides this classification.

6. Attachments, Dictation, Voice

7. Troubleshooting

Symptom Cause and fix
“Apple Intelligence is not available” Turn it on (Settings › Apple Intelligence & Siri) on a compatible device, or choose a model by URL.
“Apple Intelligence quota reached” The iCloud account's quota is used up for now: wait for it to reset or switch to a model by URL.
“Apple Intelligence’s guardrails declined this request” Rephrase, or use a model by URL.
Server in orange, “sign-in required” The server asks you to sign in: open its sheet, Sign in to the server… (§ 4.2).
Server in orange, “token rejected (HTTP 401)” API key missing or rejected: correct Access token in the server's sheet (§ 4.2).
Server in orange, “unrecognized certificate” Self-signed certificate: open its sheet and check the fingerprint shown before trusting it (§ 4.3), or paste the authority's certificate.
Server in orange, “… does not match the expected fingerprint” The server presents a different certificate from the one accepted: only trust the new one if its administrator confirms the change (§ 4.3).
Sheet: “the saved server “…” already uses … with a different certificate setting” This server has the same address (host and port) as a saved server whose accepted certificate is different: check the address; if the certificate changed, edit the saved server first (§ 4.3).
Server in orange, “secure connection to … failed” The connection was cut during the encrypted exchange (server restarting, network): tap Reconnect Servers. It is not a certificate problem.
Reply preceded by the notice “The model’s reply was interrupted” or “… the reply may be incomplete” The model's service stopped mid-reply: ask the question again.
Nothing responds on the local network Allow “Local Network” for Tohru (Settings › Privacy & Security › Local Network).
http:// rejected Plain HTTP is allowed only toward the local network: use HTTPS for a server on the Internet.

8. Privacy