Providers

Supported providers and the capability matrix.

Every verb runs through a provider. Set a default per verb (run marmot setup, or write directly to ~/.marmot/ai/config.json), or override per call with --provider <slug>.

AI providers

ProviderSlugCapabilitiesEnv var
OpenRouteropenroutertext, image, speech, transcriptionOPENROUTER_API_KEY
AnthropicanthropictextANTHROPIC_API_KEY
OpenAIopenaitext, image, speech, transcriptionOPENAI_API_KEY
Vercel AI Gatewayverceltext, image, speech, transcriptionAI_GATEWAY_API_KEY
Cloudflare Workers AIcloudflaretext, image, speech, transcriptionCLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID
Ollamaollamatext (local)OLLAMA_HOST (no key)

Web data providers

ProviderSlugEnv var
Brave SearchbraveBRAVE_API_KEY
ExaexaEXA_API_KEY
FirecrawlfirecrawlFIRECRAWL_API_KEY
ParallelparallelPARALLEL_API_KEY
TavilytavilyTAVILY_API_KEY

People and org providers

ProviderSlugCapabilitiesEnv var
Apolloapolloenrich, lookup (paid plan only for lookup and enrich --type person)APOLLO_API_KEY
Hunterhunterenrich, lookup --type email, verify --type emailHUNTER_API_KEY
People Data Labspdlenrich, lookupPDL_API_KEY
Tombatombaenrich, lookup --type email, lookup --type org, verify --type emailTOMBA_API_KEY + TOMBA_SECRET_KEY
Bouncerbouncerverify --type emailBOUNCER_API_KEY
Datagmadatagmaenrich --type person (with mobile phone), verify --type emailDATAGMA_API_KEY
ZeroBouncezerobounceverify --type emailZEROBOUNCE_API_KEY
Kickboxkickboxverify --type emailKICKBOX_API_KEY

Capability matrix

Not every provider supports every verb. Marmot validates the verb-provider pair at parse time. If the pair is unsupported, the call errors and lists the providers that do support the verb.

Web data verbs

VerbBraveExaFirecrawlParallelTavily
search
scrape
answer✓ chained✓ inline
map
crawl✓ async✓ sync
research
findall

People and org verbs

Verb and typeApolloHunterPDLTombaBouncerDatagmaZeroBounceKickbox
enrich --type person✓ ¹
enrich --type org
lookup --type person
lookup --type org
lookup --type email
verify --type email✓ ²✓ ³✓ ⁴

¹ Datagma is the only enrichment provider that returns mobile phone numbers on the free tier. ² Bouncer is the only verifier that returns a retryAfter hint for greylisted addresses, plus toxicity (0–5) and resolved MX provider in the raw response. ³ ZeroBounce returns the deepest sub-status taxonomy (30+ values) for diagnosing why an email failed verification. ⁴ Kickbox is owned by Sendgrid/Twilio and returns a unique sendex confidence score (0–1, projected to 0–100 in the envelope's score).

Plan-tier notes

A handful of cells in the matrix above need a paid plan to work. Listed here so the matrix stays scannable.

  • Brave answer chains web/search into the Summarizer API, which requires a Pro Brave Search plan. Free-tier keys never receive a summarizer.key.
  • Exa findall uses the Websets API, which requires a Pro Exa plan. Personal plans return 401.
  • Apollo lookup and enrich --type person require a paid plan with master-key access. Free-tier keys return 403 with error_code: API_INACCESSIBLE.

API key precedence

Per call:

  1. --api-key <key> flag, where supported
  2. Custom env var name from providers.<slug>.apiKeyEnvVar in config, if set
  3. The provider's built-in env var (APOLLO_API_KEY, TAVILY_API_KEY, etc.)
  4. Auth error if none is set

Per-provider settings

In addition to verb defaults, each provider supports its own settings block. See Configuration for the full schema. Three knobs:

  • Enable / disable. Pause a provider without removing its key. Disabled providers error early on every call routed to them.
  • Custom env var names. Override the built-in env var name (e.g. read MY_APOLLO_KEY instead of APOLLO_API_KEY). Useful when you already use the default name for another tool.
  • Response cache. Web and data providers only. Cache responses on disk for a configurable TTL so repeat calls skip the network. Disabled by default. See Caching.

Walk through these via marmot setup (the "Configure provider settings" entry) or set them directly:

marmot config set providers.tavily.enabled false
marmot config set providers.tavily.cache.enabled true
marmot config set providers.tavily.cache.ttlDays 14
marmot config set providers.apollo.apiKeyEnvVar MY_APOLLO_KEY