SDKs
Official client libraries for TypeScript and Python. Integrate Squidward into your applications with type-safe, production-ready SDKs.
TypeScript
@squidward/sdk
Quick Start
import { Squidward } from '@squidward/sdk'
// Initialize the client
const client = new Squidward({
token: process.env.SQUIDWARD_TOKEN,
})
// List available MCPs
const mcps = await client.mcps.list()
// Invoke an MCP tool
const result = await client.mcps.invoke('github', 'search_repos', {
query: 'mcp governance',
limit: 10,
})
// Simulate a policy
const simulation = await client.policies.simulate({
mcp: 'github',
tool: 'create_issue',
input: { title: 'New feature request' },
})typescript
Features
Automatic Retries
Built-in retry logic with exponential backoff for transient failures.
Type Safety
Full type definitions for all API responses and request parameters.
Streaming Support
Stream large responses and real-time events efficiently.
Error Handling
Typed error classes with detailed policy denial information.
MCP Operations
List MCPs
// List all available MCPs
const mcps = await client.mcps.list()
// Filter by category
const devTools = await client.mcps.list({
category: 'source_control',
})
// Get a specific MCP
const github = await client.mcps.get('github')typescript
Invoke Tools
// Invoke an MCP tool
const result = await client.mcps.invoke('github', 'search_repos', {
query: 'mcp',
limit: 10,
})
// With options
const result = await client.mcps.invoke(
'vercel',
'list_deployments',
{ projectId: 'prj_xxx' },
{
timeout: 30000,
simulateOnly: false,
}
)typescript
Policy Operations
// Simulate a policy
const simulation = await client.policies.simulate({
mcp: 'github',
tool: 'create_pull_request',
input: {
title: 'Add new feature',
body: 'This PR adds...',
},
})
if (simulation.decision === 'deny') {
console.log('Policy denied:', simulation.reason)
console.log('Matched policies:', simulation.matchedPolicies)
}
// List policies
const policies = await client.policies.list()
// Get policy details
const policy = await client.policies.get('pol_xxx')typescript
Error Handling
import {
Squidward,
PolicyDeniedError,
AuthenticationError,
RateLimitError
} from '@squidward/sdk'
try {
const result = await client.mcps.invoke('github', 'create_issue', {
title: 'Bug report',
})
} catch (error) {
if (error instanceof PolicyDeniedError) {
console.log('Policy denied:', error.reason)
console.log('Recommendations:', error.recommendations)
} else if (error instanceof AuthenticationError) {
console.log('Invalid or expired token')
} else if (error instanceof RateLimitError) {
console.log('Rate limited, retry after:', error.retryAfter)
}
}typescript
Configuration
const client = new Squidward({
// Required
token: process.env.SQUIDWARD_TOKEN,
// Optional
baseUrl: 'https://gateway.squidward.app', // Custom gateway URL
timeout: 30000, // Request timeout in ms
retries: 3, // Number of retries
// Logging
debug: process.env.NODE_ENV === 'development',
// Custom fetch (for edge runtimes)
fetch: customFetch,
})typescript