{"summary":{"total":61,"by_category":{"breach":1,"geophys":1,"gov":9,"internal":5,"llm":9,"news":6,"pubrecords":8,"security":7,"social":6,"tls":2,"traffic":3,"weather":4},"configured":44,"keyed":11},"categories":["breach","geophys","gov","internal","llm","news","pubrecords","security","social","tls","traffic","weather"],"items":[{"id":"anthropic","name":"Anthropic Claude","category":"llm","kind":"api-key","env":"ANTHROPIC_API_KEY","upstream":"https://api.anthropic.com/v1/messages","docs":"https://console.anthropic.com/settings/keys","required_for":["agents.dispatch","seymour.ai_analyze","public.chat"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"openai","name":"OpenAI GPT","category":"llm","kind":"api-key","env":"OPENAI_API_KEY","upstream":"https://api.openai.com/v1/chat/completions","docs":"https://platform.openai.com/api-keys","required_for":["agents.dispatch"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"gemini","name":"Google Gemini","category":"llm","kind":"api-key","env":"GEMINI_API_KEY","upstream":"https://generativelanguage.googleapis.com","docs":"https://aistudio.google.com/app/apikey","required_for":["agents.dispatch","seymour.ai_chat"],"free":true,"status":{"configured":false,"length":0,"last4":null}},{"id":"groq","name":"Groq (Llama/Mixtral)","category":"llm","kind":"api-key","env":"GROQ_API_KEY","upstream":"https://api.groq.com/openai/v1/chat/completions","docs":"https://console.groq.com/keys","required_for":["agents.dispatch","seymour.ai_chat"],"free":true,"status":{"configured":false,"length":0,"last4":null}},{"id":"xai","name":"xAI Grok","category":"llm","kind":"api-key","env":"XAI_API_KEY","upstream":"https://api.x.ai/v1/chat/completions","docs":"https://console.x.ai/","required_for":["agents.dispatch"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"perplexity","name":"Perplexity Sonar","category":"llm","kind":"api-key","env":"PERPLEXITY_API_KEY","upstream":"https://api.perplexity.ai/chat/completions","docs":"https://docs.perplexity.ai/","required_for":["agents.dispatch"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"mistral","name":"Mistral","category":"llm","kind":"api-key","env":"MISTRAL_API_KEY","upstream":"https://api.mistral.ai/v1/chat/completions","docs":"https://console.mistral.ai/api-keys/","required_for":["seymour.ai_report"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"ollama","name":"Ollama (local)","category":"llm","kind":"http-endpoint","env":"OLLAMA_BASE_URL","upstream":"http://127.0.0.1:11434","docs":"https://ollama.com/","required_for":["agents.dispatch","ai.chat"],"free":true,"status_hint":"Install locally: `winget install Ollama.Ollama` then `ollama pull gemma3:1b moondream`.","status":{"configured":false,"length":0,"last4":null}},{"id":"here","name":"HERE Traffic API","category":"traffic","kind":"api-key","env":"HERE_API_KEY","upstream":"https://data.traffic.hereapi.com","docs":"https://platform.here.com/","required_for":["seymour.traffic"],"free":true,"status_hint":"Free tier requires no credit card. Sign up and paste the project key.","status":{"configured":false,"length":0,"last4":null}},{"id":"indot_511","name":"INDOT 511IN cameras","category":"traffic","kind":"http-endpoint","env":null,"upstream":"https://content.trafficwise.org/cctv","docs":"https://511in.org/","required_for":["seymour.cameras","seymour.camera_proxy","seymour.recorder"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"openmeteo","name":"Open-Meteo","category":"weather","kind":"http-endpoint","env":null,"upstream":"https://api.open-meteo.com/v1/forecast","docs":"https://open-meteo.com/","required_for":["seymour.weather"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"nws_alerts","name":"US NWS alerts","category":"weather","kind":"http-endpoint","env":null,"upstream":"https://api.weather.gov/alerts","docs":"https://www.weather.gov/documentation/services-web-api","required_for":["seymour.alerts","feeds.nws"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"openweather","name":"OpenWeatherMap","category":"weather","kind":"api-key","env":"OPENWEATHER_API_KEY","upstream":"https://api.openweathermap.org/data/2.5","docs":"https://openweathermap.org/api","required_for":["seymour.weather_fallback"],"free":true,"status":{"configured":false,"length":0,"last4":null}},{"id":"cisa_kev","name":"CISA Known Exploited Vulns","category":"security","kind":"http-endpoint","env":null,"upstream":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","docs":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog","required_for":["sec.threats.kev"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"urlhaus","name":"Abuse.ch URLhaus","category":"security","kind":"http-endpoint","env":null,"upstream":"https://urlhaus.abuse.ch/","docs":"https://urlhaus.abuse.ch/api/","required_for":["sec.threats.urlhaus"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"feodo","name":"Abuse.ch Feodo Tracker","category":"security","kind":"http-endpoint","env":null,"upstream":"https://feodotracker.abuse.ch/","docs":"https://feodotracker.abuse.ch/downloads/","required_for":["sec.threats.feodo"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"sslbl","name":"Abuse.ch SSLBL","category":"security","kind":"http-endpoint","env":null,"upstream":"https://sslbl.abuse.ch/","docs":"https://sslbl.abuse.ch/blacklist/","required_for":["sec.threats.sslbl"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"ipinfo","name":"ipinfo.io (lite)","category":"tls","kind":"http-endpoint","env":null,"upstream":"https://ipinfo.io/","docs":"https://ipinfo.io/","required_for":["sec.lookup.ip"],"free":true,"status_hint":"~50k/month free tier without auth. Rate-limited.","status":{"configured":true,"length":0,"last4":null}},{"id":"rdap","name":"RDAP (modern WHOIS)","category":"tls","kind":"http-endpoint","env":null,"upstream":"https://rdap.org/","docs":"https://rdap.org/","required_for":["sec.lookup.domain"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"hibp","name":"Have I Been Pwned (passwords)","category":"breach","kind":"http-endpoint","env":null,"upstream":"https://api.pwnedpasswords.com/range","docs":"https://haveibeenpwned.com/API/v3","required_for":["sec.lookup.pwned"],"free":true,"status_hint":"k-anonymity check — full password never leaves server.","status":{"configured":true,"length":0,"last4":null}},{"id":"hn","name":"Hacker News Firebase API","category":"social","kind":"http-endpoint","env":null,"upstream":"https://hacker-news.firebaseio.com/v0/","docs":"https://github.com/HackerNews/API","required_for":["feeds.social.hn"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"mastodon","name":"Mastodon public timelines","category":"social","kind":"http-endpoint","env":null,"upstream":"https://mastodon.social/api/v1/","docs":"https://docs.joinmastodon.org/","required_for":["feeds.social.mastodon"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"bluesky","name":"Bluesky public feed","category":"social","kind":"http-endpoint","env":null,"upstream":"https://public.api.bsky.app/xrpc","docs":"https://docs.bsky.app/docs/get-started","required_for":["feeds.social.bluesky"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gov_in","name":"Indiana.gov press RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.in.gov/core/newsfeed/state-newsfeed.rss","docs":"https://www.in.gov/","required_for":["feeds.in_gov"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gov_indot","name":"INDOT press RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.in.gov/core/newsfeed/indot-newsfeed.rss","docs":"https://www.in.gov/indot/","required_for":["feeds.indot"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gov_iag","name":"Indiana AG press RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.in.gov/core/newsfeed/attorneygeneral-newsfeed.rss","docs":"https://www.in.gov/attorneygeneral/","required_for":["feeds.iag"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gov_doj","name":"US DOJ press RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.justice.gov/feeds/opa/justice-news.xml","docs":"https://www.justice.gov/news","required_for":["feeds.doj"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gov_ftc","name":"US FTC press RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.ftc.gov/feeds/press-release.xml","docs":"https://www.ftc.gov/news-events","required_for":["feeds.ftc"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"cisa_rss","name":"CISA Advisories RSS","category":"security","kind":"rss","env":null,"upstream":"https://www.cisa.gov/cybersecurity-advisories/all.xml","docs":"https://www.cisa.gov/news-events/cybersecurity-advisories","required_for":["feeds.cisa"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"usgs_quakes","name":"USGS earthquakes","category":"geophys","kind":"http-endpoint","env":null,"upstream":"https://earthquake.usgs.gov/earthquakes/feed/","docs":"https://earthquake.usgs.gov/fdsnws/event/1/","required_for":["feeds.usgs"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"gmail","name":"Google Gmail OAuth","category":"social","kind":"oauth","env":"GOOGLE_OAUTH_CLIENT_ID","upstream":"https://gmail.googleapis.com/gmail/v1","docs":"https://console.cloud.google.com/apis/credentials","required_for":["tools.gmail.*"],"free":true,"status_hint":"OAuth 2.0 installed-app flow. Set GOOGLE_OAUTH_CLIENT_ID + GOOGLE_OAUTH_CLIENT_SECRET; then visit the auth-url endpoint.","status":{"configured":false,"length":0,"last4":null}},{"id":"facebook_page","name":"Facebook Page access token","category":"social","kind":"api-key","env":"FACEBOOK_PAGE_ACCESS_TOKEN","upstream":"https://graph.facebook.com/v19.0","docs":"https://developers.facebook.com/tools/explorer/","required_for":["tools.facebook.post","tools.facebook.feed"],"free":false,"status_hint":"Use Graph API Explorer; needs pages_manage_posts + pages_read_engagement scopes + app review for production.","status":{"configured":false,"length":0,"last4":null}},{"id":"stability","name":"Stability AI (SD3 / SDXL)","category":"llm","kind":"api-key","env":"STABILITY_API_KEY","upstream":"https://api.stability.ai/v2beta/stable-image/generate","docs":"https://platform.stability.ai/account/keys","required_for":["tools.image.generate"],"free":false,"status":{"configured":false,"length":0,"last4":null}},{"id":"jwt_secret","name":"JWT signing secret","category":"internal","kind":"internal-secret","env":"JWT_SECRET","upstream":null,"docs":"Auto-generated by bootstrap.","required_for":["auth.admin","auth.app"],"free":true,"status_hint":"Rotate carefully — invalidates all issued tokens.","status":{"configured":false,"length":0,"last4":null}},{"id":"session_secret","name":"Session secret","category":"internal","kind":"internal-secret","env":"SESSION_SECRET","upstream":null,"docs":"Auto-generated by bootstrap.","required_for":["sessions"],"free":true,"status":{"configured":false,"length":0,"last4":null}},{"id":"default_admin","name":"Default admin credentials","category":"internal","kind":"internal-secret","env":"DEFAULT_ADMIN_PASSWORD","upstream":null,"docs":"Seeded on first run; change via Settings → Account.","required_for":["bootstrap.seed_admin"],"free":true,"status":{"configured":false,"length":0,"last4":null}},{"id":"osm_overpass","name":"OpenStreetMap Overpass API","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://overpass-api.de/api/interpreter","docs":"https://wiki.openstreetmap.org/wiki/Overpass_API","required_for":["surveillance.osm_cameras","surveillance_map.osm_layer"],"free":true,"status_hint":"Shared public endpoint; refreshes are rate-limited to once per 10 minutes.","status":{"configured":true,"length":0,"last4":null}},{"id":"flock_transparency","name":"Flock Safety Transparency Portal","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://transparency.flocksafety.com","docs":"https://www.flocksafety.com/transparency","required_for":["flock.refresh","flock.validate","agency.deep_dive"],"free":true,"status_hint":"Cloudflare-protected; we use curl_cffi Chrome impersonation. No public agency directory — slugs must be known.","status":{"configured":true,"length":0,"last4":null}},{"id":"eff_atlas","name":"EFF Atlas of Surveillance","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://atlasofsurveillance.org/download.csv","docs":"https://atlasofsurveillance.org/about","required_for":["atlas.ingest","agency.deep_dive"],"free":true,"status_hint":"CSV download by state filter. Licensed CC-BY-SA-4.0.","status":{"configured":true,"length":0,"last4":null}},{"id":"indiana_ckan","name":"Indiana Data Hub (CKAN)","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://hub.mph.in.gov","docs":"https://hub.mph.in.gov/","required_for":["foia.ingest_vendor_payments"],"free":true,"status_hint":"State comptroller dataset ae7baff7-… holds quarterly vendor-payment CSVs.","status":{"configured":true,"length":0,"last4":null}},{"id":"trafficwise_cctv","name":"INDOT content.trafficwise.org (INDOT cams)","category":"traffic","kind":"http-endpoint","env":null,"upstream":"https://content.trafficwise.org/cctv","docs":"https://511in.org/","required_for":["indot.catalog","seymour.cameras"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"google_news_rss","name":"Google News RSS","category":"news","kind":"rss","env":null,"upstream":"https://news.google.com/rss/search","docs":"https://news.google.com/","required_for":["signals.news_mentions"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"leaflet_cdn","name":"unpkg.com (Leaflet CDN)","category":"internal","kind":"http-endpoint","env":null,"upstream":"https://unpkg.com/leaflet@1.9.4/dist/","docs":"https://leafletjs.com/","required_for":["surveillance_map.ui","agency.mini_map"],"free":true,"status_hint":"Browser-side only; allow-listed in CSP_ADMIN.","status":{"configured":true,"length":0,"last4":null}},{"id":"osm_tiles","name":"OpenStreetMap tile servers","category":"internal","kind":"http-endpoint","env":null,"upstream":"https://tile.openstreetmap.org","docs":"https://operations.osmfoundation.org/policies/tiles/","required_for":["surveillance_map.tiles","agency.mini_map"],"free":true,"status_hint":"Respect OSMF tile-usage policy; no heavy batch tiling.","status":{"configured":true,"length":0,"last4":null}},{"id":"broadcastify","name":"Broadcastify public-safety feeds","category":"news","kind":"http-endpoint","env":null,"upstream":"https://www.broadcastify.com/listen/stid/18","docs":"https://www.broadcastify.com/","required_for":["radio.feed_catalog"],"free":true,"status_hint":"We mirror feed metadata only; audio stays on Broadcastify. Listing pages are public, no API key needed.","status":{"configured":true,"length":0,"last4":null}},{"id":"nws_cap","name":"NWS Common Alerting Protocol (Indiana)","category":"weather","kind":"http-endpoint","env":null,"upstream":"https://api.weather.gov/alerts/active?area=IN","docs":"https://www.weather.gov/documentation/services-web-api","required_for":["public_signals.nws"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"nhtsa_fars","name":"NHTSA FARS (fatal-crash CSV)","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://static.nhtsa.gov/nhtsa/downloads/FARS/","docs":"https://www.nhtsa.gov/research-data/fatality-analysis-reporting-system-fars","required_for":["public_signals.fars"],"free":true,"status_hint":"~20MB ZIP per year; ingest is slow. Indiana STATE=18.","status":{"configured":true,"length":0,"last4":null}},{"id":"bluesky_search","name":"Bluesky public search","category":"social","kind":"http-endpoint","env":null,"upstream":"https://public.api.bsky.app/xrpc/app.bsky.feed.searchPosts","docs":"https://docs.bsky.app/","required_for":["public_signals.bluesky"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_wrtv","name":"WRTV Indianapolis RSS","category":"news","kind":"rss","env":null,"upstream":"https://www.wrtv.com/news.rss","docs":"https://www.wrtv.com/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_fox59","name":"FOX 59 Indianapolis RSS","category":"news","kind":"rss","env":null,"upstream":"https://fox59.com/feed/","docs":"https://fox59.com/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_wishtv","name":"WISH-TV Indianapolis RSS","category":"news","kind":"rss","env":null,"upstream":"https://www.wishtv.com/feed/","docs":"https://www.wishtv.com/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_ibj","name":"Indianapolis Business Journal RSS","category":"news","kind":"rss","env":null,"upstream":"https://www.ibj.com/rss/latest","docs":"https://www.ibj.com/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_carmel","name":"City of Carmel RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.carmel.in.gov/RSSFeed.aspx?ModID=1&CID=All-0","docs":"https://www.carmel.in.gov/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"rss_fishers","name":"City of Fishers RSS","category":"gov","kind":"rss","env":null,"upstream":"https://www.fishers.in.us/RSSFeed.aspx?ModID=1&CID=All-0","docs":"https://www.fishers.in.us/","required_for":["public_signals.rss"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"in_mycase","name":"Indiana MyCase (courts)","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://public.courts.in.gov/mycase","docs":"https://www.in.gov/courts/judicial-administration/publications/myinfo/","required_for":["public_records.mycase"],"free":true,"status_hint":"We build search URLs; user clicks through. No API.","status":{"configured":true,"length":0,"last4":null}},{"id":"vinelink_in","name":"VINElink Indiana (inmate + victim notify)","category":"pubrecords","kind":"http-endpoint","env":null,"upstream":"https://www.vinelink.com/search/IN","docs":"https://www.vinelink.com/","required_for":["public_records.vinelink"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"pacer_in","name":"PACER — Indiana federal courts","category":"pubrecords","kind":"http-endpoint","env":"PACER_ACCOUNT","upstream":"https://ecf.insd.uscourts.gov/","docs":"https://pacer.uscourts.gov/","required_for":["public_records.pacer"],"free":false,"status_hint":"User-held PACER account; we never transmit credentials.","status":{"configured":false,"length":0,"last4":null}},{"id":"in_inbiz","name":"INBiz (Secretary of State business search)","category":"gov","kind":"http-endpoint","env":null,"upstream":"https://bsd.sos.in.gov/publicbusinesssearch","docs":"https://inbiz.in.gov/","required_for":["public_records.inbiz"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"in_pla","name":"Indiana Professional Licensing Agency","category":"gov","kind":"http-endpoint","env":null,"upstream":"https://mylicense.in.gov/everification/Search.aspx","docs":"https://www.in.gov/pla/","required_for":["public_records.inprof"],"free":true,"status":{"configured":true,"length":0,"last4":null}},{"id":"radare2_github","name":"radare2 GitHub releases","category":"security","kind":"http-endpoint","env":null,"upstream":"https://api.github.com/repos/radareorg/radare2/releases/latest","docs":"https://github.com/radareorg/radare2","required_for":["r2.install","r2.analyze"],"free":true,"status_hint":"On-demand: admin clicks install, we fetch the w64 ZIP + extract under data_dir/tools/radare2/.","status":{"configured":true,"length":0,"last4":null}},{"id":"r2pipe","name":"r2pipe Python bindings","category":"security","kind":"http-endpoint","env":null,"upstream":"https://pypi.org/project/r2pipe/","docs":"https://book.rada.re/scripting/r2pipe.html","required_for":["r2.analyze"],"free":true,"status":{"configured":true,"length":0,"last4":null}}]}