# Discovery, Routing और Delegation — MCP और Agent-to-Agent Protocols

Source: https://www.geekswithgeeks.com/hi/mcp-a2a/a-discover

> चुनें कि कौन-सा remote agent काम सँभाले।

## ज़रूरत को विज्ञापित कौशल से मिलाएँ

Client agent को उम्मीदवार खोजने का तरीक़ा चाहिए: भरोसेमंद agent URLs की **configured सूची**, Agent Cards की आंतरिक **registry** या सूची, या साझेदारों के बीच **सीधी जानकारी**। फिर routing काम की तुलना cards के **skills और विवरण** से करती है, आदर्श रूप से पहले सटीक ids या tags से और मॉडल सिर्फ़ अस्पष्ट मामलों के लिए। सौंपने के निर्णयों में **भरोसा** (क्या यह agent इस डेटा के लिए अनुमोदित है?), **लागत और latency**, और **fallbacks** (वह बंद हो या मना कर दे तो?) शामिल हों। कोई agent ज़रूरी कौशल विज्ञापित न करे तो अनुमान लगाने की जगह यह कहें और मनुष्य को सौंपें। Remote agent को **सिर्फ़ वही डेटा** दें जो उसे चाहिए, क्योंकि वह आपकी सीमा के बाहर काम करता है।

## Skill-आधारित routing, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। Refund कार्य billing agent और compliance कार्य legal agent से मेल खाता है। "poetry" का अनुरोध किसी विज्ञापित कौशल से नहीं मिलता, इसलिए कोड अनुमान लगाने की जगह मनुष्य को सौंपता है।

```python
AGENTS = {
    "billing": {"skills": {"invoice", "refund"}},
    "legal":   {"skills": {"contract", "compliance"}},
    "support": {"skills": {"faq", "troubleshoot"}},
}

def discover(needed_skill):
    return [name for name, card in AGENTS.items() if needed_skill in card["skills"]]

for skill in ("refund", "compliance", "poetry"):
    found = discover(skill)
    print(skill, "->", found if found else "no agent advertises this skill; escalate to a human")

```

Output:

```
refund -> ['billing']
compliance -> ['legal']
poetry -> no agent advertises this skill; escalate to a human
```

**Quiz:** जब कोई agent ज़रूरी कौशल विज्ञापित न करे तब क्या होना चाहिए?

- [ ] सबको डेटा भेजें
- [ ] कोई random agent चुनें
- [x] अनुमान लगाने की जगह कहें और सौंपें
- [ ] अनुरोध अनदेखा करें

*Answer:* अनुमान लगाने की जगह कहें और सौंपें. अनुमान अनुपयुक्त agent को डेटा लीक कर सकता है।
