---
read_when:
    - आप चाहते हैं कि OpenClaw एजेंट प्रॉम्प्ट में हर टूल स्कीमा जोड़े बिना एक बड़े टूल कैटलॉग का उपयोग करें
    - आप OpenClaw टूल्स, MCP टूल्स और क्लाइंट टूल्स को एक संक्षिप्त रनटाइम इंटरफ़ेस के माध्यम से उपलब्ध कराना चाहते हैं
    - आप OpenClaw रन के लिए टूल खोज को लागू कर रहे हैं या डीबग कर रहे हैं
summary: 'टूल खोज: बड़े OpenClaw टूल कैटलॉग को खोज, विवरण और कॉल के पीछे संक्षिप्त करें'
title: टूल खोज
x-i18n:
    generated_at: "2026-07-27T20:10:33Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: d31322d5ef108c52fd14d48771cc3c6c43fcfbc4bfb95652bc29a55fd706c903
    source_path: tools/tool-search.md
    workflow: 16
---

Tool Search एक प्रायोगिक OpenClaw एजेंट रनटाइम सुविधा है। यह एजेंटों को बड़े टूल कैटलॉग खोजने और उन्हें कॉल करने का एक
संक्षिप्त तरीका प्रदान करती है। यह तब उपयोगी है जब रन में
कई टूल उपलब्ध हों, लेकिन मॉडल को संभवतः उनमें से केवल कुछ की आवश्यकता हो।

यह पृष्ठ OpenClaw Tool Search का दस्तावेज़ीकरण करता है। यह Codex-नेटिव टूल
सर्च या डायनेमिक-टूल्स सतह नहीं है। Codex-नेटिव कोड मोड, टूल सर्च, स्थगित
डायनेमिक टूल और नेस्टेड टूल कॉल स्थिर Codex हार्नेस सतहें हैं और
`tools.toolSearch` पर निर्भर नहीं हैं।

Tool Search नियंत्रणों के बजाय QuickJS-WASI `exec`/`wait`
सतह उपलब्ध कराने वाले सामान्य OpenClaw रनटाइम के लिए, [कोड मोड](/hi/tools/code-mode) देखें।

OpenClaw रन के लिए सक्षम होने पर, मॉडल को डिफ़ॉल्ट रूप से एक `tool_search_code` टूल
मिलता है, साथ ही वे डायरेक्ट-ओनली टूल भी मिलते हैं जिनके संरचित परिणाम
संक्षिप्त ब्रिज को पार नहीं कर सकते। कोड टूल एक पृथक
Node सबप्रोसेस में `openclaw.tools` ब्रिज के साथ एक छोटा JavaScript भाग चलाता है:

```js
const hits = await openclaw.tools.search("GitHub इश्यू बनाएँ");
const tool = await openclaw.tools.describe(hits[0].id);
return await openclaw.tools.call(tool.id, {
  title: "स्टार्टअप पर क्रैश",
  body: "पुनरुत्पादन के चरण...",
});
```

कैटलॉग में कैटलॉग-योग्य OpenClaw टूल, Plugin टूल, MCP
टूल और क्लाइंट द्वारा प्रदान किए गए टूल शामिल हो सकते हैं। मॉडल हर कैटलॉग किए गए स्कीमा को
पहले से नहीं देखता। इसके बजाय, वह संक्षिप्त विवरणकों में खोज करता है, सटीक स्कीमा की
आवश्यकता होने पर किसी चयनित टूल का विवरण प्राप्त करता है और उस टूल को OpenClaw के माध्यम से कॉल करता है।
डायरेक्ट-ओनली टूल मॉडल को दिखाई देते रहते हैं और कैटलॉग में नहीं जोड़े जाते।

Codex हार्नेस रन को ये प्रायोगिक OpenClaw Tool Search
नियंत्रण नहीं मिलते। OpenClaw उत्पाद क्षमताओं को डायनेमिक टूल के रूप में Codex को देता है और
स्थिर नेटिव कोड मोड, नेटिव टूल सर्च, स्थगित डायनेमिक
टूल तथा नेस्टेड टूल कॉल का स्वामित्व Codex के पास होता है।

## एक टर्न कैसे चलता है

योजना बनाते समय OpenClaw का एम्बेडेड रनर रन के लिए प्रभावी कैटलॉग
बनाता है:

