- The CLI — for terminal agents (Claude Code, shell loops, CI): push folders, pull them back, mint share links. Full reference: cli.md.
- The MCP endpoint — for MCP hosts (claude.ai connectors, Claude
Desktop, Claude Code, any MCP client): 22
slideless_tools over streamable HTTP at/mcp. Full reference: mcp-connector.md.
The CLI
Get the binary (npm i -g @antasphere/slideless, or a workspace build):
--api-url flag → SLIDELESS_URL env → the saved profile’s baseUrl, and
errors if none is set. That is deliberate: a self-hosted CLI must name its
instance instead of silently talking to the wrong host.
Sign in, option A — browserless OTP (requires the instance to have an
email driver). Signs in existing accounts only — sign-up stays closed:
login-complete mints an slk_ API key server-side (scopes
presentations:read + presentations:write) and stores it as the active
profile in ~/.config/antasphere/tools/slideless.json (mode 600; the
shared Antasphere CLI config home, see cli.md).
Sign in, option B — paste a dashboard key (works with EMAIL_DRIVER=none,
and required for accounts with 2FA). Mint the key in the dashboard: API
keys, then Create key. Tick presentations:write there (the dialog
pre-selects presentations:read only) so the key can push and share; the
secret is shown once, right after creation. Then:
push is content-addressed (only missing blobs upload; a re-push of the
same folder is a new immutable version), the first push writes
.slideless.json into the folder so later pushes target the same deck, and
--json on any command emits the wire shape for machine parsing. See
cli.md for sharing flags (expiry, password, pin-to-version),
collaborator grants, annotations export, and slideless dev (a local
preview server with the exact viewer sandbox headers).
The MCP endpoint
Every instance serves MCP at:/mcp accepts the instance’s
slk_ keys directly, no OAuth dance:
/mcp body cap — tools answer a clean “use the CLI” error for bigger
decks.
Verify an instance end to end:
Scopes and revocation
Machine credentials reach only the endpoints consciously allowlisted for
their scopes (fail-closed — see security.md); member
deactivation is re-checked on every request, so cutting a person off cuts
their agents off in the same moment.