Reachy Mini に MCP ツールの追加を発表
Hugging Face は、Reachy Mini ロボットが MCP プロトコルを通じてパブリックな Spaces にホストされたツールを直接呼び出せる機能を追加し、コードの再配布なしでロボットの機能拡張を可能にした。
キーポイント
MCP を介した外部ツールの統合
Reachy Mini が MCP(Model Context Protocol)を使用して、Hugging Face Spaces にホストされた外部ツール(例:天気予報、ウェブ検索)をリアルタイムで呼び出せるようになった。
ローカル環境への影響なし
ツールは Spaces 上で実行されるため、ユーザーのローカルマシンにコードをダウンロードする必要がなく、セキュリティと管理が容易になっている。
ワンコマンドでの拡張機能追加
開発者は `reachy-mini-conversation-app tool-spaces add` コマンド一つで新しい機能を追加でき、複雑なコード編集なしでロボットの能力を即座に強化できる。
ツールエコシステムの共有と公開
ユーザーは独自のツールを作成して Hugging Face Hub に公開し、他の人がそれらを Reachy Mini で利用できるようにするコミュニティベースの生態系が構築される。
Hugging Face Spaces を活用した外部ツールの追加
MCP を介して Hugging Face のパブリックスペースからツールを追加でき、コードをダウンロードせずに天気検索やウェブ検索などの新機能を即座に付与できます。
ワンコマンドでのツール登録と実行
'reachy-mini-conversation-app tool-spaces add' コマンドでツールを追加し、通常通りアプリを起動するだけで、自然言語による指示(例:天気問い合わせ)が可能になります。
ロボットの行動を制御する内蔵ツールの仕組み
モデルは名前と説明を持つツールを読み込み、会話の文脈に応じて感情表現や首の動き、カメラ操作などを自律的に実行します。
影響分析・編集コメントを表示
影響分析
この発表は、物理ロボットと大規模言語モデル(LLM)の連携において、分散型ツールエコシステムの確立に向けた重要な一歩です。特に、コードの再配布を不要にするアーキテクチャにより、開発者が迅速に機能をテスト・展開できるため、ロボットの応用範囲が劇的に拡大すると予想されます。
編集コメント
MCP の採用により、ロボットの機能拡張が「コードの書き換え」から「ツールの選択」へとパラダイムシフトしました。これは、エッジデバイスとクラウド AI を連携させる際の標準的なベストプラクティスとして定着する可能性が高いです。
image
*Reachy Mini はもはや窓の外を覗かなくても、天気をお伝えできます*
Reachy Mini の会話アプリでは、MCP を介して呼び出されるパブリックな Hugging Face Spaces にホストされたツールを利用できるようになりました。Hub からスペースを追加するだけで、天気を確認したりウェブを検索したりといったロボットの新しい能力を与えることができます。ツールはスペース内で継続して実行されるため、コードをあなたのマシンにダウンロードする必要はありません。また、他の人が利用できるように自分自身のツールも公開できます。
ツールの追加には 1 つのコマンドを実行するだけです:
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool
次に、通常通りアプリを起動します:
reachy-mini-conversation-app
これで以下のように質問できるようになります:
今日のパリのお天気はどうですか?
以下では、ツールとは何か、プロファイルがロボットの利用可能範囲をどのように制御するか、そしてリモートパスの現在の制限について解説します。
組み込みツール
ロボットに話しかけたとき、返ってくるのは音声だけではありません。会話に応じて反応するシステムです:状況に応じれば、ロボットは動き、非言語的な反応も示します。ここで焦点を当てたいのは、それを実現するためのツールです。ツールとは、モデルが会話中に実行できる機能のことです:感情を表現する、首を動かす、カメラで映像を確認するなど。各ツールには名前と短い説明が付いています。モデルはこれらを読み、どのタイミングで有用かを判断し、呼び出し、その結果を利用します。
現在、すべてのツールはローカル環境にあり、アプリ内に同梱されています。また、それらの多くはロボットの身体に関するものです:
ツール
機能
move_head
首の姿勢変更をキューに入れる
dance / stop_dance
ダンスライブラリからダンスを再生または停止する
play_emotion / stop_emotion
録音された感情クリップを再生またはクリアする
head_tracking
首追跡オフセットの切り替え
camera
フレームを取得して分析する
idle_do_nothing
アイドルターンで明示的に何もしない状態を維持する
プロファイルによるツールの制御
コード内のツールは、プロファイルで有効化されるまで使用できません。プロファイルとは、ここでは2 つの重要なファイルを含むフォルダです:instructions.txt(プロンプト)と tools.txt(有効にするツールリスト)。
デフォルトのプロファイルでは、以下の全セットが有効になっています:
profiles/default/tools.txt
dance
stop_dance
play_emotion
stop_emotion
camera
idle_do_nothing
head_tracking
move_head
tools.txt に名前が含まれていない場合、モデルはそのツールを呼び出すことができません。
独自のツールも作成できます:プロファイル(または external_tools/)に Python ファイルを追加し、名前と説明を付与した上で、その名前を tools.txt に記載してください。
現在、組み込みツールとカスタムローカルツールが存在し、tools.txt によってどちらが有効かが決定されます。これはロボットの本体部分にはよく機能し、信頼できるコア部分を小さく保つことができます。
ローカルツールの限界
ここで重要なのは、すべてのツールがローカルの Python でなければならないという制約です。move_head や play_emotion の場合はその通りで、これらはハードウェアと通信しアプリに属しますが、多くの有用な機能はロボットの身体とは無関係です。例えばウェブ検索、天気予報、またはデータ参照などが該当します。これらの場合、すべてをローカルに保つことは主に摩擦を生みます:
- ツールを共有するには、Python ファイルを手渡す必要がある
- 更新するには、そのファイルを送信し直す必要がある
- 変更するにはアプリを編集する必要があるが、実際にはその機能はアプリとは独立している
Spaces からのツール呼び出し
リモートツールは、既存の組み込みツールとカスタムローカルツールの他に第 3 の種類を追加し、独自に公開・共有・更新しやすい機能を提供します:
- 組み込みロボットツールはローカルかつ信頼できるまま
- 共有可能なリモートツールは、パブリックな Hugging Face Spaces に配置可能
- external_tools/ からカスタムのワンオフツールも引き続き使用可能
これは検索、天気予報、データ参照といったステートレスな機能に非常に適しています。アプリ自体に触れずに反復改善したいあらゆる機能に対応します。また、誰でも互換性のある Space を公開できるため、ツールの共有や相互の成果に基づく開発が容易になります。
新しいフローを実行するために、2 つのカナリツール(小規模なテスト用ツール)から始めました:
- pollen-robotics/reachy-mini-search-tool
- pollen-robotics/reachy-mini-weather-tool
これらだけで機能全体を試し尽くすことができます。つまり、Hub からのインストール、リモートツールの検出、プロファイルごとの有効化、そしてリアルタイムバックエンドが組み込みツールと同じようにこれらのツールを呼び出すことまでです。
両方を同時に使用するには、同じプロファイルにそれぞれのスペースとそのツールスタックを追加します:
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-search-tool
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool
これでロボットは、同じ会話の中でウェブ検索と天気確認を両方行うことができます。これは、以下の canary_web_search_weather プロファイルがまさに実行していることです。
インストール、一覧表示、削除
アクティブなプロファイルでインストール+有効化
reachy-mini-conversation-app tool-spaces add <owner/space-name>
特定のプロファイルで有効化
reachy-mini-conversation-app tool-spaces add <owner/space-name> --profile <NAME>
有効化せずにインストールのみ
reachy-mini-conversation-app tool-spaces add <owner/space-name> --install-only
インストール済みスペースの一覧表示
reachy-mini-conversation-app tool-spaces list
インストール済みスペースの削除
reachy-mini-conversation-app tool-spaces remove <owner/space-name>
add は Hub 上の Space を検証し、MCP エンドポイントをプローブしてそのツールを特定し、デフォルトではアクティブなプロファイルの tools.txt にツール ID を追加します。REACHY_MINI_CUSTOM_PROFILE を設定していない限り、このプロファイルはデフォルトとして使用されます。このステップをスキップするには --install-only オプションを使用してください。
tools.txt はゲートキーパーです:リモートツールがアクティブになるのは、その ID がプロファイルの tools.txt に記載されている場合に限られます。これは、あなたが望むビルトインツールのリストと併記されます。
マニフェストの場所
インストールされたソースは以下に永続化されます:
- 管理アプリモードでは installed_tool_spaces.json
- ターミナルモードでは external_content/installed_tool_spaces.json
ツール名の命名規則
各インストールされた Space には、そのスラッグから派生したローカルエイリアスが割り当てられます。ハイフン、ドット、スラッシュはすべてアンダースコアに変換されます:
pollen-robotics/reachy-mini-search-tool → pollen_robotics_reachy_mini_search_tool
その後、リモートツールにはダブルアンダースコアで名前空間が付与されます:
pollen_robotics_reachy_mini_search_tool__search_web
pollen_robotics_reachy_mini_weather_tool__get_day_brief
これにより、リモートツールの名称がビルトインツールと競合することが防がれ、複数の Space を同じプロファイル内で共存させることが可能になります。
実装では、可能な限り冗長な Space 名プレフィックスを削除するため、冗長なリモートツール名はより簡潔なローカル ID に変換されます。もしこの削除により同一の Space から来た 2 つのツールの間で競合が生じる場合、コードは完全に名前空間付きの名前にフォールバックします。
レジストリレベルにも重複した安全性チェックが存在します。Tool.name の値は、マージされたツールセット全体で一意である必要があります。2 つのソースが同じ名前を主張した場合、アプリケーションは即座に失敗します。
例のプロファイル
今回の作業では、MCP 実験を完全な具現化型ツールセットから分離するために、2 つの焦点を絞ったカナリアプロファイルを作成しました。
1 つ目は、いくつかの表現力豊かなツール(感情、頭部の動き)を保持し、その上にウェブ検索を追加したものです:
profiles/canary_web_search/tools.txt
play_emotion
stop_emotion
idle_do_nothing
move_head
pollen_robotics_reachy_mini_search_tool__search_web
2 つ目はこれに、検索 alongside 天気予報ツールを加えたものです:
profiles/canary_web_search_weather/tools.txt
play_emotion
stop_emotion
idle_do_nothing
move_head
pollen_robotics_reachy_mini_search_tool__search_web
pollen_robotics_reachy_mini_weather_tool__get_day_brief
物理的なツールのセットが小さいため、Reachy Mini はウェブからの現在の質問に答える際にも、依然として表現豊かに反応することができます。
プロンプトの重要性
リモートツールの配管(接続)によりツールがモデルに導入されます。プロンプトは、そのモデルがそれらをどのように使用するかを決定します。
これは特に、検索と天気の組み合わせカナリアにおいて顕著でした。以下のような複合的な質問の場合:
Should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?
少なくとも以下の3つの方法で処理できます:まず天気を確認してその後検索を行う、まず検索してから天気を確認する、あるいは同じターン内で両方を実行するものです。プロンプトが曖昧な場合、モデルは呼び出しを直列化して不要な遅延を生み出してしまいます。そのため、カニバリ(canary)プロンプトは単なる付随的な設定ではなく、機能の一部として組み込まれるようになりました。
canary_web_search/instructions.txt
[default_prompt]
CANARY WEB SEARCH RULES
あなたは現在ウェブ情報を取得するためのリモートツールを1つだけ持っています。
ユーザーが最新の情報、ニュース、ライブでの利用可能性、あるいは最近変更された可能性がある事柄について質問した際にこれを使用してください。
検索結果ですでに質問への回答が得られる場合は、平易な言語で直接回答してください。
ツールの動作に関する説明から始めるのではなく、まず答えを提示してください。
リモート参照には少し時間がかかる可能性がある場合、「確認してすぐ戻ります」のような非常に短い英語の一言で了承を示し、その後続けても構いません。ユーザーが明示的に別の言語を要求しない限り、英語で回答してください。
結果のスニペットが不完全または曖昧な場合は、不確実性を簡潔に言及してください。
リンクは価値を加える場合か、ユーザーが情報源を求めている場合にのみ言及してください。
応答は短く、音声アシスタントが読み上げるような口語調に保ってください。通常1〜2文で十分です。前置き、リスト、見出し、および filler(つなぎ言葉)は省略し、ユーザーが必要とする事実または直接的な回答だけを提示してください。
canary_web_search_weather/instructions.txt
[default_prompt]
CANARY SEARCH AND WEATHER RULES
あなたは 2 つの遠隔ツールを持っています:
- 場所ごとのコンパクトな日別天気予報用の天気予報ブリーフィングツール
- より広範な現在のウェブ情報用のウェブ検索ツール
今日の気象条件、気温、降雨確率、日の出・日の入り、またはジャケットを持参すべきかなどシンプルなアドバイスについては、天気予報ツールを使用してください。
ニュース、イベント、営業時間、旅行情報、深刻な警報、あるいはより広範な現在の文脈については、ウェブ検索ツールを使用してください。
ユーザーの質問に天気の部分と現在の情報の部分が混在している場合(例:「今日ボルドーでジャケットを持参すべきか、そして今夜ダウンタウンで何か大きなイベントがあるか」)、両方のツールを並列で同じターン内で呼び出してください。天気の結果が検索範囲を絞り込むために必要な場合を除き、一方の結果を待ってから他方を開始する必要はありません。
その後、結果を 1 つの短い回答に統合します。天気の部分を先に扱い、その後にイベントやニュースの部分について、自然な接続された文章で記述してください。セクションをラベル付けしたり、どのツールがどの情報を提供したかを言及したりしないでください。
ユーザーがイベント、ニュース、あるいは現在何が起きているかについて質問する場合、検索結果から実際の回答を提供してください。具体的なイベント名、会場、見出しを挙げてください。ユーザーにウェブサイトを閲覧したり、リストサイトを訪れたり、自分で調べたりするよう指示しないでください。もし検索で具体的な情報が得られなかった場合は、他へ誘導するのではなく、目立ったイベントは見つかりませんでしたと率直に述べてください。
一時的に時間を要する可能性のあるリモート参照を行う場合は、"確認してすぐ戻ります"といった非常に短い英語の応答を一つ与えた後、続けてください。
ユーザーが明示的に別の言語を要求しない限り、英語で回答してください。
ツール使用については、ユーザーから質問がない限り言及しないでください。
応答は短く、音声アシスタントが読み上げるような口調に保ってください。通常、1〜2文あれば十分です。前置き、リスト、見出し、および filler は省略し、ユーザーが必要とする事実または直接的な回答のみを提供してください。
今日できることとできないこと
| 機能 | サポート状況 |
|---|---|
| パブリックで MCP 互換の Gradio Spaces(標準 /gradio_api/mcp/ エンドポイント)をスラッグでインストール | ✅ |
| 複数の Spaces を同時に処理 | ✅ |
| tools.txt を介したプロファイルごとの有効化 | ✅ |
| ネームスペース付きのリモートツール ID | ✅ |
| バックエンド非依存の登録(OpenAI、Gemini、Hugging Face) | ✅ |
| ローカルアプリへの任意コードのダウンロードなし | ✅ |
| プライベートまたは認証が必要な Spaces | ❌ |
| Gradio 以外の Spaces | ❌ |
| 任意の生 MCP URL または Hugging Face 以外の MCP サーバー | ❌ |
| 保証された並列ツールオーケストレーション | ❌ |
2 つのポイントに言及する価値があります。第一に、Spaces は実際に MCP サーバーとして動作している必要があります。ツール発見に失敗するとインストールも失敗します。第二に、プロンプト指示は並列呼び出しを促すことはできますが、保証することはできません。決定論的なオーケストレーションがユースケースで重要である場合、そのロジックはプロンプトからコードへ移行する必要があります。
ツール Space を公開するためのヒント
ツールを他者に利用していただくには、標準的な MCP エンドポイントを公開するパブリックな Gradio Space として公開し、ツールはステートレス(状態を持たない)に保ち、ネットワーク上でも円滑に動作するようにしてください。Space のインストール可否はこのランタイムの挙動によって決まり、タグによるものではありません。
インストールにはタグが必須ではありませんが、互換性のある Space を見つける際に役立ちます:
- reachy-mini-tool
- mcp
結論
現在、このアプリは1つのレジストリを共有する3種類のツール(組み込み、ローカルカスタム、リモート MCP ツール)をサポートしており、どのツールが特定のアシスタントにアクセス可能かはプロファイルによって決定されます。小さく信頼性の高いコアが中心にあり、その周囲のオプション機能はアプリ自体に触れることなく追加・テスト・交換が可能です。
今最も興味を持っているのは、人々がどのようなものを構築するかです。ツール Space を公開する際は、reachy-mini-tool と mcp のタグを付けてください。そうすれば他者がそれを見つけやすくなります。Reachy Mini が最終的に何を実現できるか、ぜひ見てみたいと思います!
*謝辞:本稿の校閲とワークフローのテストにご協力いただいた Fabien Danieau 氏、テスト支援をいただいた Andres Marafioti 氏、そしてリモートツールワークフローの構築にアイデアとフィードバックを提供された Remi Fabre 氏および Pollen Robotics チームに心より感謝いたします。*
原文を表示

