Vice City Hub
GTA VI news, GTA RP servers, Web3 domains and merch for AI agents, plus crypto donations.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http vice-city-hub 'https://lpglkglhjdqnktybksth.supabase.co/functions/v1/agent-api/mcp' --header 'Authorization: <Optional. Read tools are anonymous. For order and donation tools use '\''Bearer vch_live_...'\'' (call register_agent first).>'
{
"mcpServers": {
"vice-city-hub": {
"type": "http",
"url": "https://lpglkglhjdqnktybksth.supabase.co/functions/v1/agent-api/mcp",
"headers": {
"Authorization": "<Optional. Read tools are anonymous. For order and donation tools use 'Bearer vch_live_...' (call register_agent first).>"
}
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
Vice City Hub 🌴 — v12 "Open to Agents"
The GTA VI fan hub for humans and AI agents. Neon UI for people, MCP + REST +
llms.txt+ safe auto-buy for machines.
Live: https://vicecityhub.github.io/vicecityhub · Agent docs: /llms.txt · Agent console: /agents.html
What v12 adds
| Layer | What | Where |
|---|---|---|
| Agent API (REST) | catalog, news, RP data, search, quotes, orders, intents | supabase/functions/agent-api/ |
| MCP server | 17 tools, stateless streamable-HTTP | …/agent-api/mcp |
| Discovery | llms.txt, llms-full.txt, .well-known/{agent.json,mcp.json,api-catalog,ai-plugin.json,security.txt}, openapi.json | generated → public/ |
| Static feeds | data/{news,catalog,rp-*}.json + manifest data/index.json | generated → public/data/ |
| Per-page SEO/agent markup | <link> hints, one JSON-LD @graph, <noscript> content | vite-plugins/agent-surface.ts |
| Agent purchases | price-locked quotes → idempotent orders → PayPal or on-chain stablecoin, human-set spend mandates | orders.ts, verify.ts, owner.ts |
| Human console | mint/revoke spend-limited keys, browse catalog, track orders | src/pages/Agents.tsx |
Humans keep the full neon UI (React SPA per page). Nothing was removed from the human experience.
Single source of truth
site.config.json — name, URLs, page list (titles, descriptions, priorities, feeds). The generator, the Vite plugin, llms.txt, the sitemap and all JSON-LD read from it. Add a page → add one entry there.
Build pipeline
npm run build
├─ prebuild scripts/gen-agent-surface.mjs live API → public/{llms*.txt, openapi.json, sitemap.xml, .well-known/*, data/*}
├─ tsc -b
└─ vite build (agentSurface plugin injects discovery links + JSON-LD + <noscript> into every HTML entry)
The generator never fails a build: if the API is unreachable it keeps the previous files (--strict to fail instead).
CI (.github/workflows/deploy.yml) rebuilds on push, manually, and every 6 h after the news agent so feeds stay fresh, then verifies the agent files exist in dist/.
Project map
site.config.json ← edit pages/URLs here
vite-plugins/agent-surface.ts
scripts/
gen-agent-surface.mjs ← llms.txt, .well-known, feeds, sitemap
test-agent-api.mjs ← 30-check safe smoke test (never moves money)
news-agent.mjs ← scheduled news ingestion
selftest-verify.mjs ← on-chain verifier self-test
public/ ← robots.txt + generated agent files (committed so Pages works even if generation fails)
src/{pages,components,lib,rp-hub}
supabase/functions/{agent-api,paypal-checkout,printful-hub,link-preview,…}
docs/legacy/ ← old one-off notes/scripts (kept, not used)
Agent purchase protocol (short)
POST /v1/agents/register→ key ($100/order,$250/day) — or a human mints a bigger mandate in the console.POST /v1/quotes→ price locked 15 min.POST /v1/orders+Idempotency-Key→next_action(PayPalapprove_urlor exact-amount stablecoin transfer).- Crypto (no PayPal, fully automatic): send exactly
amount_duein USDT/USDC.pg_cronruns the reconciler every minute (/v1/internal/reconcile): it finds the transfer by its unique amount tag, verifies it on-chain, marks the orderpaidand, for merch, submits the Printful order (PRINTFUL_AUTO_CONFIRM=0keeps it as a draft). Failed Printful calls are retried by the reconciler.payment-proofis an optional shortcut. PayPal:capture→GET /v1/orders/{id}/statusuntilpaid.
Peer listings (partner products, community servers) are intent-only — the Hub never custodies funds for them.
Develop
npm ci
npm run dev # Vite
npm run gen:agent # regenerate agent surface
npm run typecheck
npm run test:agent # smoke-test the live Agent API
npm run build
Deploy the edge function: npx supabase functions deploy agent-api --no-verify-jwt --use-api
Known platform limits (GitHub Pages project site)
robots.txt, llms.txt and /.well-known/* are served under /vicecityhub/, not at the host root. Crawlers and some agents look at https://vicecityhub.github.io/robots.txt (root). For full spec-compliant discovery use a custom domain, or publish the same files from a vicecityhub.github.io user-site repo. The Agent API itself (Supabase) serves /v1 index, OpenAPI and MCP from its own root, so it is discoverable regardless.
Questions fréquentes
Qu'est-ce que Vice City Hub ?
GTA VI news, GTA RP servers, Web3 domains and merch for AI agents, plus crypto donations.
Comment installer Vice City Hub ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http vice-city-hub 'https://lpglkglhjdqnktybksth.supabase.co/functions/v1/agent-api/mcp' --header 'Authorization: <Optional. Read tools are anonymous. For order and donation tools use '\''Bearer vch_live_...'\'' (call register_agent first).>'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Vice City Hub ?
Oui. Il attend Authorization, à renseigner dans sa configuration.
Vice City Hub est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient Vice City Hub ?
Il est publié par vicecityhub. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.