Build agents that can take action
Give every agent one typed, authenticated tool surface, from deterministic local development to connected production accounts.
eyeball gives your agent one stable capability contract while it handles provider adapters, account selection, idempotency, normalized errors, and execution records.
Select a toolkit or search the catalog for the capability the agent needs.
2. ConnectKeep account credentials out of prompts and select the right connection at execution time.
3. Execute safelyRun the returned tool calls through one executor with stable retries and audit state.
The three-step developer experience
import { Eyeball } from "@eyeball/sdk";
const eyeball = new Eyeball({
apiKey: process.env.EYEBALL_API_KEY!,
baseUrl: process.env.EYEBALL_EXECUTOR_URL!,
});
const tools = await eyeball.tools.get({
toolkits: ["gmail"],
format: "anthropic",
});
const result = await eyeball.tools.run(
"gmail.search_emails",
{ query: "from:reservations@example.com", pageSize: 5 },
{ userId: "demo_user" },
);
console.log({ modelTools: tools.tools.length, result });The same code runs against the mock executor with zero third-party SaaS accounts. Moving live changes the executor URL and connected-account state, not the canonical tool call.
Make your first tool callInstall the eyeball SDK and get a deterministic result in five minutes.