Edgevana Compute
Agent
Hourly GPU instances for agents over MCP and A2A. 13 tools. Every launch shows a preview and needs the user's approval before anything is charged.
Agent Card at /.well-known/agent-card.json. MCP at /mcp, A2A at /a2a/jsonrpc and /a2a/rest. Auth: X-API-Key: edgv_... or Authorization: Bearer edgv_.... Agents can launch hourly GPU offers only. Bare-metal and CPU servers can be searched and priced, not launched.
URLs and auth
All 13 tools
| tool | access | params |
|---|---|---|
| search_servers | Read only | server_type, query, region, site, launchable_only, max_price_hourly, min_vram_gb, min_gpus, min_direct_ports, min_reliability, min_ram_gb, min_cores, sort, detail_sku, offset, limit |
| get_server_specs | Read only | sku |
| get_locations | Read only | country, city |
| check_availability | Read only | site, server_type, sku, limit |
| get_pricing | Read only | server_type, item_id, search, include_locations, limit |
| compare_to_cloud | Read only | workload_type, cloud_provider |
| get_platform_info | Read only | topic |
| launch_instance | Preview, then confirm (spends money) | offer_id (required), site (required), ssh_key, custom_name, disk_gb, ports, onstart, payment_source_id, coupon_ids, confirm, approved (required when confirm: true), idempotency_key (required when confirm: true) |
| request_reserved_instance | Preview, then confirm (no charge) | offer_id (required), site (required), email (required), first_name (required), last_name, quantity, term_months, notes, confirm |
| list_instances | Read only | limit, offset |
| get_instance | Read only | instance_id (required) |
| update_instance | Changes instance settings, no charge | instance_id (required), ssh_key, cluster, deployment_type, custom_name |
| terminate_instance | Preview, then confirm (destructive) | instance_id (required), when, cancel_reason, confirm |
5-step flow
Pick an offer with launch_status "available". Note its offer_id and one of its hourly_sites.
{
"tool": "search_servers",
"args": {
"server_type": "gpu",
"query": "H100",
"launchable_only": true,
"sort": "price"
}
}Returns the hourly price and an approval object, plus the deposit due today when the quote succeeds. Nothing is created. Show it to the user. If the deposit could not be quoted (approval.deposit_due_cents is null), run the preview again: a confirm without a deposit quote is refused.
{
"tool": "launch_instance",
"args": {
"offer_id": "52708889",
"site": "Seoul, South Korea",
"ssh_key": "ssh-ed25519 AAAA..."
}
}After the user approves: same args, confirm: true, the approval object unchanged, and a unique idempotency_key. Any change in the hourly price is refused, and the approved deposit is the ceiling.
{
"tool": "launch_instance",
"args": {
"offer_id": "52708889",
"site": "Seoul, South Korea",
"ssh_key": "ssh-ed25519 AAAA...",
"confirm": true,
"approved": {
"hourly_cents": 249,
"deposit_due_cents": 2500
},
"idempotency_key": "00000000-0000-4000-8000-000000000001"
}
}Check connection.status: ready, provisioning, failed, destroying or destroyed. destroying means the instance is cancelled but not yet confirmed gone. When ready, connection.ports lists mapped ports. connection.public_ip and connection.ssh can be null even when ready. Check connection.ssh before you read its host, port and user. When status is not ready, public_ip and ssh are null, and ports is [].
{
"tool": "get_instance",
"args": {
"instance_id": "example-instance-id"
}
}Call without confirm for a preview, then again with confirm: true. Hourly GPU instances are destroyed immediately; EndOfTerm is refused for them.
{
"tool": "terminate_instance",
"args": {
"instance_id": "example-instance-id",
"confirm": true
}
}Tool call examples
{ "tool": "search_servers", "args": {"server_type":"gpu","query":"H100","launchable_only":true,"sort":"price","limit":10} }
{ "tool": "get_server_specs", "args": {"sku":"BM-9254-384G-25G"} }
{ "tool": "get_locations", "args": {"country":"United States"} }
{ "tool": "check_availability", "args": {"server_type":"gpu","site":"Chicago"} }
{ "tool": "get_pricing", "args": {"server_type":"gpu","search":"H100","limit":10} }
{ "tool": "compare_to_cloud", "args": {"workload_type":"ai_inference","cloud_provider":"aws"} }
{ "tool": "get_platform_info", "args": {"topic":"compute"} }
{ "tool": "launch_instance", "args": {"offer_id":"52708889","site":"Seoul, South Korea","ssh_key":"ssh-ed25519 AAAA..."} }
{ "tool": "request_reserved_instance", "args": {"offer_id":"52700000","site":"Dallas, TX","email":"[email protected]","first_name":"Alex","quantity":8,"term_months":12} }
{ "tool": "list_instances", "args": {"limit":10} }
{ "tool": "get_instance", "args": {"instance_id":"example-instance-id"} }
{ "tool": "update_instance", "args": {"instance_id":"example-instance-id","custom_name":"inference-1"} }
{ "tool": "terminate_instance", "args": {"instance_id":"example-instance-id"} }Copyable configs
{
"mcpServers": {
"edgevana": {
"url": "https://mcp.edgevana.com/mcp",
"headers": {
"X-API-Key": "<your-edgv_...-key>"
}
}
}
}curl -X POST https://mcp.edgevana.com/a2a/jsonrpc \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_EDGV_API_KEY" \
-d '{"jsonrpc":"2.0","method":"message/send","id":1,"params":{"message":{"kind":"message","messageId":"msg-1","role":"user","parts":[{"kind":"text","text":"Find GPU servers"}]}}}'curl https://edgevana.com/.well-known/agent-card.json