MCP Server
Last updated: March 27, 2026
1. Overview
Arkova exposes a Model Context Protocol (MCP) server so AI agents can interact with the credential verification network using native tool calls.
- Compatible with Claude, GPT, custom LLM agents, and any MCP-compatible client
- Streamable HTTP transport on Cloudflare Workers
Tip
MCP enables AI agents to verify credentials as native tool calls — no REST API parsing needed.
2. Available Tools
| Tool | Description | Auth |
|---|---|---|
verify_credential | Verify a credential by public ID. Returns the frozen verification schema. | API key or OAuth 2.0 |
search_credentials | Semantic search across verified credentials using natural language. | API key or OAuth 2.0 |
Example Tool Call
json
{
"tool": "verify_credential",
"arguments": {
"public_id": "ARK-2026-00091"
}
}Example Response
json
{
"verified": true,
"status": "ACTIVE",
"issuer_name": "University of Michigan",
"credential_type": "DIPLOMA",
"anchor_timestamp": "2026-03-10T08:00:00Z",
"bitcoin_block": 204567
}3. Configuration
Claude Desktop
json
{
"mcpServers": {
"arkova": {
"url": "https://edge.arkova.ai/mcp",
"headers": {
"Authorization": "Bearer ak_live_your_key"
}
}
}
}Claude Code
bash
claude mcp add arkova \
--transport http \
--url https://edge.arkova.ai/mcp \
--header "Authorization: Bearer ak_live_your_key"Custom Agents
typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const transport = new StreamableHTTPClientTransport(
new URL('https://edge.arkova.ai/mcp'),
{ requestInit: { headers: { Authorization: 'Bearer ak_live_...' } } }
);
const client = new Client({ name: 'my-agent', version: '1.0' });
await client.connect(transport);
const result = await client.callTool({
name: 'verify_credential',
arguments: { public_id: 'ARK-2026-00091' },
});4. Examples
Agent-to-Agent Trust
Agent A presents a verified record to Agent B. Both agents independently verify against the public ledger — no central intermediary needed.
typescript
// Agent A: Issue and share
const anchor = await arkova.anchor({ fingerprint, label, credentialType: 'DIPLOMA' });
const shareableId = anchor.public_id; // "ARK-2026-00091"
// Agent B: Independently verify
const verification = await mcpClient.callTool({
name: 'verify_credential',
arguments: { public_id: shareableId },
});
// verification.verified === true — trusted without intermediarySemantic Search
text
User: "Find all computer science degrees from Big Ten universities issued after 2024"
Agent calls: search_credentials({ query: "computer science degrees Big Ten 2024" })
Returns: Ranked results with verification status, issuers, and timestamps5. Authentication
Dual authentication is supported: OAuth 2.0 and API key (Bearer token).
Note
Every MCP tool call is logged with timestamp, querying agent ID, and result — creating a defensible audit trail for regulated industries.
- Rate limits apply: same as REST API (1,000 req/min per API key)