उपकरण की परिभाषा के दो काम हैं, और उनमें से सिर्फ़ एक JSON है। स्कीमा बताती है कि तर्कों का आकार क्या है; विवरण बताते हैं कि उपकरण किस लिए है और हर तर्क का अर्थ क्या है। स्कीमा पूरी तरह वैध हो सकती है और फिर भी ऐसा उपकरण बना सकती है जिसे ग़लत समय पर, भीतर विश्वसनीय दिखती बकवास के साथ बुलाया जाए, क्योंकि JSON में कहीं यह नहीं लिखा कि कौन-सी चीज़ क्या है। यह बिल्डर स्कीमा लिखता है और दोनों पहलू जाँचता है: बनावट, और यह कि कुछ सचमुच वर्णित है भी या नहीं। सख़्त मोड भी ठीक से सँभाला गया है: वह हर प्रॉपर्टी को अनिवार्य सूची में माँगता है और अतिरिक्त प्रॉपर्टी मना करता है — और यही लोगों को चौंकाता है, क्योंकि बाक़ी स्कीमा वैसी की वैसी दिखती है।
विशेषताएँ
प्रकार, विवरण और वैकल्पिक बंद मान-समूह वाले पैरामीटर
सख़्त मोड का «सब अनिवार्य» नियम तुरंत लागू, बाद में पता चलने के बजाय
सख़्त मोड चालू हो तो additionalProperties सही सेट
ऐरे को items स्कीमा अपने आप मिलती है
बिना विवरण वाले पैरामीटर पर चेतावनी
एक जैसे पैरामीटर नाम पकड़ता है
एक ही मान वाले enum को स्थिरांक बताता है
सिर्फ़ स्कीमा नहीं, पूरी परिभाषा देता है
MCP टूल स्कीमा बिल्डर का उपयोग कैसे करें
उपकरण का नाम रखिए और लिखिए कि उसे कब इस्तेमाल करना है
हर पैरामीटर उसके प्रकार और विवरण के साथ जोड़िए
अनिवार्य वाले चुनिए, या सख़्त मोड चालू कीजिए
परिभाषा अपने tools ऐरे में कॉपी कीजिए
उदाहरण
इनपुट
"strict": true
आउटपुट
Error: strict mode requires every property to be listed as required
सख़्त मोड में वैकल्पिक प्रॉपर्टी नहीं होतीं: उसकी जगह null की अनुमति दीजिए।
सामान्य त्रुटियाँ और समस्या निवारण
सख़्त मोड अस्वीकार हो रहा है। — उसे सभी प्रॉपर्टी अनिवार्य और additionalProperties का false चाहिए। वैकल्पिक वालों को अनिवार्य बनाकर null की अनुमति दीजिए, या सख़्त मोड बंद कीजिए।
उपकरण ग़लत तर्कों के साथ बुलाया जाता है। — आम तौर पर बिना विवरण वाले पैरामीटर। अकेले नाम से अर्थ अनुमान पर छूट जाता है, और «id» कुछ भी हो सकता है।
उपकरण ग़लत समय पर बुलाया जाता है। — यह उपकरण का विवरण है, स्कीमा नहीं। लिखिए कि कब इस्तेमाल करना है और क्या लौटाता है, सिर्फ़ यह नहीं कि क्या करता है।
ऐरे वाला पैरामीटर अस्वीकार हो रहा है। — ऐरे को items स्कीमा चाहिए जो बताए कि उसमें क्या है। यहाँ वह अपने आप जुड़ जाती है।
अक्सर पूछे जाने वाले प्रश्न
सख़्त मोड असल में क्या बदलता है?
वह गारंटी देता है कि तर्क स्कीमा से ठीक-ठीक मेल खाएँगे। क़ीमत यह है कि हर प्रॉपर्टी अनिवार्य सूची में होनी चाहिए और अतिरिक्त प्रॉपर्टी मना है, इसलिए सचमुच वैकल्पिक तर्क को «अनिवार्य पर null स्वीकार्य» की तरह गढ़ना पड़ता है।
पैरामीटर का विवरण कितना विस्तृत हो?
इतना कि सिर्फ़ स्कीमा पढ़ने वाला भी जान जाए कि वहाँ क्या डालना है: प्रारूप, इकाइयाँ, मान कहाँ से आता है। «वह ग्राहक ईमेल जिससे ऑर्डर किया गया» «ईमेल» से कहीं ज़्यादा क़ीमती है।
enum कब इस्तेमाल करें?
जब वैध मानों का समूह सचमुच बंद और छोटा हो। इससे ग़लत जवाबों की एक पूरी श्रेणी हट जाती है। एक ही मान वाला enum इसलिए दिखाया जाता है कि वह पैरामीटर नहीं, स्थिरांक है।
क्या यह MCP और API दोनों उपकरणों पर लागू है?
दोनों में स्कीमा JSON Schema का वही उपसमुच्चय है। बाहरी लपेट थोड़ी अलग होती है, पर इनपुट स्कीमा — जहाँ ग़लती आसान है — बिल्कुल एक जैसी है।
अच्छा उपकरण विवरण किसे कहेंगे?
दो वाक्यों में तीन बातें: वह क्या करता है, कब उसे उठाना है, और क्या लौटाता है। आख़िरी सबसे ज़्यादा छूटती है और सबसे ज़्यादा काम आती है, क्योंकि वह बताती है कि एक ही कॉल काफ़ी होगी या नहीं।
संबंधित टूल
टूल स्कीमा सत्यापन — परिभाषा चिपकाइए और जानिए वह क्यों अस्वीकार हो रही है।
MCP सर्वर कॉन्फ़िग — stdio, HTTP या SSE के लिए MCP सर्वर प्रविष्टि बनाइए।