uptonica
The Uptonica command-line client for developers, agencies, and anyone automating their workspace — one binary, scope decided by the token you configure, not by which command you type.
Install
pip install uptonica # or: uv tool install uptonica
Get a token
Go to Settings -> API Tokens in your Uptonica workspace
(https://app.uptonica.com/account/api-tokens), pick "Terminal access",
choose which workspace(s) and areas it should reach, and copy it.
uptonica config set-token
Use it
uptonica whoami
uptonica tenant use my-store # set a default so you don't repeat --tenant
uptonica tools --search contact # find a tool without scrolling the whole catalog
uptonica tools --show catalog.product.get # see its full description + parameters
uptonica call catalog.stats.summary
uptonica call crm.contact.create_task --arg title="Follow up" --arg priority=2
uptonica ask "quanto ho venduto questo mese?"
If your token reaches more than one workspace, --tenant on any command
overrides the default for that one call.
A write tool that needs confirmation returns a confirmation_token; re-run
the same command with --confirm <token> within ~15 minutes to actually
apply it. --dry-run previews a write without executing it. A tool name
that doesn't exist gets a "did you mean" suggestion instead of a bare error.
Ask in natural language
uptonica ask "<message>" skips the tool catalog entirely — Lia (the same
assistant behind chat and the mobile app) reads your request and picks the
tool(s) herself, with the same per-tool permissions she already has
everywhere else. A workspace's conversation continues across calls by
default, so a follow-up like uptonica ask "sì" answers whatever Lia just
asked (she always asks before a write, same as chat). Use --new to start a
fresh thread, or --conversation <uuid> to pick a specific one.
Run uptonica with no arguments (or uptonica ask with no message) to open
an interactive session instead — one process for the whole conversation,
with /workspace to list or switch workspaces, /new for a fresh thread,
and /help for the rest. Ctrl+D exits. Enter sends a message;
Option+Enter (Alt+Enter) starts a new line without sending. Every tool
Lia calls shows up live (◐ catalog.stats.summary... → ✓), so a slow
answer never looks like it's just hung.
For AI agents
If you're an agent (Claude Code, Codex, or anything else) about to drive this CLI on someone's behalf, read AGENTS.md first — discovery order, how to handle a multi-workspace token, and the dry-run/confirm flow for writes.
Claude Code users: this repo is also a plugin marketplace, so you don't need to clone anything to get that guidance loaded automatically:
/plugin marketplace add tonic-tech/uptonica-cli
/plugin install uptonica@uptonica-cli
Status
Actively developed — v0.2.2, built directly on the same tool API that powers Uptonica's in-app assistant. See the repo issues for what's still open.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 uptonica-0.2.2.tar.gz.
File metadata
- Download URL: uptonica-0.2.2.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e753ca1faf64883417535acfbf0f8d9af57bd038626e74dc0c4771a01053a8d
|
|
| MD5 |
57c92406bab5054a5f70a987c021ab73
|
|
| BLAKE2b-256 |
33c5108256089f213fd4f67cce7f2863e0ff80468af69a0a56b39447300f56ec
|
Provenance
The following attestation bundles were made for uptonica-0.2.2.tar.gz:
Publisher:
publish.yml on tonic-tech/uptonica-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uptonica-0.2.2.tar.gz -
Subject digest:
3e753ca1faf64883417535acfbf0f8d9af57bd038626e74dc0c4771a01053a8d - Sigstore transparency entry: 2771605917
- Sigstore integration time:
-
Permalink:
tonic-tech/uptonica-cli@0fe315c2f4d46672248a2796e969dec4a0a075b0 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/tonic-tech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0fe315c2f4d46672248a2796e969dec4a0a075b0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file uptonica-0.2.2-py3-none-any.whl.
File metadata
- Download URL: uptonica-0.2.2-py3-none-any.whl
- Upload date:
- Size: 29.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97ab6a3744222b59fe6269867e1e74e143194bca1bb2b0b24e47ab63ee20296a
|
|
| MD5 |
2ac441b20cd4ae410fcbefb75421d067
|
|
| BLAKE2b-256 |
0fea0bc4c372597b8211b495c4d0f254340edf57228c5a1ae451a8691fc2b7bd
|
Provenance
The following attestation bundles were made for uptonica-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on tonic-tech/uptonica-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uptonica-0.2.2-py3-none-any.whl -
Subject digest:
97ab6a3744222b59fe6269867e1e74e143194bca1bb2b0b24e47ab63ee20296a - Sigstore transparency entry: 2771605976
- Sigstore integration time:
-
Permalink:
tonic-tech/uptonica-cli@0fe315c2f4d46672248a2796e969dec4a0a075b0 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/tonic-tech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0fe315c2f4d46672248a2796e969dec4a0a075b0 -
Trigger Event:
release
-
Statement type: