{"name":"agent-dev-ops","version":"1.0.0","description":"Agent-native subdomain router. Bind any subdomain of agentserviceindex.com to a server you control — either by DNS A record (if you have a public IP) or by a Cloudflare Tunnel (if your app runs on localhost). Lets an agent publish a service to the open web with no human DNS or account work.","base_domain":"agentserviceindex.com","constraints":{"max_dns_records_per_agent":5,"max_tunnels_per_agent":3,"max_create_calls_per_hour":10,"max_total_calls_per_hour":60,"subdomain_naming":"Auto-generated random hash; optional prefix (max 8 chars)"},"mcp":{"transport":"streamable-http","endpoint":"https://cloudflare.agentserviceindex.com/mcp"},"agent_quickstart":["1. CALL register() first to get agent_id and agent_secret. Store securely!","2. DECIDE your hosting situation:","   - Public IPv4 (cloud VM): use route_subdomain(agent_id, agent_secret, target_ip, ...)","   - Localhost / behind NAT (laptop): use create_tunnel(agent_id, agent_secret, local_port, ...)","3. WAIT ~10s for DNS propagation, then verify your hostname.","4. MANAGE your resources with list_resources(), update_route(), delete_route(), delete_tunnel()."],"tools":[{"name":"register","description":"Get agent credentials. Call this first.","input_schema":{"type":"object","properties":{}}},{"name":"route_subdomain","description":"Create a DNS A record routing a random subdomain to your public IPv4. ONLY use if your machine has a publicly-reachable IPv4 (e.g. a cloud VM). Returns the hostname you can share.","input_schema":{"type":"object","required":["agent_id","agent_secret","target_ip"],"properties":{"agent_id":{"type":"string","description":"From register()"},"agent_secret":{"type":"string","description":"From register()"},"target_ip":{"type":"string","description":"Your public IPv4"},"prefix":{"type":"string","description":"Optional subdomain prefix (max 8 chars)"},"label":{"type":"string","description":"Optional human-readable label"}}}},{"name":"create_tunnel","description":"Provision a Cloudflare Tunnel from a random subdomain to localhost:<local_port>. Use when your app runs locally / behind NAT. Requires cloudflared binary. After calling, run the returned run_command and keep it running.","input_schema":{"type":"object","required":["agent_id","agent_secret"],"properties":{"agent_id":{"type":"string","description":"From register()"},"agent_secret":{"type":"string","description":"From register()"},"local_port":{"type":"integer","default":80,"description":"Local port"},"prefix":{"type":"string","description":"Optional subdomain prefix (max 8 chars)"},"label":{"type":"string","description":"Optional human-readable label"}}}},{"name":"list_resources","description":"List all DNS records and tunnels you own.","input_schema":{"type":"object","required":["agent_id","agent_secret"],"properties":{"agent_id":{"type":"string"},"agent_secret":{"type":"string"}}}},{"name":"update_route","description":"Update the target IP of an existing DNS route.","input_schema":{"type":"object","required":["agent_id","agent_secret","hostname","new_target_ip"],"properties":{"agent_id":{"type":"string"},"agent_secret":{"type":"string"},"hostname":{"type":"string","description":"Full hostname to update"},"new_target_ip":{"type":"string","description":"New public IPv4"}}}},{"name":"delete_route","description":"Delete a DNS route you own.","input_schema":{"type":"object","required":["agent_id","agent_secret","hostname"],"properties":{"agent_id":{"type":"string"},"agent_secret":{"type":"string"},"hostname":{"type":"string","description":"Full hostname to delete"}}}},{"name":"delete_tunnel","description":"Delete a tunnel you own.","input_schema":{"type":"object","required":["agent_id","agent_secret","hostname"],"properties":{"agent_id":{"type":"string"},"agent_secret":{"type":"string"},"hostname":{"type":"string","description":"Full hostname the tunnel serves"}}}}]}