Skip to main content
Saturn exposes AI services as capabilities — abstract verbs that route to the best available provider. You call saturn.reason(), not openai.chat.completions.create().

Available Capabilities

CapabilityWhat the agent getsBacked by
reasonLLM inference — completions, summarization, extractionOpenAI, Anthropic
searchWeb search — query to ranked resultsSerper, Brave
readURL to clean text — articles, docs, pagesJina, Firecrawl
scrapeURL to structured HTML — raw extractionFirecrawl, ScraperAPI
executeSandboxed code execution — Python, JS, shellE2B
imagineText to image generationReplicate
speakText to speechElevenLabs
transcribeSpeech to textDeepgram
emailTransactional emailResend
smsSMS messagesTwilio

Why Capabilities?

Provider Abstraction

You don’t care which search provider is fastest today. You care about getting search results.
// You call this:
const results = await saturn.search({ query: 'AI news' });

// Saturn routes to Serper, Brave, or the next best option
// You get results in a consistent format

Unified Billing

Every capability call goes through the same billing pipeline:
  1. Quote the cost
  2. Check against budget
  3. Execute
  4. Deduct credits
  5. Return receipt
One bill. One audit trail. Regardless of provider.

Automatic Failover

If a provider is down, Saturn routes to the next available option. Your agent keeps working.

Response Format

Every capability returns the same structure:
interface CapabilityResponse<T> {
  data: T;              // Capability-specific result
  metadata: {
    chargedSats: number;      // Actual cost (sats)
    chargedUsdCents: number;  // Actual cost (USD)
    quotedSats: number;       // Pre-quoted estimate
    balanceAfter: number;     // Remaining credits
    auditId: string;          // Unique receipt ID
    provider: string;         // Which provider handled it
    latencyMs: number;        // Request duration
  };
}

Listing Capabilities

// Get all available capabilities
const capabilities = await saturn.capabilities.list();

// Get details for a specific capability
const reason = await saturn.capabilities.get('reason');
console.log(reason.providers); // ['openai', 'anthropic', ...]
console.log(reason.pricing);   // Pricing tiers

Direct Service Access

For services not mapped to a capability, use the proxy:
// Call any registered service directly
const result = await saturn.call<MyResponseType>('openai', {
  model: 'gpt-4o',
  messages: [{ role: 'user', content: 'Hello' }],
});
This still goes through Saturn’s billing and policy enforcement.