Skip to main content
Glama
methods.mdx8.88 kB
--- title: "Methods" description: "Complete reference for all SDK methods" --- ## Installation <CodeGroup> ```bash npm npm install @superglue/client ``` ```bash pip pip install superglue-client ``` </CodeGroup> ## Initialization <CodeGroup> ```typescript TypeScript import { configure, listTools, getTool, runTool, getRun, cancelRun, listRuns, } from "@superglue/client"; // Configure before making any API calls configure({ baseUrl: "http://localhost:4000/api/v1", apiKey: "your-api-key", }); ``` ```python Python from superglue_client import SuperglueClient client = SuperglueClient( base_url="http://localhost:4000/api/v1", token="your-api-key" ) ``` </CodeGroup> ## Tools ### listTools List all available tools with pagination. <CodeGroup> ```typescript TypeScript import { listTools } from "@superglue/client"; const response = await listTools({ page: 1, limit: 50, }); if (response.status === 200) { const { data, page, total, hasMore } = response.data; for (const tool of data) { console.log(`${tool.id}: ${tool.name || tool.instruction}`); } console.log(`Page ${page}, Total: ${total}, Has more: ${hasMore}`); } ``` ```python Python from superglue_client.api.tools import list_tools response = list_tools.sync( client=client, page=1, limit=50 ) if response: for tool in response.data: print(f"{tool.id}: {tool.name or tool.instruction}") print(f"Page {response.page}, Total: {response.total}, Has more: {response.has_more}") ``` </CodeGroup> **Parameters:** - `page` - Page number (default: `1`) - `limit` - Items per page (default: `50`) **Returns:** List of `Tool` objects with pagination metadata --- ### getTool Get detailed information about a specific tool. <CodeGroup> ```typescript TypeScript import { getTool } from "@superglue/client"; const response = await getTool("my-tool-id"); if (response.status === 200) { const tool = response.data; console.log(`Tool: ${tool.name}`); console.log(`Steps: ${tool.steps.length}`); console.log(`Version: ${tool.version}`); console.log(`Instruction: ${tool.instruction}`); } ``` ```python Python from superglue_client.api.tools import get_tool tool = get_tool.sync( tool_id="my-tool-id", client=client ) if tool: print(f"Tool: {tool.name}") print(f"Steps: {len(tool.steps)}") print(f"Version: {tool.version}") print(f"Instruction: {tool.instruction}") ``` </CodeGroup> **Parameters:** - `toolId` - Unique tool identifier **Returns:** `Tool` object with full configuration --- ### runTool Execute a tool with inputs and options. <CodeGroup> ```typescript TypeScript import { runTool } from "@superglue/client"; const response = await runTool("my-tool-id", { inputs: { userId: "user_123", startDate: "2025-01-01", }, options: { async: false, timeout: 60, webhookUrl: "https://your-app.com/webhook", }, credentials: { stripeApiKey: "sk_test_...", slackToken: "xoxb-...", }, }); if (response.status === 200 || response.status === 202) { const run = response.data; console.log(`Run ID: ${run.runId}`); console.log(`Status: ${run.status}`); if (run.status === "success" && run.data) { console.log("Result:", run.data); } else if (run.status === "running") { console.log("Run in progress..."); } } ``` ```python Python from superglue_client.api.tools import run_tool from superglue_client.models import ( RunRequest, RunRequestInputs, RunRequestCredentials, RunRequestOptions ) # Create typed input/credential objects inputs = RunRequestInputs.from_dict({ "user_id": "user_123", "start_date": "2025-01-01" }) credentials = RunRequestCredentials.from_dict({ "stripe_api_key": "sk_test_...", "slack_token": "xoxb-..." }) body = RunRequest( inputs=inputs, options=RunRequestOptions( async_=False, timeout=60, webhook_url="https://your-app.com/webhook" ), credentials=credentials ) run = run_tool.sync( tool_id="my-tool-id", client=client, body=body ) if run: print(f"Run ID: {run.run_id}") print(f"Status: {run.status.value}") if run.status.value == "success" and run.data: print("Result:", run.data) elif run.status.value == "running": print("Run in progress...") ``` </CodeGroup> **Parameters:** - `toolId` - Tool to execute - `runRequest` - Execution configuration: - `inputs` - Input data accessible in tool steps - `options` - Execution options: - `async` - If `true`, return 202 immediately and execute asynchronously - `timeout` - Request timeout in seconds (sync only) - `webhookUrl` - URL to POST results when complete - `traceId` - Custom trace ID for log tracking - `credentials` - Runtime credentials to override defaults **Returns:** `Run` object with execution status and results **Status Codes:** - `200` - Tool executed synchronously (completed) - `202` - Tool executing asynchronously (in progress) - `400` - Invalid request - `409` - Concurrent execution limit reached - `410` - Tool deleted - `429` - Rate limit exceeded --- ## Runs ### getRun Get the status and results of a tool execution. <CodeGroup> ```typescript TypeScript import { getRun } from "@superglue/client"; const response = await getRun("run_abc123"); if (response.status === 200) { const run = response.data; console.log(`Status: ${run.status}`); console.log(`Tool: ${run.toolId}`); if (run.status === "success") { console.log("Result:", run.data); console.log("Steps:", run.stepResults); } else if (run.status === "failed") { console.error("Error:", run.error); } console.log(`Duration: ${run.metadata.durationMs}ms`); } ``` ```python Python from superglue_client.api.runs import get_run run = get_run.sync( run_id="run_abc123", client=client ) if run: print(f"Status: {run.status.value}") print(f"Tool: {run.tool_id}") if run.status.value == "success": print("Result:", run.data) print("Steps:", run.step_results) elif run.status.value == "failed": print("Error:", run.error) print(f"Duration: {run.metadata.duration_ms}ms") ``` </CodeGroup> **Parameters:** - `runId` - Unique run identifier **Returns:** `Run` object with status, results, and metadata **Run Statuses:** - `running` - Execution in progress - `success` - Completed successfully - `failed` - Failed due to error - `aborted` - Cancelled by user or system --- ### cancelRun Cancel a running tool execution. <CodeGroup> ```typescript TypeScript import { cancelRun } from "@superglue/client"; const response = await cancelRun("run_abc123"); if (response.status === 200) { console.log("Run cancelled successfully"); console.log("Status:", response.data.status); // "aborted" } ``` ```python Python from superglue_client.api.runs import cancel_run run = cancel_run.sync( run_id="run_abc123", client=client ) if run: print("Run cancelled successfully") print(f"Status: {run.status.value}") # "aborted" ``` </CodeGroup> **Parameters:** - `runId` - Run to cancel **Returns:** Updated `Run` object with `aborted` status --- ### listRuns List tool execution runs with filtering and pagination. <CodeGroup> ```typescript TypeScript import { listRuns } from "@superglue/client"; // List all runs const response = await listRuns({ page: 1, limit: 50, }); // Filter by tool const toolRuns = await listRuns({ toolId: "my-tool-id", page: 1, limit: 50, }); // Filter by status const failedRuns = await listRuns({ status: "failed", page: 1, limit: 50, }); if (response.status === 200) { const { data, page, total, hasMore } = response.data; for (const run of data) { const status = run.status === "success" ? "✓" : "✗"; console.log(`${run.runId}: ${status} - ${run.metadata.startedAt}`); } } ``` ```python Python from superglue_client.api.runs import list_runs from superglue_client.models.list_runs_status import ListRunsStatus # List all runs response = list_runs.sync( client=client, page=1, limit=50 ) # Filter by tool tool_runs = list_runs.sync( client=client, tool_id="my-tool-id", page=1, limit=50 ) # Filter by status failed_runs = list_runs.sync( client=client, status=ListRunsStatus.FAILED, page=1, limit=50 ) if response: for run in response.data: status = "✓" if run.status.value == "success" else "✗" print(f"{run.run_id}: {status} - {run.metadata.started_at}") ``` </CodeGroup> **Parameters:** - `page` - Page number (default: `1`) - `limit` - Items per page (default: `50`) - `toolId` - Filter by tool ID (optional) - `status` - Filter by status: `running`, `success`, `failed`, `aborted` (optional) **Returns:** List of `Run` objects with pagination metadata

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/superglue-ai/superglue'

If you have feedback or need assistance with the MCP directory API, please join our Discord server