DEV Community

Edison Flores
Edison Flores

Posted on

5 real use cases for AI agent credential verification (with code)

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:

  1. Who issued the credential for that tool?
  2. Is it still valid (not expired, not revoked)?
  3. 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}
Enter fullscreen mode Exit fullscreen mode

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 };
}
Enter fullscreen mode Exit fullscreen mode

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"}}}'
Enter fullscreen mode Exit fullscreen mode

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"}}'
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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"}}}'
Enter fullscreen mode Exit fullscreen mode

GitHub: https://github.com/alicelabs-llc/universal-trust-adapter
Telegram: https://t.me/uta_verify_bot

Top comments (0)