This page is GEOstack's own shadow URL. When an AI agent hits our site, this is what it sees - clean, fast, verifiable, and actionable. No 16,000-token HTML soup. Just signal.
The infrastructure for the agentic internet.
We're building infrastructure for both.
curl -H "Accept: application/json" \
shadow.geostack.xyz/geostack/
# Returns clean JSON with state proof and actions
import requests
r = requests.get(
"https://shadow.geostack.xyz/geostack/",
headers={"Accept": "application/json"}
)
product = r.json()
# product["actions"]["join_waitlist"]
# → "POST /api/waitlist"
# Same URL in a browser:
GET shadow.geostack.xyz/geostack/
Accept: text/html
# Returns semantic HTML with forms
# - agents can POST directly
One URL. Two formats. The Accept header decides. Send Accept: application/json and you get structured data. Send Accept: text/html and you get a clean, semantic storefront with POST-able forms. Both are always in sync. This is the dual-interface architecture - the dual-interface architecture.
Every product gets a verifiable, agent-readable page. Here's a real example of what an agent sees when it browses a shadow storefront.
{
"id": 1042,
"name": "Premium Leather Jacket XL",
"sku": "LJ-XL-BLK",
"price": 299.99,
"currency": "USD",
"inventory": {
"available": 12,
"managed": true,
"allow_backorder": false
},
"state_proof": "sha256:a4f2e8b3c1..." VERIFIED,
"verified_at": "2026-04-07T09:42:17Z",
"confidence": "verified",
"actions": {
"browse_products": {
"method": "GET",
"url": "/products"
},
"search": {
"method": "GET",
"url": "/search?q={query}"
}
}
}
Join the waitlist. When Shadow launches, you'll be first to install it.
Get Early Access →