Skip to content

ascend-io/ascend-tools

Repository files navigation

ascend-tools

GitHub Release PyPI npm crates.io CI License: MIT

CLI, SDK, and MCP server for the Ascend Instance web API.

Getting started

Don't have an Ascend Instance yet? Sign up:

ascend-tools signup

Authentication

To 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"

CLI

Install via GitHub releases, PyPI, npm, crates.io, or source.

Python/uv:

uv tool install ascend-tools

Node.js/npm:

npm install -g ascend-tools

Rust/cargo:

cargo install ascend-tools-cli

Without "installing", you can try ascend-tools via uvx:

uvx ascend-tools workspace list

Or npx:

npx ascend-tools workspace list

See docs for more details.

Interactive TUI

Run Otto in an interactive terminal user interface (TUI):

ascend-tools otto tui

Vi keybindings by default. Type /help for commands, /emacs to switch modes.

MCP server

Connect AI assistants (Claude Code, Codex CLI, Cursor, etc.) to Ascend via uvx:

claude mcp add --transport stdio ascend-tools-dev -- uvx ascend-tools mcp

Or npx:

claude mcp add --transport stdio ascend-tools-dev -- npx ascend-tools mcp

See docs for more details.

Skills

Install reference skills for AI coding assistants:

ascend-tools skill install --target .claude/skills --all

Available flags: --cli (default), --python, --javascript, --rust, --mcp, --all.

Python SDK

Add ascend-tools to your Python project:

uv add ascend-tools

Then 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.

JavaScript SDK

Add ascend-tools to your Node.js project:

npm add ascend-tools

Then 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.

Rust SDK

Add ascend-tools-core to your Rust project:

cargo add ascend-tools-core

Then 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.

Documentation

  • 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

License

MIT License

About

Ascend CLI, SDK, and MCP server for the Ascend Instance web API.

Resources

License

Stars

Watchers

Forks

Contributors