Engine Catalog
4got ships with 274 engine configurations in data/engines.kdl plus 18 handwritten engines in Go. Engines are grouped by category. Most require no API key; exceptions are noted.
Disabled engines are included but inactive by default. Enable them by setting disabled false in engines.kdl.
Handwritten engines (Go)
These are implemented directly in Go for speed, reliability, or because they need custom scraping logic.
| Engine | ID | Categories | Notes |
|---|---|---|---|
| Brave | brave | web, images, news | HTML scraping |
| DuckDuckGo | duckduckgo | web | HTML scraping |
google | web | HTML scraping | |
| Startpage | startpage | web | HTML scraping |
| Wikipedia | wikipedia | web | MediaWiki API |
| Mojeek | mojeek | web | HTML scraping |
| Marginalia | marginalia | web | JSON API |
| Wiby | wiby | web | JSON API |
| Hacker News | hackernews | news | Algolia API |
| YouTube | youtube | videos | HTML scraping |
| SoundCloud | soundcloud | music | JSON API |
| Flickr | flickr | images | JSON API |
| Pexels | pexels | images | JSON API |
| Yandex | yandex | web, images | HTML scraping |
| Qwant | qwant | web, images, news | JSON API |
| Bing | bing | web, images, news, videos | HTML scraping |
| Baidu | baidu | web | HTML scraping |
| Yahoo | yahoo | web, news | HTML scraping |
Sidecar engines (Python + Playwright)
These require the Python sidecar for JavaScript rendering:
| Engine | What it handles |
|---|---|
| Google (sidecar) | JS-heavy Google SERPs |
| Qwant (sidecar) | Qwant’s SPA rendering |
| Yandex (sidecar) | Yandex captcha bypass |
KDL-configured engines by category
Web (159 engines)
General web search. The largest category.
| Engine | ID | Notes |
|---|---|---|
| MDN Web Docs | mdn | JSON API |
| StackExchange | stackexchange | API, Q&A results |
| Open Library | openlib | Book search |
| npm | npm | Package registry |
| Anaconda | anaconda | HTML scraping |
| Arch Wiki | archwiki | REST API |
| Wikidata | wikidata | JSON API |
| Crossref | crossref | Academic DOIs |
| Apple App Store | apple_app_store | iTunes API |
| Boardreader | boardreader | Forum search |
| bpb.de | bpb | German civic education |
| CachyOS | cachy_os | |
| crates.io | crates | Rust packages |
| Docker Hub | docker_hub | |
| GitHub | github | Repo search |
| GitHub Code | github_code | Code search |
| GitHub Issues | github_issues | |
| GitHub Topics | github_topics | |
| GitLab | gitlab | |
| GitLab Snippets | gitlab_snippets | |
| Grokipedia | grokipedia | |
| Hacker News | hackernews | Algolia API |
| hex.pm | hex | Elixir packages |
| Hugging Face | huggingface | AI models |
| Lemmy | lemmy | Fediverse forums |
| Mastodon | mastodon | Fediverse posts |
| Microsoft Learn | microsoft_learn | |
| mwmbl | mwmbl | Open-source index |
| NVD | nvd | CVE/vulnerability DB |
| OpenAlex | openalex | Academic |
| OpenLibrary | openlibrary | |
| Pirate Bay | piratebay | Torrents |
reddit | ||
| tagesschau.de | tagesschau | German news (web+news) |
| Tootfinder | tootfinder | Mastodon search |
| Void Linux | voidlinux | |
| Wikipedia | wikipedia | |
| Simple Wikipedia | simple_wikipedia | |
| Wikibooks | wikibooks | |
| Wikinews | wikinews | |
| Wikiquote | wikiquote | |
| Wikisource | wikisource | |
| Wikivoyage | wikivoyage | |
| Wiktionary | wiktionary | |
| Wikimedia Commons | wikicommons | |
| Internet Archive | internet_archive | |
| LibreTranslate | libre_translate | |
| PubMed | pubmed | |
| RubyGems | rubygems | |
| CTAN | ctan | LaTeX packages |
| cdnjs | cdnjs | JS CDN |
| pub.dev | pub_dev | Dart packages |
| CocoaPods | cocoapods | iOS packages |
| OpenBSD Ports | openbsd_ports | |
| TVmaze | tvmaze | TV shows |
| TMDB | tmdb | Movies |
| OpenLibrary Books | openlibrary_search | |
| LibriVox | librivox | Audiobooks |
| Project Gutenberg | gutenberg | Free ebooks |
| Giphy | giphy | GIFs; uses public API key |
| OpenStreetMap | openstreetmap | Nominatim |
| Photon | photon | Geocoder |
| Open-Meteo | open_meteo | Weather data |
| Alpine Packages | alpine_packages | |
| Homebrew | homebrew | Disabled |
| Flathub | flathub | |
| Snapcraft | snapcraft | |
| YTS | yts | Movie torrents |
| Discogs | discogs | |
| Last.fm | lastfm | |
| Urban Dictionary | urban_dictionary | |
| DDG Definitions | duckduckgo_definitions | |
| SVGRepo | svgrepo | |
| Steam | steam | Games |
| PyPI | pypi | Python packages |
| 1337x | 1337x | Torrents |
| APKMirror | apkmirror | Android APKs |
| eBay | ebay | |
| F-Droid | fdroid | FOSS Android apps |
| Solid Torrents | solidtorrents | |
| Wordnik | wordnik | Dictionary |
| fyyd | fyyd | Podcasts; disabled |
| Podcast Index | podcast_index | |
| Semantic Scholar | semantic_scholar | Academic |
| SourceHut | sourcehut | |
| Gitea | gitea | |
| lib.rs | librs / lib_rs | Rust crate search |
| Lobsters | lobste_rs | |
| Packagist | packagist | PHP packages |
| Radio Browser | radio_browser | |
| Dailymotion | dailymotion | |
| Bandcamp | bandcamp | |
| Stack Overflow Tags | stackoverflow_main | |
| Anaconda Cloud | anaconda_cloud | |
| arXiv | arxiv | Academic preprints |
| DBLP | dblp | CS bibliography |
| IA Scholar | internet_archive_scholar | |
| Nyaa | nyaa | Anime torrents |
| Library Genesis | libgen | |
| Codeberg | codeberg | |
| pkg.go.dev | pkg_go_dev | Go packages |
| Hackage | hackage | Haskell packages |
| NuGet | nuget | .NET packages |
| Maven | maven | Java packages |
| pkgs.org | pkgs_org | Cross-distro package search |
| Libraries.io | libraries_io | Multi-registry |
| Anna’s Archive | annas_archive | |
| Z-Library | z_library | |
| Metacritic | metacritic | |
| Rotten Tomatoes | rotten_tomatoes | |
| Letterboxd | letterboxd | |
| AniDB | anidb | |
| VNDB | vndb | Visual novels |
| PCGamingWiki | pcgamingwiki | |
| IsThereAnyDeal | isthereanydeal | Game prices |
| BoardGameGeek | boardgamegeek | |
| WordReference | wordreference | |
| Linguee | linguee | |
| DeepL | deepl | Disabled |
| Brave Goggles | brave_goggles | |
| SearX | searx | Meta-meta-search |
| Whoogle | whoogle | |
| Stract | stract | |
| Yep | yep | |
| Rightdao | right_dao | |
| Presearch | presearch | |
| Alexandria | alexandria | |
| Petal Search | petalsearch | |
| Swisscows | swisscows | |
| MetaGer | metager | |
| eTools | etools | |
| Dogpile | dogpile | |
| Gibiru | gibiru | |
| searx.space | searx_space | Instance list |
| Monocles | monocles | |
| Mullvad Leta | mullvad_leta | |
| 4get.ca | 4get_ca | Sibling metasearch |
| Emojipedia | emojipedia | |
| Color Hex | colorhex | |
| AlternativeTo | alternativeto | |
| Goodreads | goodreads | |
| IMDB | imdb_search | |
| itch.io | itch_io | Indie games |
| Are.na | are_na | |
| Kickstarter | kickstarter | |
| Product Hunt | product_hunt | |
| IEEE Xplore | ieee | |
| Springer | springer_open | |
| CORE | core | Academic |
| DOAJ | doaj | Open access journals |
| Zenodo | zenodo | Research data |
| ORCID | orcid | |
| Unpaywall | unpaywall | Open access finder |
| OSF | osf | Preprints |
| ANN Anime | ann | Disabled |
| Kitsu | kitsu | Anime/manga |
| MyAnimeList | jikan | Via Jikan API |
| RAWG | rawg | Games |
| MangaDex | mangadex | |
| Open Food Facts | openfoodfacts | |
| MusicBrainz | musicbrainz | |
| OpenAIRE | openairedatasets | |
| Exchange Rate | exchangerate | |
| Ecosia | ecosia | Disabled |
| Mojeek | mojeek | Disabled |
| Marginalia | marginalia | Disabled |
| Etsy | etsy | |
| CRAN | cran | R packages; disabled |
| CPAN | cpan | Perl packages |
| Conda-Forge | conda_forge | Disabled |
| Repology | repology | Disabled |
| HowLongToBeat | howlongtobeat | Disabled |
| IGDB | igdb | Disabled |
| BASE Academic | base_search | |
| Fatcat Scholar | fatcat | |
| Google Scholar | google_scholar | Disabled |
Images (15 engines)
| Engine | ID | Notes |
|---|---|---|
| Art Institute of Chicago | artic | |
| ArtStation | artstation | POST API |
| findthatmeme | findthatmeme | Meme search |
| Openverse | openverse | CC-licensed |
| Pixabay | pixabay | |
| Adobe Stock | adobe_stock | |
| Unsplash | unsplash | |
| Wallhaven | wallhaven | |
| Pexels | pexels | |
| Flickr | flickr | |
| Wikimedia Commons | wikicommons_images | |
| Giphy | giphy | |
| SVGRepo | svgrepo | Vector graphics |
| DeviantArt | deviantart | Disabled |
| Pixiv | pixiv | Disabled |
Videos (13 engines)
| Engine | ID | Notes |
|---|---|---|
| Bilibili | bilibili | Chinese video |
| BitChute | bitchute | |
| CCC Media | ccc_media | Chaos Computer Club |
| Dailymotion | dailymotion | |
| IMDb | imdb | |
| Internet Archive Video | archive_video | |
| Invidious | invidious | YouTube frontend |
| Odysee | odysee | LBRY |
| PeerTube | peertube | Fediverse video |
| Vimeo | vimeo | |
| YouTube (no API) | youtube_noapi | Disabled |
| Rumble | rumble | Disabled |
| 360kan | 360search_videos | Disabled |
News (10 engines)
| Engine | ID | Notes |
|---|---|---|
| Yahoo News | yahoo_news | |
| Hacker News | hackernews_news | |
| Reuters | reuters | |
| tagesschau.de | tagesschau | German; also in web |
| Wikinews | wikinews | |
| The Guardian | the_guardian | Uses test API key |
| ANSA News | ansa | Italian wire service |
| AP News | ap_news | Disabled |
| Bing News | bing_news | Disabled |
| Google News | google_news | Disabled |
Music (13 engines)
| Engine | ID | Notes |
|---|---|---|
| Bandcamp | bandcamp | |
| Deezer | deezer | |
| Discogs | discogs | |
| Genius | genius | |
| Jamendo | jamendo | CC music |
| Last.fm | lastfm | |
| LibriVox | librivox | Audiobooks |
| Mixcloud | mixcloud | |
| MusicBrainz | musicbrainz | |
| Radio Browser | radio_browser | Internet radio |
| SoundCloud | soundcloud | |
| YouTube (no API) | youtube_noapi | Also videos; disabled |
| Freesound | freesound | Disabled; needs API key |
Science (12 engines)
| Engine | ID | Notes |
|---|---|---|
| arXiv | arxiv | |
| BASE | base_search_sci | Bielefeld Academic |
| CORE | core_sci | |
| Crossref | crossref_sci | |
| dblp | dblp | CS papers |
| DOAJ | doaj_sci | Open access |
| IA Scholar | internet_archive_scholar | |
| OpenAlex | openalex_sci | |
| PubMed | pubmed_sci | |
| Semantic Scholar | semantic_scholar_sci | |
| Zenodo | zenodo_sci | |
| Google Scholar | google_scholar | Disabled |
IT (15 engines)
| Engine | ID | Notes |
|---|---|---|
| Codeberg | codeberg | |
| crates.io | crates_io | Rust |
| Docker Hub | docker_hub_it | |
| GitHub Repos | github_repos_it | |
| GitLab | gitlab_it | |
| hex.pm | hex_it | Elixir |
| MDN | mdn_it | |
| npm | npm_search | |
| NuGet | nuget_it | .NET |
| Packagist | packagist_it | PHP |
| pkg.go.dev | pkg_go_dev | Go |
| pub.dev | pub_dev_it | Dart |
| PyPI | pypi_packages | Python |
| RubyGems | rubygems_it | |
| Stack Overflow | stackoverflow |
Files (9 engines)
| Engine | ID | Notes |
|---|---|---|
| 1337x | 1337x_files | |
| Anna’s Archive | annas_archive_files | |
| Library Genesis | libgen | |
| Nyaa | nyaa | Anime torrents |
| Pirate Bay | piratebay_files | |
| Solid Torrents | solidtorrents_files | |
| YTS | yts_files | Movie torrents |
| BT4G | bt4g | Disabled |
| TorrentGalaxy | torrentgalaxy | Disabled |
Social (6 engines)
| Engine | ID | Notes |
|---|---|---|
| Hacker News | hackernews_social | |
| Lemmy | lemmy_social | |
| Lobsters | lobsters_social | |
| Mastodon | mastodon_social | |
reddit_social | ||
| Tootfinder | tootfinder_social |
Books (4 engines)
| Engine | ID | Notes |
|---|---|---|
| Goodreads | goodreads_books | |
| Internet Archive | internet_archive_books | |
| Open Library | openlibrary_books | |
| Project Gutenberg | gutenberg_books |
Q&A (6 engines)
| Engine | ID | Notes |
|---|---|---|
| Ask Ubuntu | askubuntu_qa | |
| Math SE | math_se_qa | |
| Server Fault | serverfault_qa | |
| StackExchange | stackexchange_qa | |
| Super User | superuser_qa | |
| Unix & Linux SE | unix_se_qa |
Packages (9 engines)
| Engine | ID | Notes |
|---|---|---|
| Alpine Packages | alpine_packages_pkg | |
| Arch Wiki | archwiki_packages | |
| AUR | aur | |
| Flathub | flathub_pkg | |
| Gentoo Wiki | gentoo_wiki | |
| NixOS Packages | nixos_packages | |
| Void Linux | void_packages_pkg | |
| Homebrew | homebrew_pkg | Disabled |
| Repology | repology | Disabled |
Maps (2 engines)
| Engine | ID | Notes |
|---|---|---|
| OpenStreetMap (Nominatim) | nominatim_maps | |
| Photon Geocoder | photon_maps |
Weather (2 engines)
| Engine | ID | Notes |
|---|---|---|
| wttr.in | wttr_in | |
| Open-Meteo | open_meteo_weather |
Lyrics (1 engine)
| Engine | ID | Notes |
|---|---|---|
| Genius Lyrics | genius_lyrics |
Oracles
Oracles are instant-answer widgets shown above search results. They trigger on specific query patterns and provide rich, interactive answers without requiring a click-through. Oracles are checked in CheckOracles() in oracles.go. Access can be restricted per-group via oracle-permissions.kdl.
Local oracles (no external calls)
These run entirely on the server with no network requests. They are mutually exclusive — the first match wins and skips all remaining oracles.
| Oracle | Permission key | Trigger patterns | What it shows |
|---|---|---|---|
| Calculator | calculator | 2+2, sqrt(16), 15% of 200, sin(1.5), 2^8 | Arithmetic, trig, logarithms, percentage calculations |
| Unit Converter | unit_converter | 10 km to miles, 72 fahrenheit to celsius, 5 gallons to liters, 100 fl oz to ml | Length, weight, volume, speed, data storage, cooking units, temperature, force/mass |
| Base Converter | base_converter | 0xff in decimal, 255 in hex, 255 in binary, 0b1010 in decimal, 0o77 in hex | Decimal, hex, binary, octal conversions |
| Color | color | #FF5500, #f50, rgb(255,85,0), hsl(20,100%,50%) | Color swatch with hex/RGB/HSL conversions |
| Private IP | private_ip | Bare IPv4/IPv6 addresses in private ranges (192.168.1.1, 10.0.0.1) | Identifies the private range and offers HTTP/HTTPS links |
| Timezone | timezone | time in tokyo, time in new york, time in UTC+5 | Current time in 70+ cities and IANA timezones |
| UUID | uuid | Any UUID string (e.g. 550e8400-e29b-41d4-a716-446655440000) | Version, variant, and embedded timestamp (v1/v7) |
| Timestamp | timestamp | 10-digit or 13-digit numbers, now, current timestamp, unix timestamp | Converts Unix timestamps to human dates, or shows current timestamp |
| JWT | jwt | Any header.payload.signature JWT token | Decodes header and payload, shows algorithm and expiry |
| CIDR | cidr | 192.168.1.0/24, 10.0.0.0/8 | Network, broadcast, host range, usable hosts, netmask |
| Hash/Base64 | hash | MD5 (32 hex), SHA-1 (40 hex), SHA-256 (64 hex), SHA-512 (128 hex), or base64 strings (40+ chars) | Identifies hash type, or decodes base64 to text |
| Cron | cron | 5-field cron expressions like 0 */2 * * 1-5 | Human-readable schedule description with per-field explanation |
| DOI | doi | 10.1000/xyz123 or doi.org/10.1000/xyz123 | Links to publisher (doi.org) and Sci-Hub |
| Timer | timer | timer 5 minutes, timer 30s, countdown 10m, stopwatch | Interactive countdown timer or stopwatch widget |
| Random | random | flip a coin, roll a die, roll 3d20, random 1 to 100 | Coin flip, dice rolls (NdX), random number in range (crypto/rand) |
| Password | password | password, generate password, password 32 chars | Cryptographically random password with copy button (4-256 chars) |
| QR Code | qr | qr https://example.com, qr code hello world | Inline SVG QR code (up to ~271 bytes, versions 1-10) |
| Chmod | chmod | chmod 755, chmod rwxr-xr-x | Numeric-to-symbolic and symbolic-to-numeric conversion with explanation |
| Roman Numeral | roman | XIV in decimal, 42 in roman | Roman numeral to/from decimal conversion (1-3999) |
| Date Arithmetic | date_arithmetic | days between Jan 1 and Dec 31, 30 days from now, days until Christmas, 90 days ago | Day counts, future/past dates, with IFC calendar dates |
Network oracles (external API calls, no key required)
These make external network requests but do not require any API key.
| Oracle | Permission key | Trigger patterns | What it shows | API used |
|---|---|---|---|---|
| Reverse DNS | reverse_dns | rdns 8.8.8.8, reverse dns 1.1.1.1, nslookup 8.8.4.4, ptr <IP> | PTR records for an IP address | System DNS resolver |
| DNS Lookup | dns_dig | example.com, dig example.com, dns example.com | A, AAAA, MX, TXT records | System DNS resolver |
| IP Geolocation | ip_geo | Bare public IPv4 like 8.8.8.8, where is 1.1.1.1, geolocate <IP> | City, region, country, ISP, ASN, PTR | ipapi.co |
| My IP | my_ip | my ip, whats my ip, ip, show my ip | User’s public IP with geolocation and reverse DNS | ipapi.co |
| Currency | currency | 100 usd to eur, 50 gbp in jpy, usd to eur | Exchange rate with forward and inverse rates | fawazahmed0/exchange-api (jsDelivr CDN) |
| WHOIS | whois | whois example.com | Domain registrar, creation/expiry dates, nameservers | RDAP (rdap.org) |
| Speedtest | speedtest | speedtest, speed test, internet speed, bandwidth test | Interactive download/upload speed test with latency and jitter | Server’s own /api/v1/speedtest/* endpoints |
| Benchmark | benchmark | benchmark, browser benchmark, system benchmark | JS/DOM/Crypto/Canvas/Memory benchmark with scores; includes speedtest if permitted | Client-side JS + server speedtest |
| Translation | translation | translate hello to french, translate X to Y | Text translation with language detection | Configured translation backends |
| Auto-translate | translation | (Automatic on non-native-language queries) | Detects foreign language queries and translates to user’s known language | Configured translation backends |
| Map | map | map of paris, map tokyo, directions to berlin | OpenStreetMap tile with links to OSM, Apple, Google, HERE, Bing, OsmAnd, Waze, Yandex Maps | Nominatim geocoding + OSM tiles |
| Wikipedia | wikipedia | Entity-like queries (1-3 capitalized words), who is X, what is X | Infobox card with image, summary, and Wikipedia link | Wikipedia REST API |
| DDG Instant Answers | ddg_ia | (Any query — lowest priority among knowledge oracles) | Abstract, definition, or answer card from DuckDuckGo | DuckDuckGo Instant Answer API |
| Package Version | packages | latest lodash, npm lodash, pypi requests, pip flask version | Latest version with link to registry | npm Registry / PyPI |
| Radio | radio | radio new york, fm tokyo, radio stations in berlin | Up to 5 radio stations with inline audio players | radio-browser.info |
| Sports Scores | sports | nfl scores, nba scores, lakers scores, premier league scores | Live/recent scores for NFL, NBA, MLB, NHL, MLS, EPL, La Liga, Bundesliga, Serie A, Ligue 1, Champions League, WNBA, NCAA | ESPN API |
| SSL Certificate | ssl_cert | ssl example.com, cert example.com, certificate example.com | Certificate issuer, validity dates, SANs, protocol version, cipher suite | Direct TLS connection |
| Earthquake | earthquake | earthquakes, earthquakes today, recent earthquakes, earthquakes in california | Recent significant earthquakes with magnitude, location, depth, and time | USGS Earthquake API |
| Flights | flights | flight UA123, flight status AA456, flights from JFK to LAX | Live flight tracking by callsign; route planning with bearing and distance | OpenSky Network API |
| Recipe | recipe | recipe for pasta, how to make brownies, how to cook risotto | Step-by-step recipe with ingredients, thumbnail, and source link | TheMealDB |
API-keyed oracles (require configuration)
These oracles require API keys configured in config.kdl under api-keys { ... }. Without the key, the oracle silently returns nothing.
| Oracle | Permission key | Trigger patterns | What it shows | API key config | API used |
|---|---|---|---|---|---|
| Wolfram Alpha | wolfram | (Any query — lowest priority knowledge oracle) | Computational answers, facts, math | wolframalpha "..." | Wolfram Alpha Short Answers API |
| Weather | weather | weather, weather in paris, forecast tokyo, temperature in london | Current temperature, humidity, wind, conditions with icon | Optional: openweathermap "..." | Open-Meteo (free, always); OpenWeatherMap (if key set, tabbed multi-source) |
| Dictionary | dictionary | define serendipity, meaning of ubiquitous, what does ephemeral mean, urban slang | Multi-source tabbed definitions | Optional: mw_collegiate, mw_thesaurus, mw_learners, mw_medical, mw_spanish, mw_school, mw_elementary, mw_intermediate, mw_intermediate_thesaurus, wordnik | Free Dictionary API + Wiktionary + Urban Dictionary (always); up to 9 Merriam-Webster products + Wordnik (with keys) |
| Stock | stock | $AAPL, TSLA stock, stock price MSFT | Price, change, open/high/low, previous close | Optional: alpha_vantage "...", twelvedata "...", finnhub "..." | Alpha Vantage, Twelve Data, Finnhub (multi-source tabbed if multiple keys) |
| Crypto | crypto | $BTC, bitcoin price, price of ethereum, crypto solana | USD/EUR/BTC price, 24h change, market cap | None (free API) | CoinGecko |
| Inflation / CPI | inflation | inflation, cpi, consumer price index, dollar inflation | Annual inflation rate with 12-month sparkline chart | None (free API) | Bureau of Labor Statistics |
| Purchasing Power | inflation | purchasing power of dollar, dollar worth in 1970 | Historical purchasing power table or year-specific comparison | None (free API) | Bureau of Labor Statistics CPI-U data |
| Air Quality | air_quality | air quality, aqi, pollution, air quality in beijing | AQI value, category, dominant pollutant, color-coded display | Optional: aqicn "..." | Open-Meteo Air Quality (free, always); AQICN (with key, tabbed multi-source) |
| News | news | news about AI, latest news on climate, headlines technology | Multi-source news headlines with thumbnails | Optional: currentsapi "...", newsdata "...", gnews "..." | Google News RSS (free, always); Currents API, Newsdata.io, GNews (with keys, tabbed) |
| Music / Spotify | music | play bohemian rhapsody, listen to radiohead, song despacito, Artist — Track | Spotify embed player with album info and alternative service links | Optional: spotify-client-id "..." + spotify-client-secret "..." | Spotify Web API (with keys); links-only fallback without keys |
Knowledge oracles (fire concurrently)
Three knowledge oracles fire simultaneously on every query and the best result wins. Priority order: Wikipedia > DDG Instant Answers > Wolfram Alpha.
| Priority | Oracle | Permission key | API |
|---|---|---|---|
| 0 (highest) | Wikipedia Infobox | wikipedia | Wikipedia REST API (no key) |
| 1 | DDG Instant Answers | ddg_ia | DuckDuckGo IA API (no key) |
| 2 (lowest) | Wolfram Alpha | wolfram | Wolfram Alpha Short Answers API (requires key) |
Smart tab oracles
When smart_tab_oracles is enabled (default: on), certain oracles auto-fire on category-specific tabs even without explicit trigger words:
| Tab | Auto-fired oracles |
|---|---|
| Maps | Map + Weather (for the displayed location), IP Geolocation |
| Music | Music (with forced “play” prefix), Radio |
| Science | Calculator, Unit Converter |
| IT | My IP, DNS Lookup, CIDR Calculator, Base Converter |
| Weather | Weather (with “weather” prefix) |
AI Research tools
When AI mode is enabled (lite or full), the AI research agent has access to these tools. These are not query-triggered oracles but tools the AI can invoke during research:
| Tool | Description |
|---|---|
fetch | Fetches and extracts text from URLs; supports depth=2 for same-domain crawling |
psychoscrape | Citation-aware web scraper that extracts structured claims with source attribution |
youtube_transcript | Extracts timestamped transcripts/captions from YouTube videos |
lua | Sandboxed Lua execution environment with HTTP, JSON, math, and string libraries |
send | Shows intermediate findings to the user during research |
eta | Updates the user-facing ETA countdown |
friction | Logs improvement suggestions for the server developer |
pin | Pins a result to the top of the search results |
forget | Removes a result from the search results |
friend_search | Searches federated peer instances for additional results |
API keys
Most engines scrape public pages and need no key. Engines that benefit from or require API keys:
| Service | Config key | Required? |
|---|---|---|
| Wolfram Alpha | api-keys { wolframalpha "..." } | Optional; enables Wolfram oracle |
| DeepL | api-keys { deepl "..." } | Optional; translation backend |
| Freesound | api-keys { freesound "..." } | Required for freesound engine |
| Spotify | api-keys { spotify-client-id / spotify-client-secret } | Optional; enables Spotify embed in music oracle |
| OpenWeatherMap | api-keys { openweathermap "..." } | Optional; adds second weather source |
| Alpha Vantage | api-keys { alpha_vantage "..." } | Optional; stock quotes |
| Twelve Data | api-keys { twelvedata "..." } | Optional; stock quotes |
| Finnhub | api-keys { finnhub "..." } | Optional; stock quotes |
| AQICN | api-keys { aqicn "..." } | Optional; adds second air quality source |
| Currents API | api-keys { currentsapi "..." } | Optional; news oracle source |
| Newsdata.io | api-keys { newsdata "..." } | Optional; news oracle source |
| GNews | api-keys { gnews "..." } | Optional; news oracle source |
| MW Collegiate | api-keys { mw_collegiate "..." } | Optional; dictionary source |
| MW Thesaurus | api-keys { mw_thesaurus "..." } | Optional; dictionary source (synonyms/antonyms) |
| MW Learner’s | api-keys { mw_learners "..." } | Optional; dictionary source |
| MW Medical | api-keys { mw_medical "..." } | Optional; dictionary source |
| MW Spanish | api-keys { mw_spanish "..." } | Optional; bilingual dictionary source |
| MW School | api-keys { mw_school "..." } | Optional; dictionary source |
| MW Elementary | api-keys { mw_elementary "..." } | Optional; dictionary source |
| MW Intermediate | api-keys { mw_intermediate "..." } | Optional; dictionary source |
| MW Int. Thesaurus | api-keys { mw_intermediate_thesaurus "..." } | Optional; dictionary source |
| Wordnik | api-keys { wordnik "..." } | Optional; dictionary source |
| Giphy | Hardcoded public key | None needed |
| The Guardian | Hardcoded test key | None needed |
| Pexels | Per-engine header in engines.kdl | Optional |
Adding a new engine
Add an engine block to data/engines.kdl:
engine "my_engine" {
name "My Engine"
categories "web"
search-url "https://api.example.com/search?q={query}&page={page}"
method "GET"
result-type "json"
results-path "results"
title-path "title"
url-path "url"
content-path "snippet"
page-size 20
paging true
first-page 1
}
Restart 4got. The engine registers automatically.
Template variables: {query}, {page}/{pageno}, {offset}, {lang}.
For HTML scraping, set result-type "html" and use CSS selectors (results-selector, title-selector, url-selector, content-selector).