1. एजेंट, प्रोफ़ाइल, सैंडबॉक्स और सेशन के लिए सक्रिय टूल नीति का समाधान करें।
2. योग्य OpenClaw और Plugin टूल सूचीबद्ध करें।
3. सेशन MCP रनटाइम के माध्यम से योग्य MCP टूल सूचीबद्ध करें।
4. वर्तमान रन के लिए प्रदान किए गए योग्य क्लाइंट टूल जोड़ें।
5. डायरेक्ट-ओनली टूल को मॉडल के लिए दृश्यमान रखें और
   शेष कैटलॉग-योग्य टूल के संक्षिप्त विवरणकों को इंडेक्स करें।
6. उन डायरेक्ट-ओनली टूल के साथ OpenClaw कोड ब्रिज, संरचित फ़ॉलबैक टूल या
   संक्षिप्त डायरेक्टरी सतह उपलब्ध कराएँ।

निष्पादन के समय प्रत्येक वास्तविक टूल कॉल OpenClaw पर वापस आता है। पृथक Node
रनटाइम में Plugin कार्यान्वयन, MCP क्लाइंट ऑब्जेक्ट या सीक्रेट नहीं होते।
`openclaw.tools.call(...)` ब्रिज को पार करके Gateway में वापस जाता है, जहाँ
सामान्य नीति, अनुमोदन, हुक, लॉगिंग और परिणाम प्रबंधन अब भी लागू होते हैं।

## मोड

`tools.toolSearch` में मॉडल के लिए तीन मोड हैं:

- `code`: डायरेक्ट-ओनली टूल के साथ डिफ़ॉल्ट संक्षिप्त JavaScript ब्रिज,
  `tool_search_code`, उपलब्ध कराता है।
- `tools`: जिन प्रदाताओं को कोड नहीं मिलना चाहिए, उनके लिए
  `tool_search`, `tool_describe` और `tool_call` को सामान्य संरचित टूल के रूप में,
  डायरेक्ट-ओनली टूल के साथ उपलब्ध कराता है।
- `directory`: जिन प्रदाताओं को प्रत्येक पूर्ण स्कीमा के बिना टूल के नाम
  दिखाई देने चाहिए, उनके लिए `tool_search`, `tool_describe` और `tool_call` के साथ उपलब्ध
  टूल नामों और विवरणों की सीमित प्रॉम्प्ट डायरेक्टरी उपलब्ध कराता है। OpenClaw
  वर्तमान टर्न के लिए संभावित या आवश्यक टूल स्कीमा का एक छोटा सीमित समूह
  सीधे भी उपलब्ध करा सकता है। इस मोड में भी डायरेक्ट-ओनली टूल दृश्यमान रहते हैं।

सभी मोड समान नीति-फ़िल्टर किए गए कैटलॉग और सामान्य OpenClaw निष्पादन
पथ का उपयोग करते हैं। `catalogMode: "direct-only"` के रूप में चिह्नित टूल उस कैटलॉग से बाहर रहते हैं और
मॉडल को दिखाई देते रहते हैं। यदि वर्तमान रनटाइम पृथक Node कोड-मोड चाइल्ड
प्रोसेस लॉन्च नहीं कर सकता, तो डिफ़ॉल्ट `code` मोड कैटलॉग
संक्षिप्तीकरण से पहले `tools` पर फ़ॉलबैक करता है। `directory` मोड में, क्लाइंट द्वारा प्रदान किए गए टूल
वर्तमान रन के लिए सीधे दिखाई देते रहते हैं, जबकि OpenClaw टूल, Plugin टूल और MCP टूल
डायरेक्टरी कैटलॉग के पीछे संक्षिप्त किए जा सकते हैं। किसी सटीक छिपे हुए
डायरेक्टरी नाम पर सीधी कॉल को निष्पादन से पहले उसी अधिकृत कैटलॉग से हाइड्रेट किया जाता है।

सभी मोड प्रायोगिक हैं। छोटे OpenClaw टूल
कैटलॉग के लिए सीधे टूल प्रदर्शन को प्राथमिकता दें और Codex हार्नेस रन के लिए Codex-नेटिव स्थिर सतहों को प्राथमिकता दें।

