Skip to content

API Reference

import { Agent } from "@schift-io/sdk";
new Agent(options: AgentOptions)
OptionTypeDefaultRequired
namestringYes
instructionsstringYes
modelModelId | string"gpt-4o-mini"No
transportTransportOne of transport or baseUrl
baseUrlstringOne of transport or baseUrl
apiKeystringNo
toolsAgentTool[][]No
ragRAGNo
memoryMemoryConfig{ maxMessages: 50 }No
maxStepsnumber10No
MethodReturnsDescription
run(input: string)Promise<AgentRunResult>Run the agent with a user message
toolCountnumberNumber of registered tools (getter)

import { RAG } from "@schift-io/sdk";
new RAG(config: RAGConfig, transport: Transport)
OptionTypeDefault
bucketstringrequired
topKnumber5
MethodReturnsDescription
search(query: string)Promise<SearchResultItem[]>Semantic search over bucket
chat(query: string)Promise<ChatResult>Search + LLM answer
asTool(name?: string)AgentToolConvert to agent tool

import { WebSearch } from "@schift-io/sdk";
new WebSearch(config?: WebSearchConfig, transport?: Transport)
OptionTypeDefault
maxResultsnumber5
providerWebSearchProvider"schift"
providerApiKeystring
MethodReturnsDescription
search(query: string)Promise<WebSearchResultItem[]>Search the web
asTool(name?: string)AgentToolConvert to agent tool

import { DeepResearch } from "@schift-io/sdk";
new DeepResearch(config?: DeepResearchConfig, llm: LLMFn, transport?: Transport)
OptionTypeDefault
maxIterationsnumber3
resultsPerSearchnumber5
queriesPerIterationnumber2
queryModelModelId | string"gpt-4o-mini"
synthesisModelModelId | string"gpt-4o-mini"
webSearchWebSearchConfig
MethodReturnsDescription
run(question: string)Promise<ResearchReport>Run deep research
asTool(name?: string)AgentToolConvert to agent tool

import { ConversationMemory } from "@schift-io/sdk";
new ConversationMemory(config?: MemoryConfig)
OptionTypeDefault
maxMessagesnumber50
MethodReturnsDescription
add(message: ChatMessage)voidAdd message to history
getMessages()ChatMessage[]Get all messages
clear()voidClear non-system messages
lengthnumberMessage count (getter)

import { Schift } from "@schift-io/sdk";
new Schift(config: SchiftConfig)
OptionTypeDefault
apiKeystringrequired
baseUrlstring"https://api.schift.io"
timeoutnumber60000
PropertyTypeDescription
transportTransportHTTP transport for Agent/RAG
workflowsWorkflowClientWorkflow sub-client
modelsModelsClientModel catalog
dbDBClientBucket/document management
toolsSchiftToolsTool definition helpers
MethodReturnsDescription
embed(request)Promise<EmbedResponse>Generate embeddings
embedBatch(request)Promise<EmbedBatchResponse>Batch embeddings
search(request)Promise<SearchResult>Vector search
chat(request)Promise<ChatResponse>RAG chat
webSearch(query, options?)Promise<WebSearchResultItem[]>Web search

interface AgentTool {
name: string; // Must match /^[a-zA-Z_][a-zA-Z0-9_]*$/
description: string;
parameters?: JSONSchema;
handler: (args: Record<string, unknown>) => Promise<ToolResult>;
}
interface ToolResult {
success: boolean;
data: unknown;
error?: string;
}
interface AgentRunResult {
steps: AgentStep[];
output: string;
totalDurationMs: number;
}
interface AgentStep {
id: string;
type: "think" | "tool_call" | "tool_result" | "final_answer" | "error";
content?: string;
toolName?: string;
toolArgs?: Record<string, unknown>;
toolResult?: ToolResult;
durationMs: number;
}
interface ChatMessage {
role: "system" | "user" | "assistant" | "tool";
content: string;
toolCallId?: string;
toolName?: string;
}
import { OpenAIModel, GeminiModel, ClaudeModel } from "@schift-io/sdk";
// OpenAI
OpenAIModel.GPT_5_4 // "gpt-5.4"
OpenAIModel.GPT_4O_MINI // "gpt-4o-mini"
OpenAIModel.O3 // "o3"
// Google
GeminiModel.GEMINI_3_1_PRO // "gemini-3.1-pro"
GeminiModel.GEMINI_2_5_FLASH // "gemini-2.5-flash"
// Anthropic
ClaudeModel.OPUS_4_6 // "claude-opus-4-6"
ClaudeModel.SONNET_4_6 // "claude-sonnet-4-6"
ClaudeModel.HAIKU_4_5 // "claude-haiku-4-5-20251001"
import {
SchiftError, // Base error (status, code)
AuthError, // 401 - Invalid API key
QuotaError, // 402 - Quota exceeded
AgentError, // Agent failure (stepId)
ToolError, // Tool execution failure (toolName)
MaxStepsError, // Max ReAct iterations reached
} from "@schift-io/sdk";