व्यक्तिगत जानकारी न लिखें, जैसे किसी क्लाइंट का नाम।
AI एजेंट जोड़ना (MCP)
Claude, ChatGPT, Cursor या अपने एजेंट को MCP के माध्यम से अपने Business वर्कस्पेस से जोड़ें, ताकि वह क्लाइंट के दस्तावेज़ों से DS-160 फॉर्म तैयार करे और क्लाइंट लिंक भेजे।
किसी इमिग्रेशन फर्म का अपना AI एजेंट MCP (Model Context Protocol) के माध्यम से उसके DS160.io वर्कस्पेस में काम कर सकता है। क्लाइंट के दस्तावेज़ों या ईमेल से एजेंट एक फॉर्म बना सकता है, जो उत्तर उसे मिलें उन्हें भर सकता है, जाँच सकता है कि अभी क्या बाकी है, और बाकी भरने के लिए क्लाइंट को एक लिंक भेज सकता है। इसके बाद आपका स्टाफ़ आवेदन जाँचता है और स्वयं CEAC पर उस पर हस्ताक्षर करता है।
एजेंट एक Business वर्कस्पेस से जुड़ता है और केवल वही कर सकता है जिसकी आप अनुमति देते हैं। वह जो कुछ भी कर सकता है, वह DS160.io API का भी एक एंडपॉइंट है।
शुरू करने से पहले
- एक Business वर्कस्पेस। MCP Business वर्कस्पेस पर उपलब्ध है।
- स्वामी या एडमिन की पहुँच। केवल वर्कस्पेस के स्वामी और एडमिन ही API कुंजियाँ बना सकते हैं या किसी कनेक्शन की अनुमति दे सकते हैं।
- एक MCP क्लाइंट। Claude Code, Cursor, VS Code, Codex और Windsurf API कुंजी से जुड़ते हैं। claude.ai और ChatGPT DS160.io में साइन इन करके जुड़ते हैं।
सर्वर का पता है:
https://www.ds160.io/api/mcp
यही पता इस्तेमाल करें, भले ही आपके वर्कस्पेस का अपना डोमेन हो।
API कुंजी से जोड़ें
- कार्यक्षेत्र सेटिंग्स → टीम और एक्सेस → API कुंजियाँ खोलें और API कुंजी बनाएँ पर क्लिक करें।
- कुंजी का नाम एजेंट के नाम पर रखें (उदाहरण के लिए Claude Code, इनटेक टीम), MCP प्रीसेट चुनें और कुंजी बनाएँ। प्रीसेट
runs:writeको छोड़कर हर scope चुनता है; जिस scope की एजेंट को ज़रूरत नहीं है, उसे हटा दें। - सीक्रेट कॉपी करें। यह
ds160_sk_से शुरू होता है और केवल एक बार दिखाया जाता है। - सर्वर को अपने क्लाइंट में जोड़ें, सीक्रेट को
Authorizationहेडर में रखकर। Claude Code में:
claude mcp add --transport http ds160 https://www.ds160.io/api/mcp --header "Authorization: Bearer ds160_sk_…"
दूसरे क्लाइंट यही पता और हेडर अपनी सेटिंग्स में लेते हैं। Cursor में (.cursor/mcp.json):
{
"mcpServers": {
"ds160": {
"url": "https://www.ds160.io/api/mcp",
"headers": { "Authorization": "Bearer ds160_sk_…" }
}
}
}
VS Code में (.vscode/mcp.json), वही url और headers "servers" के अंतर्गत "type": "http" के साथ जोड़ें। सीक्रेट को उन फ़ाइलों से बाहर रखें जिन्हें आप commit करते हैं: जहाँ आपका क्लाइंट environment variables या सीक्रेट इनपुट का समर्थन करता हो, वहाँ उसका उपयोग करें।
claude.ai या ChatGPT जोड़ें
claude.ai और ChatGPT कोई कुंजी नहीं भेजते। वे इसके बजाय DS160.io में साइन इन करके जुड़ते हैं:
- claude.ai या ChatGPT में
https://www.ds160.io/api/mcpको custom connector के रूप में जोड़ें। - पूछे जाने पर अपने खाते से DS160.io में साइन इन करें।
- वह Business वर्कस्पेस चुनें जिसमें एजेंट काम करेगा।
- वह जो अनुमतियाँ माँगता है उनकी समीक्षा करें, फिर अनुमति देने के लिए क्लिक करें।
इसके बाद एजेंट उस वर्कस्पेस में आपकी ओर से कार्य करता है। किसी कनेक्शन की अनुमति देने के लिए आपको वर्कस्पेस का स्वामी या एडमिन होना चाहिए।
Scope: हर एक क्या अनुमति देता है
| Scope | एजेंट क्या कर सकता है |
|---|---|
forms:read | फॉर्म की सूची देखना, किसी फॉर्म का नाम और स्थिति पढ़ना, जाँचना कि क्या बाकी है, किसी सबमिशन पर नज़र रखना |
forms:write | फॉर्म बनाना (और पढ़ना) |
forms:clone | किसी मौजूदा फॉर्म को नए फॉर्म में कॉपी करना |
client-links:write | आवेदकों को भेजने के लिए क्लाइंट लिंक बनाना |
answers:read | किसी फॉर्म के उत्तर पढ़ना |
answers:write | किसी फॉर्म के उत्तर लिखना और हटाना |
runs:write | CEAC पर सबमिशन शुरू करना और उस पर नज़र रखना |
answers:read आवेदकों का व्यक्तिगत डेटा DS160.io से बाहर भेजता है। एजेंट जो नाम, जन्मतिथियाँ, पासपोर्ट संख्याएँ, यात्रा इतिहास और हर दूसरा DS-160 उत्तर पढ़ता है, वह एजेंट को और उसे चलाने वाले को, जैसे किसी AI प्रदाता को, दिया जाता है। अपने क्लाइंट्स के डेटा के नियंत्रक के रूप में आपका वर्कस्पेस तय करता है कि इसकी अनुमति है या नहीं, और DS160.io से बाहर जाने के बाद उस डेटा के लिए वही उत्तरदायी है (देखें गोपनीयता नीति और डेटा प्रसंस्करण करार)। यदि एजेंट को केवल फॉर्म भरने हैं, तो answers:read न दें: केवल answers:write के साथ वह उत्तरों को वापस पढ़े बिना लिख सकता है।
एजेंट क्या कर सकता है और क्या नहीं
- वह फॉर्म तैयार कर सकता है: उसे बना सकता है, क्लाइंट ने जो भेजा उससे उत्तर भर सकता है, देख सकता है कि कौन-से प्रश्न अभी बाकी हैं या अस्वीकार होंगे, और बाकी के लिए क्लाइंट को लिंक भेज सकता है।
- वह जो भी उत्तर लिखता है उसकी जाँच होती है, वैसे ही जैसे फॉर्म एडिटर जाँचता है। टेक्स्ट बड़े अक्षरों (capitals) में सहेजा जाता है, जब तक कि प्रश्न अंग्रेज़ी के बाहर के अक्षरों की अनुमति न दे। जो उत्तर सही नहीं बैठता, वह एक कारण के साथ अस्वीकार किया जाता है, और बैच के बाकी उत्तरों पर कोई असर नहीं पड़ता।
- हर बदलाव दर्ज होता है। फॉर्म का परिवर्तन इतिहास हर बदलाव को कुंजी के लिए “API key नाम” और कनेक्शन के लिए “सदस्य via एजेंट” के रूप में दिखाता है।
- वह हस्ताक्षर या सबमिट नहीं कर सकता। एजेंट द्वारा शुरू किया गया सबमिशन हमेशा हस्ताक्षर से पहले रुकता है, वर्कस्पेस की सेटिंग चाहे जो हो: एक व्यक्ति आवेदन जाँचता है और CEAC पर उस पर हस्ताक्षर करता है (देखें हस्ताक्षर से पहले समीक्षा)।
- वह CEAC के कैप्चा नहीं भर सकता। सबमिशन के इंतज़ार के दौरान एक व्यक्ति उन्हें DS160.io में भरता है; सबमिशन एजेंट को बताता है कि कब और कहाँ किसी व्यक्ति की ज़रूरत है।
- फॉर्म बनाने का बिल लगता है, ऐप में फॉर्म बनाने की तरह ही: बनाया गया या क्लोन किया गया हर फॉर्म एक बनाए गए फॉर्म के रूप में गिना जाता है।
- वह केवल अपने वर्कस्पेस में काम करता है। वह दूसरे वर्कस्पेस नहीं देख सकता, और किसी दूसरे वर्कस्पेस का फॉर्म “नहीं मिला” के रूप में बताया जाता है।
टूल
| टूल | यह क्या करता है | Scope |
|---|---|---|
list_forms | वर्कस्पेस के फॉर्म की सूची, सबसे नया पहले | forms:read |
get_form | किसी एक फॉर्म का नाम, स्थिति और सहमति पढ़ता है | forms:read |
create_form | एक फॉर्म बनाता है (प्रति बनाए गए फॉर्म बिल) | forms:write |
clone_form | किसी फॉर्म को नए फॉर्म में कॉपी करता है, चाहें तो कुछ सेक्शन छोड़कर | forms:clone |
create_client_link | किसी फॉर्म के लिए क्लाइंट लिंक बनाता है | client-links:write |
search_docs | इन दस्तावेज़ों में खोजता है, प्रति कुंजी या कनेक्शन दिन में 200 खोज | कोई भी |
describe_form_pages | फॉर्म के पेज और हर प्रश्न की सूची देता है: उसका उत्तर पथ, प्रकार, क्या वह आवश्यक है, ड्रॉपडाउन के मान और हर उत्तर से खुलने वाले प्रश्न, साथ में हर उत्तर प्रकार का JSON | कोई भी |
get_answers | किसी फॉर्म के उत्तर पढ़ता है, पूरे फॉर्म के लिए या एक पेज के लिए | answers:read |
set_answers | प्रति कॉल 200 तक उत्तर क्रम से लिखता है: हर उत्तर लिखा जाता है, हटाया जाता है (मान null) या एक कोड और कारण के साथ अस्वीकार किया जाता है | answers:write |
get_form_progress | हर सेक्शन के लिए: उसकी स्थिति, बिना उत्तर वाले आवश्यक प्रश्न और पथ के अनुसार समस्याएँ; और क्या फॉर्म पूरा है | forms:read, answers:read या answers:write |
start_run | चुने गए कांसुलेट के लिए CEAC पर सबमिशन शुरू करता है; हस्ताक्षर से पहले रुकता है | runs:write |
get_run | किसी सबमिशन की स्थिति, वह कहाँ है इसका सारांश, क्या किसी व्यक्ति की ज़रूरत है, और उसका लिंक | runs:write या forms:read |
पहुँच निरस्त करना
- एक कुंजी: इसे कार्यक्षेत्र सेटिंग्स → टीम और एक्सेस → API कुंजियाँ में निरस्त करें। एजेंट की अगली कॉल अस्वीकार कर दी जाती है।
- एक कनेक्शन (claude.ai, ChatGPT): इसे खाता और सुरक्षा में, या पूरे वर्कस्पेस के लिए कार्यक्षेत्र सेटिंग्स में निरस्त करें। दोनों मौजूदा कनेक्शन की सूची दिखाते हैं।
अगर कोई कुंजी लीक हुई हो सकती है या कोई एजेंट अब इस्तेमाल नहीं होता, तो तुरंत निरस्त करें।
एजेंट को आवेदक की दी गई जानकारी तक सीमित रखें
DS-160 पर आवेदक हस्ताक्षर करता है, जो घोषित करता है कि हर उत्तर सत्य है। अपने एजेंट को बताएँ कि वह केवल उसी से उत्तर दे जो आवेदक ने आपको दिया है (उनके दस्तावेज़, ईमेल और उत्तर), और कभी भी अनुमान न लगाए या उत्तर न गढ़े। जहाँ वह निश्चित न हो, वहाँ उसे प्रश्न खाली छोड़ना चाहिए, ताकि get_form_progress उसे बाकी के रूप में दिखाए और क्लाइंट या आपका स्टाफ़ उसका उत्तर दे। किसी के हस्ताक्षर करने से पहले फॉर्म की समीक्षा करें।
समस्या निवारण
| समस्या | क्या करें |
|---|---|
क्लाइंट कहता है कि वह जुड़ नहीं सकता, या 401 मिलता है | जाँचें कि पता https://www.ds160.io/api/mcp है और हेडर पूरे सीक्रेट के साथ Authorization: Bearer <secret> है। निरस्त की गई कुंजी फिर से इस्तेमाल नहीं हो सकती: नई बनाएँ। |
| कोई टूल कहता है कि कोई scope नहीं है | कुंजी या कनेक्शन के पास वह scope नहीं है। उस scope के साथ एक कुंजी बनाएँ (या फिर से जोड़ें और उसकी अनुमति दें), फिर पुरानी को निरस्त करें। |
| कोई उत्तर अस्वीकार होता है | उसका कारण पढ़ें। सही पथ और ड्रॉपडाउन द्वारा स्वीकार किए जाने वाले मानों के लिए describe_form_pages का उपयोग करें। |
start_run अस्वीकार होता है | get_form_progress हर सेक्शन में बताता है कि क्या बाकी है या गलत है। उसे भरें, फिर सबमिशन दोबारा शुरू करें। अगर फॉर्म का कोई सबमिशन पहले से चल रहा है, तो get_run से उस पर नज़र रखें। |
सबमिशन needsPerson के साथ रुका है | कोई व्यक्ति DS160.io में सबमिशन का लिंक खोलकर कैप्चा भरता है। सबमिशन हस्ताक्षर के लिए तैयार होने पर कोई व्यक्ति आवेदन जाँचता है और CEAC पर उस पर हस्ताक्षर करता है। |