CLI, SDK, and MCP server for the Ascend Instance web API.
Don't have an Ascend Instance yet? Sign up:
ascend-tools signupTo authenticate, you need to create a Service Account and set three environment variables including the secret key (Settings > Users > Service Accounts > Create Service Account):
export ASCEND_SERVICE_ACCOUNT_ID="asc-sa-..."
export ASCEND_SERVICE_ACCOUNT_KEY="..."
export ASCEND_INSTANCE_API_URL="https://<instance-name>.api.instance.ascend.io"Install via GitHub releases, PyPI, npm, crates.io, or source.
Python/uv:
uv tool install ascend-toolsNode.js/npm:
npm install -g ascend-toolsRust/cargo:
cargo install ascend-tools-cliWithout "installing", you can try ascend-tools via uvx:
uvx ascend-tools workspace listOr npx:
npx ascend-tools workspace listSee docs for more details.
Run Otto in an interactive terminal user interface (TUI):
ascend-tools otto tuiVi keybindings by default. Type /help for commands, /emacs to switch modes.
Connect AI assistants (Claude Code, Codex CLI, Cursor, etc.) to Ascend via uvx:
claude mcp add --transport stdio ascend-tools-dev -- uvx ascend-tools mcpOr npx:
claude mcp add --transport stdio ascend-tools-dev -- npx ascend-tools mcpSee docs for more details.
Install reference skills for AI coding assistants:
ascend-tools skill install --target .claude/skills --allAvailable flags: --cli (default), --python, --javascript, --rust, --mcp, --all.
Add ascend-tools to your Python project:
uv add ascend-toolsThen use the Client class:
from ascend_tools import Client
client = Client()
client.list_workspaces()
client.run_flow(flow="My Flow", workspace="My Workspace")See docs for more details.
Add ascend-tools to your Node.js project:
npm add ascend-toolsThen use the Client class:
import { Client } from "ascend-tools";
const client = new Client();
const workspaces = await client.listWorkspaces();
await client.runFlow("My Flow", "My Workspace");See docs for more details.
Add ascend-tools-core to your Rust project:
cargo add ascend-tools-coreThen use the AscendClient struct:
use ascend_tools::client::AscendClient;
use ascend_tools::config::Config;
let client = AscendClient::new(Config::from_env()?)?;
let workspaces = client.list_workspaces(Default::default())?;See docs for more details.
- Quickstart: create a service account, install, and run your first flow
- Installation: all install methods
- CLI: all commands with examples
- Python SDK: Client methods, return types, error handling
- JavaScript SDK: async Client methods, streaming, TypeScript types
- Rust SDK: typed client with structs and error handling
- MCP server: set up AI assistants with Ascend tools
- Development: contributor setup, architecture, release process