> ## Documentation Index
> Fetch the complete documentation index at: https://phaseo.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# टूल

> मान्य लोकल टूल, मैन्युअल टूल और प्रगति बताने वाले टूल परिभाषित करें।

जब एजेंट को ऐप्लिकेशन डेटा पढ़ना हो, किसी आंतरिक सेवा को कॉल करना हो या कोई कार्रवाई करनी हो, तब टूल इस्तेमाल करें। Agent SDK टूल की सीमाओं की जाँच करता है और टूल कोड आपके ऐप्लिकेशन में चलाता है।

## लोकल टूल परिभाषित करें

`defineTool()` में विवरण, वैकल्पिक JSON पैरामीटर, रनटाइम वैलिडेटर, टाइमआउट और `execute()` फ़ंक्शन दिए जा सकते हैं।

```typescript theme={null}
import { defineTool } from "@phaseo/agent-sdk";

const fetchTicket = defineTool({
  id: "fetch-ticket",
  description: "Load one internal support ticket.",
  parameters: {
    type: "object",
    properties: {
      ticketId: { type: "string" },
    },
    required: ["ticketId"],
    additionalProperties: false,
  },
  timeoutMs: 3_000,
  async execute(input: { ticketId: string }, context) {
    const response = await fetch(
      `https://internal.example/tickets/${input.ticketId}`,
      { signal: context.signal },
    );

    return response.json();
  },
});
```

टाइमआउट होने पर रनटाइम `context.signal` रद्द करता है, रन को विफल चिह्नित करता है और टाइमआउट त्रुटि फिर से भेजता है।

स्कीमा फ़ंक्शन या `parse()` अथवा `safeParse()` देने वाले ऑब्जेक्ट हो सकते हैं। मॉडल के अमान्य तर्क और टूल के अमान्य नतीजे टूल सीमा पार करने से पहले विफल हो जाते हैं।

## अपने ऐप्लिकेशन में काम चलाएँ

जब SDK प्रक्रिया के बजाय आपका ऐप्लिकेशन काम करे, तो `execute: false` सेट करें। `toolOutputs` में नतीजा देकर रुके हुए रन को आगे बढ़ाएँ।

इंटरैक्टिव टूल के लिए `onToolCalled` से `null` लौटाएँ। रन जारी होने के बाद `onResponseReceived` दी गई प्रतिक्रिया की जाँच या उसे बदल सकता है।

## प्रगति प्रकाशित करें

असिंक्रोनस जनरेटर अंतिम नतीजा देने से पहले शुरुआती नतीजे दे सकता है:

```typescript theme={null}
const indexRepository = defineTool({
  id: "index-repository",
  async *execute(input: { path: string }) {
    yield { phase: "scan" };
    yield { phase: "embed" };
    return { indexed: 248 };
  },
});
```

प्रगति `tool.preliminary_result` इवेंट और स्टेप के `preliminaryResults` से मिलती है।

## स्वतंत्र टूल एक साथ चलाएँ

अगर मॉडल का एक टर्न कई स्वतंत्र टूल सुरक्षित रूप से कॉल कर सकता है, तो समवर्ती सीमा सेट करें:

```typescript theme={null}
const agent = createAgent({
  id: "research-agent",
  toolExecution: {
    toolConcurrency: 3,
  },
  tools: [fetchDocs, fetchStatus, fetchIncidents],
});
```

लोकल निष्पादन एक साथ होने पर भी रनटाइम टूल-नतीजा संदेशों का क्रम बनाए रखता है।

## संबंधित गाइड

* [रन रोकें, स्वीकृत करें और फिर शुरू करें](./agent-sdk-state-and-approval.mdx)
* [एजेंट के नतीजे स्ट्रीम करें](./agent-sdk-streaming.mdx)
* [लोकल टूल एक साथ चलाएँ](../../cookbook/agent-sdk-parallel-tools.mdx)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.