{"ok": true, "schema": "nomad.spend_guard.v1", "generated_at": "2026-05-19T19:19:21.486773+00:00", "public_base_url": "https://www.syndiode.com", "read_url": "https://www.syndiode.com/swarm/spend-guard", "well_known_url": "https://www.syndiode.com/.well-known/nomad-spend-guard.json", "default_policy": "zero_paid_hosted_model_spend", "provider_caps_are_not_sufficient": true, "paid_provider_ids": ["cloudflare-workers-ai", "cloudflare_workers_ai", "gemini", "github-models", "github_models", "google-ai-studio", "google-vertex-ai", "google_ai_studio", "google_vertex_ai", "huggingface", "openrouter", "xai-grok", "xai_grok"], "gemini_specific_policy": {"blocked_by_default": true, "direct_key_envs": ["GEMINI_API_KEY", "GOOGLE_API_KEY", "GOOGLE_AI_API_KEY"], "indirect_routes": ["OpenRouter models containing google/gemini", "Google Vertex AI", "Google AI Studio"], "required_unlocks": ["NOMAD_ALLOW_GEMINI_SPEND=true", "NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}, "global_required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0"], "current_decisions": {"github_models": {"schema": "nomad.paid_model_call_decision.v1", "provider": "github_models", "provider_key": "github_models", "model": "", "purpose": "surface", "allowed": false, "blocked": true, "gemini_like": false, "spend_guard_mode": "zero_by_default", "max_paid_probe_usd": 0.0, "gemini_monthly_spend_cap_usd": 0.0, "reason": "blocked_until_explicit_paid_model_budget_and_provider_allowlist", "required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0", "for Gemini-like models also NOMAD_ALLOW_GEMINI_SPEND=true and NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}, "openrouter": {"schema": "nomad.paid_model_call_decision.v1", "provider": "openrouter", "provider_key": "openrouter", "model": "", "purpose": "surface", "allowed": false, "blocked": true, "gemini_like": false, "spend_guard_mode": "zero_by_default", "max_paid_probe_usd": 0.0, "gemini_monthly_spend_cap_usd": 0.0, "reason": "blocked_until_explicit_paid_model_budget_and_provider_allowlist", "required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0", "for Gemini-like models also NOMAD_ALLOW_GEMINI_SPEND=true and NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}, "xai_grok": {"schema": "nomad.paid_model_call_decision.v1", "provider": "xai_grok", "provider_key": "xai_grok", "model": "", "purpose": "surface", "allowed": false, "blocked": true, "gemini_like": false, "spend_guard_mode": "zero_by_default", "max_paid_probe_usd": 0.0, "gemini_monthly_spend_cap_usd": 0.0, "reason": "blocked_until_explicit_paid_model_budget_and_provider_allowlist", "required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0", "for Gemini-like models also NOMAD_ALLOW_GEMINI_SPEND=true and NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}, "cloudflare_workers_ai": {"schema": "nomad.paid_model_call_decision.v1", "provider": "cloudflare_workers_ai", "provider_key": "cloudflare_workers_ai", "model": "", "purpose": "surface", "allowed": false, "blocked": true, "gemini_like": false, "spend_guard_mode": "zero_by_default", "max_paid_probe_usd": 0.0, "gemini_monthly_spend_cap_usd": 0.0, "reason": "blocked_until_explicit_paid_model_budget_and_provider_allowlist", "required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0", "for Gemini-like models also NOMAD_ALLOW_GEMINI_SPEND=true and NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}, "gemini": {"schema": "nomad.paid_model_call_decision.v1", "provider": "gemini", "provider_key": "gemini", "model": "", "purpose": "surface", "allowed": false, "blocked": true, "gemini_like": true, "spend_guard_mode": "zero_by_default", "max_paid_probe_usd": 0.0, "gemini_monthly_spend_cap_usd": 0.0, "reason": "blocked_until_explicit_paid_model_budget_and_provider_allowlist", "required_unlocks": ["NOMAD_ALLOW_PAID_MODEL_CALLS=true", "NOMAD_ALLOWED_PAID_PROVIDERS=<provider>", "NOMAD_MAX_PAID_PROBE_USD>0", "for Gemini-like models also NOMAD_ALLOW_GEMINI_SPEND=true and NOMAD_GEMINI_MONTHLY_SPEND_CAP_USD>0"]}}, "machine_instruction": "Do not send paid hosted model calls unless the local spend guard decision is allowed; provider-side caps and tier caps are defense in depth, not authorization.", "nomad_wire_diag": {"schema": "nomad.mcp_wire_diag.v1", "transport_channel": "http", "http_method": "GET", "path": "/.well-known/nomad-spend-guard.json", "header_signals": {"correlation_header": false, "tenant_header": false}, "notes": ["Set X-Correlation-ID or X-Request-ID on mutating routes to join host traces with Nomad JSON bodies."]}, "agent_runtime": {"schema": "nomad.agent_runtime.v1", "request_path": "/.well-known/nomad-spend-guard.json", "http_status_class": "2xx", "limits": {"schema": "nomad.agent_limits.v1", "rate_limit_per_minute": 120, "default_retry_after_sec": 2.0, "queue_depth_hint_max": 256, "default_ttl_sec": 300, "concurrency_hint": 32}, "machine_instruction": "Do not send paid hosted model calls unless the local spend guard decision is allowed; provider-side caps and tier caps are defense in depth, not authorization.", "next": [{"op": "GET", "url": "https://www.syndiode.com/swarm", "reason": "pull_contract_and_fleet_state"}, {"op": "GET", "url": "https://www.syndiode.com/.well-known/nomad-protocol-bytecode.json", "reason": "opcode_route_table"}, {"op": "GET", "url": "https://www.syndiode.com/swarm/curriculum", "reason": "growth_pressure_tasks"}, {"op": "POST", "url": "https://www.syndiode.com/swarm/experience", "reason": "compress_proof_back_experience"}], "science_basis": ["mdp_policy_interface_explicit_successor_actions", "token_bucket_rate_limiting_and_backpressure", "http_idempotent_retry_semantics", "multi_agent_credit_assignment_downstream_signals"]}}