Ascend CLI, SDK, MCP.
Project description
ascend-tools
CLI, SDK, and MCP server for the Ascend Instance web API.
Install
Pre-built binaries are available for Linux and macOS. Windows users should use Linux/macOS.
uv tool install ascend-tools
Authentication
Set three environment variables (from Ascend UI > Settings > Users > 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
List workspaces:
ascend-tools workspace list
Get a workspace:
ascend-tools workspace get "My Workspace"
Pause / resume a workspace:
ascend-tools workspace pause "My Workspace"
ascend-tools workspace resume "My Workspace"
List and run flows:
ascend-tools flow list --workspace "My Workspace"
ascend-tools flow run <FLOW_NAME> --workspace "My Workspace"
ascend-tools flow run <FLOW_NAME> --workspace "My Workspace" --resume
ascend-tools flow run <FLOW_NAME> --workspace "My Workspace" --spec '{"full_refresh": true}'
Deployments work the same way:
ascend-tools deployment list
ascend-tools deployment get "My Deployment"
ascend-tools flow list --deployment "My Deployment"
JSON output:
ascend-tools -o json workspace list
Interactive TUI
Chat with Otto in a full-screen terminal interface:
ascend-tools otto tui
ascend-tools otto tui --workspace "My Workspace"
Vi keybindings by default. Type /help for commands, /emacs to switch modes. Alt+Enter for multi-line input. Up/Down for input history.
Python SDK
from ascend_tools import Client
client = Client() # reads from env vars
client.list_workspaces()
client.run_flow(flow="sales", workspace="My Workspace")
MCP server
Start an MCP server for AI assistants (Claude Code, Claude Desktop, Cursor, etc.).
Stdio transport (default):
ascend-tools mcp
HTTP transport:
ascend-tools mcp --http --bind 127.0.0.1:8000
Claude Code setup
claude mcp add --transport stdio ascend-tools-dev -- uvx ascend-tools mcp
The Ascend auth env vars are inherited from your shell. Verify with /mcp inside Claude Code.
If Claude is launched without your shell env, add vars explicitly:
claude mcp add --transport stdio ascend-tools-dev \
-e ASCEND_SERVICE_ACCOUNT_ID="$ASCEND_SERVICE_ACCOUNT_ID" \
-e ASCEND_SERVICE_ACCOUNT_KEY="$ASCEND_SERVICE_ACCOUNT_KEY" \
-e ASCEND_INSTANCE_API_URL="$ASCEND_INSTANCE_API_URL" \
-- uvx ascend-tools mcp
Codex CLI setup
codex mcp add ascend-tools-dev -- uvx ascend-tools mcp
If Codex is launched without your shell env, add vars explicitly:
codex mcp add \
--env "ASCEND_SERVICE_ACCOUNT_ID=$ASCEND_SERVICE_ACCOUNT_ID" \
--env "ASCEND_SERVICE_ACCOUNT_KEY=$ASCEND_SERVICE_ACCOUNT_KEY" \
--env "ASCEND_INSTANCE_API_URL=$ASCEND_INSTANCE_API_URL" \
ascend-tools-dev -- uvx ascend-tools mcp
Inspect the MCP server config:
codex mcp get ascend-tools-dev --json
List all configured MCP servers:
codex mcp list
Remove the config:
codex mcp remove ascend-tools-dev
The Ascend auth env vars are inherited from your shell when Codex launches the server. If you have stale MCP behavior after updating code, run this once to refresh the uvx cache:
uvx --refresh ascend-tools --version
If Codex MCP startup fails with connection closed: initialize response, refresh once and re-add:
uvx --refresh ascend-tools --version
Tools
| Tool | Description |
|---|---|
list_workspaces |
List workspaces with optional filters |
get_workspace |
Get a workspace by title |
create_workspace |
Create a new workspace |
update_workspace |
Update a workspace |
pause_workspace |
Pause a workspace |
resume_workspace |
Resume a paused workspace |
delete_workspace |
Delete a workspace |
list_deployments |
List deployments with optional filters |
get_deployment |
Get a deployment by title |
create_deployment |
Create a new deployment |
update_deployment |
Update a deployment |
pause_deployment_automations |
Pause automations on a deployment |
resume_deployment_automations |
Resume automations on a deployment |
delete_deployment |
Delete a deployment |
list_environments |
List environments |
list_projects |
List projects |
list_profiles |
List profiles for a workspace, deployment, or project+branch |
list_flows |
List flows in a workspace or deployment |
run_flow |
Trigger a flow run |
list_flow_runs |
List flow runs with filters |
get_flow_run |
Get a flow run by name |
list_otto_providers |
List Otto providers and models |
otto |
Chat with Otto AI assistant |
Skills
Install reference skills for AI coding assistants (Claude Code, Codex, etc.):
ascend-tools skill install --target .claude/skills --all
Available skills: --cli (default), --python, --mcp, --all.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ascend_tools-1.0.0.tar.gz.
File metadata
- Download URL: ascend_tools-1.0.0.tar.gz
- Upload date:
- Size: 92.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87e2e5768c4a0150149334b1581f4252ccc7b868b45ff7aaa8c9b064e9ae358b
|
|
| MD5 |
548d66cfa6520c97966a8de675ff0a2b
|
|
| BLAKE2b-256 |
15f3cbcdfb176be6da37c53118cd4f0fbd8977aa7c5c614dbd5823200d2a223a
|
Provenance
The following attestation bundles were made for ascend_tools-1.0.0.tar.gz:
Publisher:
release-python.yml on ascend-io/ascend-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ascend_tools-1.0.0.tar.gz -
Subject digest:
87e2e5768c4a0150149334b1581f4252ccc7b868b45ff7aaa8c9b064e9ae358b - Sigstore transparency entry: 1118941000
- Sigstore integration time:
-
Permalink:
ascend-io/ascend-tools@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/ascend-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 4.1 MB
- Tags: CPython 3.11+, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ecec77007ff8ebd2f44b0bce0d803e2eb21cf492e7b70e33774d54c8a452d36
|
|
| MD5 |
43adff2547d0644de0071697e72ff22c
|
|
| BLAKE2b-256 |
48bf3e3e91d5de2e326d8007b408e260bddf21a1da90cacc83e14416a4c4bf78
|
Provenance
The following attestation bundles were made for ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_x86_64.whl:
Publisher:
release-python.yml on ascend-io/ascend-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_x86_64.whl -
Subject digest:
2ecec77007ff8ebd2f44b0bce0d803e2eb21cf492e7b70e33774d54c8a452d36 - Sigstore transparency entry: 1118941153
- Sigstore integration time:
-
Permalink:
ascend-io/ascend-tools@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/ascend-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_aarch64.whl.
File metadata
- Download URL: ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_aarch64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.11+, manylinux: glibc 2.39+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6f6c779810e43f835c83661c2c71c9f290126509b73de55ad2de3ad9fd4abda
|
|
| MD5 |
d54a60b18192ea405b860880d18c558f
|
|
| BLAKE2b-256 |
b27a23f264dc51557ef6f71998fbd078c7ed10cddfc9776867b165e6c32b8e77
|
Provenance
The following attestation bundles were made for ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_aarch64.whl:
Publisher:
release-python.yml on ascend-io/ascend-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ascend_tools-1.0.0-cp311-abi3-manylinux_2_39_aarch64.whl -
Subject digest:
f6f6c779810e43f835c83661c2c71c9f290126509b73de55ad2de3ad9fd4abda - Sigstore transparency entry: 1118941066
- Sigstore integration time:
-
Permalink:
ascend-io/ascend-tools@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/ascend-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ascend_tools-1.0.0-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: ascend_tools-1.0.0-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.7 MB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca166fc51667adda6fe7fbf1b5d69b0c71b2b741981d543717df383c04e6dea9
|
|
| MD5 |
d1aeda41613f7acab9837aa18b159fba
|
|
| BLAKE2b-256 |
5d9c37bbb8e3fb16e4d4e57ad03f2eb0724fa92c94c5be940d791ad35eeb5d8e
|
Provenance
The following attestation bundles were made for ascend_tools-1.0.0-cp311-abi3-macosx_11_0_arm64.whl:
Publisher:
release-python.yml on ascend-io/ascend-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ascend_tools-1.0.0-cp311-abi3-macosx_11_0_arm64.whl -
Subject digest:
ca166fc51667adda6fe7fbf1b5d69b0c71b2b741981d543717df383c04e6dea9 - Sigstore transparency entry: 1118941026
- Sigstore integration time:
-
Permalink:
ascend-io/ascend-tools@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/ascend-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ascend_tools-1.0.0-cp311-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: ascend_tools-1.0.0-cp311-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: CPython 3.11+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81635eb3e5abff7060049268f05bf0bf5636984dd5e249ca5cec4f0b5b9ffaa0
|
|
| MD5 |
e6c1e72de16ab8369f577ccb217bc0f8
|
|
| BLAKE2b-256 |
a9fdcce7f26a134e353c7dd58f58b5cadfc622e0992b382e34ada855ee81ec93
|
Provenance
The following attestation bundles were made for ascend_tools-1.0.0-cp311-abi3-macosx_10_12_x86_64.whl:
Publisher:
release-python.yml on ascend-io/ascend-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ascend_tools-1.0.0-cp311-abi3-macosx_10_12_x86_64.whl -
Subject digest:
81635eb3e5abff7060049268f05bf0bf5636984dd5e249ca5cec4f0b5b9ffaa0 - Sigstore transparency entry: 1118941106
- Sigstore integration time:
-
Permalink:
ascend-io/ascend-tools@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/ascend-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@fe81c4b654fab20c8f8885f169a81f413a46c883 -
Trigger Event:
push
-
Statement type: