ascend-tools 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. ascend_tools-0.2.0/LICENSE +21 -0
  2. ascend_tools-0.2.0/PKG-INFO +202 -0
  3. ascend_tools-0.2.0/README.md +188 -0
  4. ascend_tools-0.2.0/pyproject.toml +44 -0
  5. ascend_tools-0.2.0/src/ascend_tools/Cargo.lock +3056 -0
  6. ascend_tools-0.2.0/src/ascend_tools/Cargo.toml +3 -0
  7. ascend_tools-0.2.0/src/ascend_tools/__init__.py +14 -0
  8. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/Cargo.toml +35 -0
  9. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/README.md +48 -0
  10. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/src/cli.rs +718 -0
  11. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/src/lib.rs +5 -0
  12. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/src/main.rs +9 -0
  13. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/src/skill-cli.md +58 -0
  14. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-cli/tests/cli_integration.rs +182 -0
  15. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/Cargo.toml +27 -0
  16. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/README.md +46 -0
  17. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/auth.rs +410 -0
  18. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/client.rs +254 -0
  19. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/config.rs +135 -0
  20. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/error.rs +136 -0
  21. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/lib.rs +26 -0
  22. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/src/models.rs +69 -0
  23. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-core/tests/client_http.rs +383 -0
  24. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-mcp/Cargo.toml +39 -0
  25. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-mcp/README.md +46 -0
  26. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-mcp/src/lib.rs +136 -0
  27. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-mcp/src/params.rs +126 -0
  28. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-mcp/src/server.rs +596 -0
  29. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-py/Cargo.lock +2800 -0
  30. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-py/Cargo.toml +23 -0
  31. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-py/README.md +26 -0
  32. ascend_tools-0.2.0/src/ascend_tools/ascend-tools-py/src/lib.rs +167 -0
  33. ascend_tools-0.2.0/src/ascend_tools/core.pyi +73 -0
  34. ascend_tools-0.2.0/src/ascend_tools/py.typed +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Ascend Labs, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,202 @@
1
+ Metadata-Version: 2.4
2
+ Name: ascend-tools
3
+ Version: 0.2.0
4
+ License-File: LICENSE
5
+ Summary: Ascend CLI, SDK, MCP.
6
+ Home-Page: https://github.com/ascend-io/ascend-tools
7
+ Author-email: Cody <cody.peterson@ascend.io>
8
+ License-Expression: MIT
9
+ Requires-Python: >=3.13
10
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
11
+ Project-URL: Homepage, https://github.com/ascend-io/ascend-tools
12
+ Project-URL: Repository, https://github.com/ascend-io/ascend-tools
13
+
14
+ # ascend-tools
15
+
16
+ CLI, SDK, and MCP server for the Ascend REST API.
17
+
18
+ > Private preview: `ascend-tools` is currently in private preview. Contact your Ascend representative to request access via Service Accounts on your Instance.
19
+
20
+ ## Install
21
+
22
+ Pre-built binaries are available for Linux and macOS. Windows users should use Linux/macOS.
23
+
24
+ ```bash
25
+ uv tool install ascend-tools
26
+ ```
27
+
28
+ ## Authentication
29
+
30
+ Set three environment variables (from Ascend UI > Settings > Users > Create Service Account):
31
+
32
+ ```bash
33
+ export ASCEND_SERVICE_ACCOUNT_ID="asc-sa-..."
34
+ export ASCEND_SERVICE_ACCOUNT_KEY="..."
35
+ export ASCEND_INSTANCE_API_URL="https://<instance-name>.api.instance.ascend.io"
36
+ ```
37
+
38
+ ## CLI
39
+
40
+ List runtimes:
41
+
42
+ ```bash
43
+ ascend-tools runtime list
44
+ ```
45
+
46
+ Get a runtime:
47
+
48
+ ```bash
49
+ ascend-tools runtime get <UUID>
50
+ ```
51
+
52
+ Resume a runtime:
53
+
54
+ ```bash
55
+ ascend-tools runtime resume <UUID>
56
+ ```
57
+
58
+ Pause a runtime:
59
+
60
+ ```bash
61
+ ascend-tools runtime pause <UUID>
62
+ ```
63
+
64
+ List flows:
65
+
66
+ ```bash
67
+ ascend-tools flow list --runtime <UUID>
68
+ ```
69
+
70
+ Run a flow:
71
+
72
+ ```bash
73
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID>
74
+ ```
75
+
76
+ Run a flow and resume the runtime first if paused:
77
+
78
+ ```bash
79
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID> --resume
80
+ ```
81
+
82
+ Run a flow with full refresh:
83
+
84
+ ```bash
85
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID> --spec '{"full_refresh": true}'
86
+ ```
87
+
88
+ List flow runs:
89
+
90
+ ```bash
91
+ ascend-tools flow list-runs --runtime <UUID>
92
+ ```
93
+
94
+ Get a flow run:
95
+
96
+ ```bash
97
+ ascend-tools flow get-run <RUN_NAME> --runtime <UUID>
98
+ ```
99
+
100
+ JSON output:
101
+
102
+ ```bash
103
+ ascend-tools -o json runtime list
104
+ ```
105
+
106
+ ## Python SDK
107
+
108
+ ```python
109
+ from ascend_tools import Client
110
+
111
+ client = Client() # reads from env vars
112
+ client.list_runtimes()
113
+ client.run_flow(runtime_uuid="...", flow_name="sales")
114
+ ```
115
+
116
+ ## MCP server
117
+
118
+ Start an MCP server for AI assistants (Claude Code, Claude Desktop, Cursor, etc.).
119
+
120
+ Stdio transport (default):
121
+
122
+ ```bash
123
+ ascend-tools mcp
124
+ ```
125
+
126
+ HTTP transport:
127
+
128
+ ```bash
129
+ ascend-tools mcp --http --bind 127.0.0.1:8000
130
+ ```
131
+
132
+ ### Claude Code setup
133
+
134
+ ```bash
135
+ claude mcp add --transport stdio ascend-tools -- uvx --from ./ascend-tools ascend-tools mcp
136
+ ```
137
+
138
+ The Ascend auth env vars are inherited from your shell. Verify with `/mcp` inside Claude Code.
139
+ If Claude is launched without your shell env, add vars explicitly:
140
+
141
+ ```bash
142
+ claude mcp add --transport stdio \
143
+ -e ASCEND_SERVICE_ACCOUNT_ID="$ASCEND_SERVICE_ACCOUNT_ID" \
144
+ -e ASCEND_SERVICE_ACCOUNT_KEY="$ASCEND_SERVICE_ACCOUNT_KEY" \
145
+ -e ASCEND_INSTANCE_API_URL="$ASCEND_INSTANCE_API_URL" \
146
+ ascend-tools -- uvx --from ./ascend-tools ascend-tools mcp
147
+ ```
148
+
149
+ ### Codex CLI setup
150
+
151
+ ```bash
152
+ codex mcp add ascend-tools -- uvx --from "$(pwd)" ascend-tools mcp
153
+ ```
154
+
155
+ If Codex is launched without your shell env, add vars explicitly:
156
+
157
+ ```bash
158
+ codex mcp add \
159
+ --env "ASCEND_SERVICE_ACCOUNT_ID=$ASCEND_SERVICE_ACCOUNT_ID" \
160
+ --env "ASCEND_SERVICE_ACCOUNT_KEY=$ASCEND_SERVICE_ACCOUNT_KEY" \
161
+ --env "ASCEND_INSTANCE_API_URL=$ASCEND_INSTANCE_API_URL" \
162
+ ascend-tools -- uvx --from "$(pwd)" ascend-tools mcp
163
+ ```
164
+
165
+ Inspect the MCP server config:
166
+
167
+ ```bash
168
+ codex mcp get ascend-tools --json
169
+ ```
170
+
171
+ List all configured MCP servers:
172
+
173
+ ```bash
174
+ codex mcp list
175
+ ```
176
+
177
+ Remove the config:
178
+
179
+ ```bash
180
+ codex mcp remove ascend-tools
181
+ ```
182
+
183
+ The Ascend auth env vars are inherited from your shell when Codex launches the server.
184
+ If you have stale MCP behavior after updating code, run this once to refresh the uvx cache:
185
+
186
+ ```bash
187
+ uvx --refresh --from "$(pwd)" ascend-tools --version
188
+ ```
189
+
190
+ ### Tools
191
+
192
+ | Tool | Description |
193
+ |------|-------------|
194
+ | `list_runtimes` | List runtimes with optional filters |
195
+ | `get_runtime` | Get a runtime by UUID |
196
+ | `resume_runtime` | Resume a paused runtime |
197
+ | `pause_runtime` | Pause a running runtime |
198
+ | `list_flows` | List flows in a runtime |
199
+ | `run_flow` | Trigger a flow run (supports resume, full_refresh, components, parameters, etc.) |
200
+ | `list_flow_runs` | List flow runs with filters |
201
+ | `get_flow_run` | Get a flow run by name |
202
+
@@ -0,0 +1,188 @@
1
+ # ascend-tools
2
+
3
+ CLI, SDK, and MCP server for the Ascend REST API.
4
+
5
+ > Private preview: `ascend-tools` is currently in private preview. Contact your Ascend representative to request access via Service Accounts on your Instance.
6
+
7
+ ## Install
8
+
9
+ Pre-built binaries are available for Linux and macOS. Windows users should use Linux/macOS.
10
+
11
+ ```bash
12
+ uv tool install ascend-tools
13
+ ```
14
+
15
+ ## Authentication
16
+
17
+ Set three environment variables (from Ascend UI > Settings > Users > Create Service Account):
18
+
19
+ ```bash
20
+ export ASCEND_SERVICE_ACCOUNT_ID="asc-sa-..."
21
+ export ASCEND_SERVICE_ACCOUNT_KEY="..."
22
+ export ASCEND_INSTANCE_API_URL="https://<instance-name>.api.instance.ascend.io"
23
+ ```
24
+
25
+ ## CLI
26
+
27
+ List runtimes:
28
+
29
+ ```bash
30
+ ascend-tools runtime list
31
+ ```
32
+
33
+ Get a runtime:
34
+
35
+ ```bash
36
+ ascend-tools runtime get <UUID>
37
+ ```
38
+
39
+ Resume a runtime:
40
+
41
+ ```bash
42
+ ascend-tools runtime resume <UUID>
43
+ ```
44
+
45
+ Pause a runtime:
46
+
47
+ ```bash
48
+ ascend-tools runtime pause <UUID>
49
+ ```
50
+
51
+ List flows:
52
+
53
+ ```bash
54
+ ascend-tools flow list --runtime <UUID>
55
+ ```
56
+
57
+ Run a flow:
58
+
59
+ ```bash
60
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID>
61
+ ```
62
+
63
+ Run a flow and resume the runtime first if paused:
64
+
65
+ ```bash
66
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID> --resume
67
+ ```
68
+
69
+ Run a flow with full refresh:
70
+
71
+ ```bash
72
+ ascend-tools flow run <FLOW_NAME> --runtime <UUID> --spec '{"full_refresh": true}'
73
+ ```
74
+
75
+ List flow runs:
76
+
77
+ ```bash
78
+ ascend-tools flow list-runs --runtime <UUID>
79
+ ```
80
+
81
+ Get a flow run:
82
+
83
+ ```bash
84
+ ascend-tools flow get-run <RUN_NAME> --runtime <UUID>
85
+ ```
86
+
87
+ JSON output:
88
+
89
+ ```bash
90
+ ascend-tools -o json runtime list
91
+ ```
92
+
93
+ ## Python SDK
94
+
95
+ ```python
96
+ from ascend_tools import Client
97
+
98
+ client = Client() # reads from env vars
99
+ client.list_runtimes()
100
+ client.run_flow(runtime_uuid="...", flow_name="sales")
101
+ ```
102
+
103
+ ## MCP server
104
+
105
+ Start an MCP server for AI assistants (Claude Code, Claude Desktop, Cursor, etc.).
106
+
107
+ Stdio transport (default):
108
+
109
+ ```bash
110
+ ascend-tools mcp
111
+ ```
112
+
113
+ HTTP transport:
114
+
115
+ ```bash
116
+ ascend-tools mcp --http --bind 127.0.0.1:8000
117
+ ```
118
+
119
+ ### Claude Code setup
120
+
121
+ ```bash
122
+ claude mcp add --transport stdio ascend-tools -- uvx --from ./ascend-tools ascend-tools mcp
123
+ ```
124
+
125
+ The Ascend auth env vars are inherited from your shell. Verify with `/mcp` inside Claude Code.
126
+ If Claude is launched without your shell env, add vars explicitly:
127
+
128
+ ```bash
129
+ claude mcp add --transport stdio \
130
+ -e ASCEND_SERVICE_ACCOUNT_ID="$ASCEND_SERVICE_ACCOUNT_ID" \
131
+ -e ASCEND_SERVICE_ACCOUNT_KEY="$ASCEND_SERVICE_ACCOUNT_KEY" \
132
+ -e ASCEND_INSTANCE_API_URL="$ASCEND_INSTANCE_API_URL" \
133
+ ascend-tools -- uvx --from ./ascend-tools ascend-tools mcp
134
+ ```
135
+
136
+ ### Codex CLI setup
137
+
138
+ ```bash
139
+ codex mcp add ascend-tools -- uvx --from "$(pwd)" ascend-tools mcp
140
+ ```
141
+
142
+ If Codex is launched without your shell env, add vars explicitly:
143
+
144
+ ```bash
145
+ codex mcp add \
146
+ --env "ASCEND_SERVICE_ACCOUNT_ID=$ASCEND_SERVICE_ACCOUNT_ID" \
147
+ --env "ASCEND_SERVICE_ACCOUNT_KEY=$ASCEND_SERVICE_ACCOUNT_KEY" \
148
+ --env "ASCEND_INSTANCE_API_URL=$ASCEND_INSTANCE_API_URL" \
149
+ ascend-tools -- uvx --from "$(pwd)" ascend-tools mcp
150
+ ```
151
+
152
+ Inspect the MCP server config:
153
+
154
+ ```bash
155
+ codex mcp get ascend-tools --json
156
+ ```
157
+
158
+ List all configured MCP servers:
159
+
160
+ ```bash
161
+ codex mcp list
162
+ ```
163
+
164
+ Remove the config:
165
+
166
+ ```bash
167
+ codex mcp remove ascend-tools
168
+ ```
169
+
170
+ The Ascend auth env vars are inherited from your shell when Codex launches the server.
171
+ If you have stale MCP behavior after updating code, run this once to refresh the uvx cache:
172
+
173
+ ```bash
174
+ uvx --refresh --from "$(pwd)" ascend-tools --version
175
+ ```
176
+
177
+ ### Tools
178
+
179
+ | Tool | Description |
180
+ |------|-------------|
181
+ | `list_runtimes` | List runtimes with optional filters |
182
+ | `get_runtime` | Get a runtime by UUID |
183
+ | `resume_runtime` | Resume a paused runtime |
184
+ | `pause_runtime` | Pause a running runtime |
185
+ | `list_flows` | List flows in a runtime |
186
+ | `run_flow` | Trigger a flow run (supports resume, full_refresh, components, parameters, etc.) |
187
+ | `list_flow_runs` | List flow runs with filters |
188
+ | `get_flow_run` | Get a flow run by name |
@@ -0,0 +1,44 @@
1
+ [project]
2
+ name = "ascend-tools"
3
+ version = "0.2.0"
4
+ description = "Ascend CLI, SDK, MCP."
5
+ requires-python = ">=3.13"
6
+ license = "MIT"
7
+ authors = [{ name = "Cody", email = "cody.peterson@ascend.io" }]
8
+ dependencies = []
9
+ readme = "README.md"
10
+
11
+ [project.urls]
12
+ Repository = "https://github.com/ascend-io/ascend-tools"
13
+ Homepage = "https://github.com/ascend-io/ascend-tools"
14
+
15
+ [project.scripts]
16
+ ascend-tools = "ascend_tools:main"
17
+
18
+ [dependency-groups]
19
+ dev = ["maturin>=1.0,<2.0", "ruff>=0.9", "ipython>=9.10.0", "ty>=0.0.19"]
20
+
21
+ [tool.maturin]
22
+ module-name = "ascend_tools.core"
23
+ python-packages = ["ascend_tools"]
24
+ python-source = "src"
25
+ manifest-path = "src/ascend_tools/ascend-tools-py/Cargo.toml"
26
+ include = [{ path = "LICENSE", format = "sdist" }]
27
+
28
+ [build-system]
29
+ requires = ["maturin>=1.0,<2.0"]
30
+ build-backend = "maturin"
31
+
32
+ [tool.uv]
33
+ cache-keys = [
34
+ { file = "pyproject.toml" },
35
+ { file = "src/ascend_tools/ascend-tools-core/**/*.rs" },
36
+ { file = "src/ascend_tools/ascend-tools-mcp/**/*.rs" },
37
+ { file = "src/ascend_tools/ascend-tools-cli/**/*.rs" },
38
+ { file = "src/ascend_tools/ascend-tools-py/**/*.rs" },
39
+ ]
40
+
41
+ [tool.ty.src]
42
+ # Exclude self-contained uv scripts — ty can't resolve their inline
43
+ # script dependencies. See https://github.com/astral-sh/ty/issues/691
44
+ exclude = ["tests/rest.py"]