अलग स्रोत-चयन कॉन्फ़िगरेशन नहीं है। Tool Search सक्षम होने पर,
सामान्य नीति फ़िल्टरिंग के बाद कैटलॉग में कैटलॉग-योग्य OpenClaw, MCP और क्लाइंट टूल
शामिल होते हैं; डायरेक्ट-ओनली टूल अलग रखे जाते हैं।

## यह क्यों मौजूद है

बड़े कैटलॉग उपयोगी, लेकिन महँगे होते हैं। प्रत्येक टूल स्कीमा मॉडल को भेजने से
अनुरोध बड़ा हो जाता है, योजना धीमी होती है और आकस्मिक टूल
चयन बढ़ता है।

Tool Search इसका स्वरूप बदलता है:

- प्रत्यक्ष टूल: मॉडल पहले टोकन से पहले प्रत्येक चयनित स्कीमा देखता है
- Tool Search कोड मोड: मॉडल एक संक्षिप्त कोड टूल, एक छोटा API
  अनुबंध और सभी डायरेक्ट-ओनली टूल देखता है
- Tool Search टूल मोड: मॉडल तीन संक्षिप्त संरचित फ़ॉलबैक
  टूल और सभी डायरेक्ट-ओनली टूल देखता है
- Tool Search डायरेक्टरी मोड: मॉडल एक सीमित डायरेक्टरी के साथ
  सर्च/विवरण/कॉल नियंत्रण, संभावित या आवश्यक स्कीमा का एक छोटा सीमित समूह
  और सभी डायरेक्ट-ओनली टूल देखता है
- टर्न के दौरान: मॉडल आवश्यकतानुसार शेष स्कीमा लोड कर सकता है

छोटे कैटलॉग के लिए प्रत्यक्ष टूल प्रदर्शन अब भी सही डिफ़ॉल्ट है। Tool Search
तब सर्वश्रेष्ठ है जब एक रन कई टूल देख सकता हो, विशेषकर MCP सर्वर या
क्लाइंट द्वारा प्रदान किए गए ऐप टूल से।

## API

`openclaw.tools.search(query, options?)`

वर्तमान रन के प्रभावी कैटलॉग में खोज करता है। परिणाम संक्षिप्त और
प्रॉम्प्ट संदर्भ में वापस रखने के लिए सुरक्षित होते हैं। प्रत्येक परिणाम में एक सीमित TypeScript-शैली
`input` सिग्नेचर शामिल होता है, जैसे `{ id: string; mode?: "drip" | "flood" }`, ताकि
वह सिग्नेचर पर्याप्त होने पर मॉडल `describe` छोड़ सके। विश्वसनीय
OpenClaw कोर या Plugin टूल में संक्षिप्त `output` संकेत भी शामिल हो सकता है, जैसे
`Array<{ id: string; paid: boolean }>`। MCP और क्लाइंट आउटपुट-स्कीमा दावों को
इस विश्वसनीय संकेत में पदोन्नत नहीं किया जाता। उनके अविश्वसनीय इनपुट स्कीमा भी
`input: "unknown"` के रूप में स्थगित रहते हैं; उन्हें कॉल करने से पहले `describe` का उपयोग करें। खुले,
अत्यधिक बड़े या अन्यथा आंशिक आउटपुट स्कीमा संकेत को छोड़ देते हैं और इसके बजाय
`describe` के माध्यम से उपलब्ध रहते हैं।

```js
const hits = await openclaw.tools.search("कैलेंडर इवेंट", { limit: 5 });
```

`openclaw.tools.describe(id)`

किसी एक खोज परिणाम का पूरा मेटाडेटा लोड करता है, जिसमें सटीक इनपुट स्कीमा और
टूल द्वारा घोषित किए जाने पर विश्वसनीय पूर्ण `outputSchema` शामिल होता है।

```js
const calendarCreate = await openclaw.tools.describe("mcp:calendar:create_event");
```

`openclaw.tools.call(id, args)`

चयनित टूल को OpenClaw के माध्यम से कॉल करता है और अपरिष्कृत `{ tool, result }`
एनवेलप लौटाता है। JSON लौटाने वाले टूल सामान्यतः अपना मान
`result.details` में रखते हैं। यदि कोई विश्वसनीय टूल `outputSchema` घोषित करता है, तो OpenClaw
निष्पादन से पहले स्कीमा कंपाइल करता है और कैटलॉग कॉल लौटाने से पहले सामान्य टूल
हुक के बाद अंतिम `details` को सत्यापित करता है।