The Reachy Mini conversation app can now use tools hosted in public Hugging Face Spaces, called over MCP. You can give your robot a new ability, like checking the weather or searching the web, by adding a Space from the Hub instead of editing the app. The tool keeps running in the Space itself, so no code is downloaded onto your machine. And you can publish your own tools for other people to use.
Adding a tool takes one command:
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool
Then start the app as usual:
reachy-mini-conversation-app
Now you can just ask:
What's the weather in Paris today?
Below, we look at what a tool is, how profiles control what the robot can use, and the current limits of the remote path.
Built-in tools
When you talk to the robot, what you get back isn't only a voice, it's a system that reacts to the conversation: the robot can move and respond non-verbally, when it's applicable. The part we want to focus on here is the tools that make that possible. A tool is something the model can do during a conversation: play an emotion, move the head, look through the camera. Each tool has a name and a short description. The model reads those, decides when one is useful, calls it, and uses what comes back.
Today every tool is local and ships inside the app, and most of them are about the robot's body:
Tool
What it does
move_head
Queue a head pose change
dance / stop_dance
Play or clear a dance from the dances library
play_emotion / stop_emotion
Play or clear a recorded emotion clip
head_tracking
Toggle head-tracking offsets
camera
Capture a frame and analyze it
idle_do_nothing
Explicitly stay idle on an idle turn
How profiles control tools
A tool in the code isn't usable until it's enabled in a profile, a folder with two files that matter here: instructions.txt (the prompt) and tools.txt (the tools that are turned on).
The default profile enables the full set:
# profiles/default/tools.txt
dance
stop_dance
play_emotion
stop_emotion
camera
idle_do_nothing
head_tracking
move_head
If a name isn't in tools.txt, the model can't call it.
You can also write your own tool: add a Python file to the profile (or external_tools/), give it a name and description, and list that name in tools.txt.
Today there are built-in tools and custom local tools, and tools.txt decides which are active. This works well for the robot's body and keeps the trusted core small.
The limits of local tools
The constraint here is that every tool has to be local Python. For move_head or play_emotion that's right: they talk to the hardware and belong in the app but a lot of useful things have nothing to do with the body, like web search, weather, or lookups. For those, keeping everything local is mostly friction:
- sharing a tool means handing someone your Python files
- updating it means sending those files again
- changing it means editing the app, even though the capability is really separate from it
Calling tools from Spaces
Remote tools add a third kind, alongside the built-in and custom local tools you already have, for capabilities that are easier to publish, share, and update on their own:
- built-in robot tools stay local and trusted
- shareable remote tools can live in public Hugging Face Spaces
- you can still use custom one-off tools from external_tools/
It's a good fit for stateless capabilities like search, weather, and lookups: anything you want to iterate on without touching the app itself. And because anyone can publish a compatible Space, it's easy to share tools and build on each other's work.
We started with two canary tools, small test tools to exercise the new flow:
- pollen-robotics/reachy-mini-search-tool
- pollen-robotics/reachy-mini-weather-tool
They're enough to exercise the whole feature: install from the Hub, discover the remote tools, enable them per profile, and let the realtime backend call them exactly like built-in tools.
To use both at once, add each Space and their tools stack in the same profile:
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-search-tool
reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool
Now the robot can search the web and check the weather in the same conversation, which is exactly what the canary_web_search_weather profile below does.
Install, list, remove
# install + enable in active profile
reachy-mini-conversation-app tool-spaces add <owner/space-name>
# enable in a specific profile
reachy-mini-conversation-app tool-spaces add <owner/space-name> --profile <NAME>
# install without enabling
reachy-mini-conversation-app tool-spaces add <owner/space-name> --install-only
# list installed spaces
reachy-mini-conversation-app tool-spaces list
# remove an installed space
reachy-mini-conversation-app tool-spaces remove <owner/space-name>
add validates the Space on the Hub, probes the MCP endpoint, discovers its tools, and by default appends the tool IDs to the active profile's tools.txt. The active profile is default unless you've set REACHY_MINI_CUSTOM_PROFILE. Use --install-only to skip that step.
tools.txt is the gatekeeper: a remote tool is only active if its ID appears in the profile's tools.txt, alongside whatever built-in tools you want.
Where the manifest lives
Installed sources are persisted in:
- installed_tool_spaces.json in managed app mode
- external_content/installed_tool_spaces.json in terminal mode
Tool naming
Each installed Space gets a local alias derived from its slug, with hyphens, dots, and slashes collapsing to underscores:
pollen-robotics/reachy-mini-search-tool → pollen_robotics_reachy_mini_search_tool
Remote tools are then namespaced with a double underscore:
pollen_robotics_reachy_mini_search_tool__search_web
pollen_robotics_reachy_mini_weather_tool__get_day_brief
This keeps remote tool names from colliding with built-in ones and lets multiple Spaces coexist in the same profile.
The implementation also strips redundant Space-name prefixes when possible, so a verbose remote tool name becomes a cleaner local ID. If stripping would cause a collision between two tools from the same Space, the code falls back to the fully namespaced name.
There is also a duplicate safety check at registry level: Tool.name values must be unique across the entire merged tool set. The app fails fast if two sources claim the same name.
Example profiles
For this work we created two focused canary profiles to isolate the MCP experiment from the full embodied tool set.
The first keeps a few expressive tools (emotions, head movement) and adds web search on top:
# profiles/canary_web_search/tools.txt
play_emotion
stop_emotion
idle_do_nothing
move_head
pollen_robotics_reachy_mini_search_tool__search_web
The second is the same, plus the weather tool alongside search:
# profiles/canary_web_search_weather/tools.txt
play_emotion
stop_emotion
idle_do_nothing
move_head
pollen_robotics_reachy_mini_search_tool__search_web
pollen_robotics_reachy_mini_weather_tool__get_day_brief
The small physical tool set means Reachy Mini can still react expressively while answering current questions from the web.
Why the prompts matter
The remote-tool plumbing gets the tools into the model. The prompts decide how the model uses them.
That was especially visible in the search-plus-weather canary. A combined question like:
Should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?
can be handled in at least three ways: weather first then search, search first then weather, or both in the same turn. If the prompt is vague, the model serialises the calls and creates unnecessary latency. So the canary prompts became part of the feature, not just incidental configuration.
canary_web_search/instructions.txt
[default_prompt]
## CANARY WEB SEARCH RULES
You have one remote tool for current web information.
Use it when the user asks for up-to-date facts, news, live availability, or anything else that may have changed recently.
When the search result already answers the question, answer directly in plain language.
Lead with the answer, not with tool chatter.
For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Mention uncertainty briefly if the result snippet is incomplete or ambiguous.
Only mention links when they add value or the user asks for sources.
Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.
canary_web_search_weather/instructions.txt
[default_prompt]
## CANARY SEARCH AND WEATHER RULES
You have two remote tools:
- a weather brief tool for compact day weather at a location
- a web search tool for broader current web information
Use the weather tool for today's conditions, temperature, rain chance, sunrise, sunset, or simple advice like whether to bring a jacket.
Use web search for news, events, business hours, travel information, severe alerts, or broader current context.
When the user's question mixes a weather part and a current-info part (for example, "should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?"), call both tools in parallel in the same turn. Do not wait for one result before starting the other unless the weather result is needed to narrow the search.
Then merge the results into a single short answer. Cover the weather part first, then the events or news part, in plain connected sentences. Do not label the sections or mention which tool gave which piece.
When the user asks about events, news, or what is happening, give them the actual answer from the search results: name specific events, venues, or headlines. Do not tell the user to check websites, visit listing sites, or look something up themselves. If the search returns nothing concrete, say plainly that you didn't find any notable events, rather than redirecting them elsewhere.
For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Do not talk about tool usage unless the user asks.
Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.
What works today, and what doesn't
Capability
Supported
Install by slug for public, MCP-compatible Gradio Spaces (standard /gradio_api/mcp/ endpoint)
✅
Multiple Spaces at once
✅
Per-profile enablement via tools.txt
✅
Namespaced remote tool IDs
✅
Backend-agnostic registration (OpenAI, Gemini, Hugging Face)
✅
No arbitrary code downloaded into the local app
✅
Private or authenticated Spaces
❌
Non-Gradio Spaces
❌
Arbitrary raw MCP URLs or non-Hugging Face MCP servers
❌
Guaranteed parallel tool orchestration
❌
Two things are worth calling out. First, the Space has to actually behave like an MCP server; if tool discovery fails, the install fails. Second, prompt instructions can encourage parallel calls but cannot guarantee them. If deterministic orchestration matters for a use case, that logic should move from the prompt into code.
Tips for publishing a tool Space
If you want others to use your tool, publish it as a public Gradio Space that exposes the standard MCP endpoint, and keep the tools stateless so they work well over the network. Whether a Space installs depends on this runtime behavior, not on tags.
Tags aren't required for installation, but they help people find compatible Spaces:
- reachy-mini-tool
- mcp
Conclusion
The app now has three kinds of tools sharing one registry: built-in, local custom, and remote MCP tools, and profiles still decide which of them a given assistant can reach. A small, trusted core stays at the center while the optional capabilities around it can be added, tested, and swapped without touching the app itself.
What we're most curious about now is what people build. If you publish a tool Space, tag it reachy-mini-tool and mcp so others can find it. We'd love to see what Reachy Mini ends up able to do!
*Acknowledgements: Many thanks to Fabien Danieau for proofreading this post and helping test the workflow, to Andres Marafioti for helping test it, and to Remi Fabre and the Pollen Robotics team for the ideas and feedback that shaped the remote tools workflow.*
関連記事
Reachy Mini が完全ローカル動作へ
Hugging Face は、ロボット「Reachy Mini」のソフトウェアをクラウド依存から切り離し、端末上で完全にローカルで動作可能にするアップデートを発表した。これにより、通信環境に依存しない自律制御が可能となる。
Amazon Bedrock AgentCore に Web 検索機能を導入
AWS は、学習データに依存して最新情報を取得できない AI エージェントの課題を解決するため、Amazon Bedrock AgentCore に Web 検索機能を一般提供開始した。これによりエージェントはリアルタイムの株価やニュースなどを参照可能になった。
Adobe Marketing Agent for Amazon Quick によるキャンペーンワークフローの加速
AWS と Adobe は、Amazon Quick と Adobe Marketing Agent を連携させることで、マーケティングチームが自然言語で質問するだけで、ガバナンスされた会話環境内で数秒以内にキャンペーンのパフォーマンスやオーディエンスに関するインサイトにアクセスできるようにした。
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み