Why credential verification matters now
AI agents are moving from demos to production. When an agent invokes a tool in production, you need to answer three questions:
- Who issued the credential for that tool?
- Is it still valid (not expired, not revoked)?
- Does the scope match what the agent is trying to do?
Here are 5 real use cases where credential verification prevents incidents.
Use case 1: MCP server with expired credentials
An agent loads an MCP server whose credential expired yesterday. Without verification, the agent calls the server's tools — but the owner has revoked access.
With UTA:
import requests
def verify_before_load(mcp_server_card):
result = requests.post(
"https://www.marketnow.site/api/trust?action=verify",
json={"payload": mcp_server_card}
).json()
if not result.get("valid"):
return {"blocked": True, "reason": result.get("issues")}
return {"blocked": False}
Use case 2: Typosquatted MCP server
An attacker registers filesystem-mcp-server.xyz. An agent installs the malicious server thinking it's the real one.
With UTA Scam Checker (100% client-side):
function isSafeDomain(domain) {
const popular = ['filesystem-mcp-server', 'github-mcp'];
const bare = domain.split('.')[0];
for (const target of popular) {
if (levenshtein(bare, target) === 1) {
return { safe: false, reason: `Typosquatting: "${bare}" vs "${target}"` };
}
}
return { safe: true };
}
Use case 3: Agent with revoked trust card
An agent was issued an ATC last month. The issuer discovered the agent was compromised and revoked the card.
With UTA:
curl -X POST "https://www.marketnow.site/api/trust?action=verify" -H "Content-Type: application/json" -d '{"payload":{"@context":["https://www.w3.org/2018/credentials/v1"],"type":["VerifiableCredential"],"issuer":"did:web:alice.example","credentialSubject":{"id":"did:agent:bob"},"proof":{"type":"Ed25519Signature2020","verificationMethod":"did:web:alice.example#key-1","proofValue":"placeholder"}}}'
The uts.lifecycle.revoked field tells you if the card was revoked.
Use case 4: Cross-ecosystem translation
Agent A speaks JWT. Agent B speaks W3C VC. Agent A needs to call Agent B's tools.
With UTA:
curl -X POST "https://www.marketnow.site/api/trust?action=translate" -H "Content-Type: application/json" -d '{"from":"jwt","to":"w3c-vc","payload":{"iss":"did:web:alice.example","sub":"agent:bob"}}'
Use case 5: Audit trail
A compliance team needs to prove every tool invocation was verified.
import requests, json, logging
def audited_tool_call(tool, credential):
result = requests.post("https://www.marketnow.site/api/trust?action=verify", json={"payload": credential}).json()
logging.info(json.dumps({"tool": tool.name, "valid": result.get("valid"), "issues": result.get("issues")}))
if not result.get("valid"):
raise PermissionError(f"Blocked: {result.get('issues')}")
return tool.invoke()
Try it
curl -X POST "https://www.marketnow.site/api/trust?action=verify" -H "Content-Type: application/json" -d '{"payload":{"@context":["https://www.w3.org/2018/credentials/v1"],"type":["VerifiableCredential"],"issuer":"did:web:alice.example","credentialSubject":{"id":"did:agent:bob"},"proof":{"type":"Ed25519Signature2020","verificationMethod":"did:web:alice.example#key-1","proofValue":"placeholder"}}}'
GitHub: https://github.com/alicelabs-llc/universal-trust-adapter
Telegram: https://t.me/uta_verify_bot
Top comments (0)