```js
await openclaw.tools.call(calendarCreate.id, {
  summary: "योजना",
  start: "2026-05-09T14:00:00Z",
});
```

टूल लेखक टूल की `outputSchema` प्रॉपर्टी पर आउटपुट अनुबंध घोषित करते हैं।
यह `AgentToolResult.details` का वर्णन करता है, रेंडर किए गए सामग्री ब्लॉक का नहीं।
सभी गैर-थ्रोइंग वैरिएंट शामिल करें या अस्थिर परिणामों के लिए इसे छोड़ दें। देखें
[कोड मोड आउटपुट अनुबंध](/hi/tools/code-mode#declared-output-contracts) और
[टूल Plugin](/hi/plugins/tool-plugins#output-contracts)।

संरचित फ़ॉलबैक मोड वही संचालन टूल के रूप में उपलब्ध कराता है:

- `tool_search`
- `tool_describe`
- `tool_call`

डायरेक्टरी मोड उपलब्ध कराता है:

- `tool_search`
- `tool_describe`
- `tool_call`

यह क्लाइंट द्वारा प्रदान किए गए टूल और सभी डायरेक्ट-ओनली टूल को भी सीधे दृश्यमान रखता है,
और वर्तमान टर्न के लिए संभावित या आवश्यक कैटलॉग टूल स्कीमा का एक छोटा सीमित समूह
सीधे उपलब्ध करा सकता है। यदि सीमित डायरेक्टरी प्रविष्टियाँ छोड़ देती है, तो
उन्हें खोजने के लिए `tool_search` का उपयोग करें। यदि मॉडल किसी सटीक छिपे हुए डायरेक्टरी
टूल नाम का सीधे अनुरोध करता है, तो OpenClaw सामान्य निष्पादन से पहले उसे अधिकृत कैटलॉग से
हाइड्रेट करता है।
डायरेक्टरी-मोड क्लाइंट टूल नामों का OpenClaw, Plugin या MCP
टूल नामों से टकराव नहीं होना चाहिए, क्योंकि सटीक स्थगित डिस्पैच उन्हीं नामों का उपयोग करता है।

## रनटाइम सीमा

कोड ब्रिज एक अल्पकालिक Node सबप्रोसेस में चलता है। सबप्रोसेस
Node अनुमति मोड सक्षम, खाली एनवायरनमेंट, बिना फ़ाइल सिस्टम या
नेटवर्क अनुदान और बिना चाइल्ड-प्रोसेस या वर्कर अनुदान के शुरू होता है। OpenClaw
पैरेंट-प्रोसेस वॉल-क्लॉक टाइमआउट लागू करता है और टाइमआउट होने पर, एसिंक
कंटिन्यूएशन के बाद भी, सबप्रोसेस को समाप्त कर देता है।

रनटाइम केवल ये उपलब्ध कराता है:

- `console.log`, `console.warn` और `console.error`
- `openclaw.tools.search`
- `openclaw.tools.describe`
- `openclaw.tools.call`

अंतिम कॉल पर सामान्य OpenClaw व्यवहार अब भी लागू होता है:

- टूल अनुमति और निषेध नीतियाँ
- प्रति-एजेंट और प्रति-सैंडबॉक्स टूल प्रतिबंध
- चैनल/रनटाइम टूल नीति
- अनुमोदन हुक
- Plugin `before_tool_call` हुक
- सेशन पहचान, लॉग और टेलीमेट्री

## कॉन्फ़िगरेशन

डिफ़ॉल्ट कोड ब्रिज के साथ OpenClaw रन के लिए Tool Search सक्षम करें:

```bash
openclaw config set tools.toolSearch true
```

समतुल्य JSON:

```json5
{
  tools: {
    toolSearch: true,
  },
}
```

इसके बजाय OpenClaw रन के लिए संरचित फ़ॉलबैक टूल का उपयोग करें:

```json5
{
  tools: {
    toolSearch: {
      mode: "tools",
    },
  },
}
```

इसके बजाय OpenClaw रन के लिए संक्षिप्त डायरेक्टरी सतह का उपयोग करें:

```json5
{
  tools: {
    toolSearch: {
      mode: "directory",
    },
  },
}
```

कोड-मोड टाइमआउट और खोज परिणाम सीमाएँ समायोजित करें (दिखाए गए मान डिफ़ॉल्ट हैं):

```json5
{
  tools: {
    toolSearch: {
      mode: "code",
      codeTimeoutMs: 10000,
      searchDefaultLimit: 8,
      maxSearchLimit: 20,
    },
  },
}
```

रनटाइम `codeTimeoutMs` को 1000-60000, `maxSearchLimit` को 1-50 और
`searchDefaultLimit` को 1..`maxSearchLimit` तक सीमित करता है।

इसे अक्षम करें:

```json5
{
  tools: {
    toolSearch: false,
  },
}
```

## प्रॉम्प्ट और टेलीमेट्री

Tool Search इसे प्रत्यक्ष टूल प्रदर्शन से तुलना करने के लिए पर्याप्त टेलीमेट्री रिकॉर्ड करता है:

- हार्नेस को भेजे गए कुल क्रमबद्ध टूल और प्रॉम्प्ट बाइट
- कैटलॉग आकार और स्रोत विवरण
- खोज, विवरण और कॉल की संख्याएँ
- OpenClaw के माध्यम से निष्पादित अंतिम टूल कॉल
- चयनित टूल आईडी और स्रोत

सेशन लॉग से इन प्रश्नों के उत्तर देना संभव होना चाहिए:

- मॉडल ने पहले से कितने टूल स्कीमा देखे
- उसने कितनी खोज और विवरण कार्रवाइयाँ कीं
- कौन-सा अंतिम टूल कॉल किया गया
- परिणाम OpenClaw, MCP या क्लाइंट टूल में से किससे आया

## E2E सत्यापन

QA Lab Gateway परिदृश्य OpenClaw रनटाइम के साथ दोनों पथों को प्रमाणित करता है:

```bash
pnpm openclaw qa suite --provider-mode mock-openai --scenario tool-search-gateway-e2e
```

यह बड़े टूल कैटलॉग वाला एक अस्थायी नकली Plugin बनाता है, नकली
OpenAI प्रदाता शुरू करता है, Gateway को एक बार प्रत्यक्ष मोड में और एक बार Tool Search
सक्षम करके शुरू करता है, फिर प्रदाता अनुरोध पेलोड और सेशन लॉग की तुलना करता है।

रिग्रेशन प्रमाणित करता है:

1. प्रत्यक्ष मोड नकली Plugin टूल को कॉल कर सकता है।
2. टूल खोज उसी नकली Plugin टूल को कॉल कर सकती है।
3. प्रत्यक्ष मोड नकली Plugin टूल की स्कीमाएँ सीधे प्रदाता के सामने उपलब्ध कराता है।
4. टूल खोज केवल संक्षिप्त ब्रिज और केवल-प्रत्यक्ष टूल उपलब्ध कराती है।
5. बड़ी नकली कैटलॉग के लिए टूल खोज अनुरोध का पेलोड छोटा होता है।
6. सत्र लॉग अपेक्षित टूल-कॉल संख्याएँ और ब्रिज किए गए कॉल की टेलीमेट्री दिखाते हैं।

## विफलता व्यवहार

टूल खोज को सुरक्षित रूप से विफल होना चाहिए:

- यदि कोई टूल प्रभावी नीति में नहीं है, तो खोज को उसे वापस नहीं करना चाहिए
- यदि कोई चयनित टूल अनुपलब्ध हो जाता है, तो `tool_call` को विफल होना चाहिए
- यदि नीति या अनुमोदन निष्पादन को अवरुद्ध करता है, तो कॉल परिणाम को उसे दरकिनार करने के बजाय
  उस अवरोध की रिपोर्ट करनी चाहिए
- यदि कोड ब्रिज पृथक रनटाइम नहीं बना सकता, तो `mode: "tools"` का उपयोग करें या
  उस परिनियोजन के लिए टूल खोज अक्षम करें

## संबंधित

- [टूल और Plugin](/hi/tools)
- [मल्टी-एजेंट सैंडबॉक्स और टूल](/hi/tools/multi-agent-sandbox-tools)
- [Exec टूल](/hi/tools/exec)
- [ACP एजेंट सेटअप](/hi/tools/acp-agents-setup)
- [Plugin बनाना](/hi/plugins/building-plugins)
