Epismo Basics
Shared reference for all Epismo skills. Covers connection, surface conventions, scope, share URL resolution, and error handling.
Skills that build on this:
- Project Tracking — tasks, goals, notes, planning
- Workflow Pack — workflow pack discovery and release
- Context Pack — context packs, session handoff
Connection
CLI and MCP are two interfaces to the same Epismo service — same account, same data, same tools. There is one Epismo account; the difference is only how you connect.
When both are available, use CLI. If only MCP is available, use MCP. Never use both in the same session.
Auth
CLI (preferred):
bash
epismo login --email you@example.com # OTP flow (default, no browser)
epismo login --browser # browser-based flow
epismo whoami # verify
MCP: add
as an MCP server in your client. Authentication is handled automatically via OAuth.
Surface Conventions
| Surface | Pattern | Example |
|---|
| epismo <resource> <action> [--flags]
| epismo pack search --type context
|
| epismo_<resource>_<action>
+ JSON | |
MCP tool name = CLI command with spaces and hyphens replaced by underscores. Conceptual payloads are the same across surfaces; CLI flags are mapped into the JSON shape used by API/MCP.
Pack Aliases
Packs can be fetched by a short alias instead of a full ID. Pass
(or
parameter in MCP) wherever
is accepted on
. To create and manage aliases, see
Pack Alias.
CLI Input Conventions
- — inline JSON
--input @path/to/file.json
— from file
- — from stdin
- Explicit flags override fields in .
Workspace Selection
bash
epismo workspace list
epismo workspace use --workspace-id <workspace-id> # save default
epismo workspace current # show saved default (no network)
Workspace selection is CLI-only. All CLI commands resolve workspace automatically from
, saved default, then personal space. In MCP, workspace scope is implicit in the OAuth token.
Scope Model
- — top-level access boundary. All operations run within the active workspace.
- — narrows private search or write access to specific projects within the active workspace.
- / — grant private write access to specific people on mutation calls.
- — for search, include private items that target the current user directly; defaults to .
- CLI search/write flags such as , , , and are convenience flags that build the object.
- For search, omitting uses the default private scope for the current context; explicitly disables project targets.
When the user refers to "my project", resolve both layers before writing:
- Active workspace
- Target project(s) via
Resolving Share URLs
Share URLs resolve to a resource without credentials by following the HTTP redirect.
- Public packs typically use
https://epismo.ai/share/{token}
.
- Internal/private workspace packs may use
https://{workspace}.epismo.ai/share/{token}
.
- Do not assume the host is always the root domain; preserve the original host from the share URL.
bash
# curl
curl -s -o /dev/null -w "%{redirect_url}" "https://epismo.ai/share/${TOKEN}"
# → https://epismo.ai/hub/workflows/{id}
# → https://epismo.ai/hub/contexts/{id}
# internal/private packs may redirect from a workspace subdomain instead
curl -s -o /dev/null -w "%{redirect_url}" "https://${WORKSPACE}.epismo.ai/share/${TOKEN}"
# → https://${WORKSPACE}.epismo.ai/hub/workflows/{id}
# → https://${WORKSPACE}.epismo.ai/hub/contexts/{id}
typescript
// fetch (Node.js)
const shareUrl = new URL(process.argv[2]);
const res = await fetch(shareUrl, {
redirect: "manual",
});
const location = res.headers.get("location") ?? "";
const workflowMatch = location.match(/\/hub\/workflows\/([^/?#]+)/);
const contextMatch = location.match(/\/hub\/contexts\/([^/?#]+)/);
// use whichever matches; id = decodeURIComponent(match[1])
| Redirect path | Resource type |
|---|
| pack |
| pack |
Use the resolved
with
on any surface. If the original share URL is on a workspace subdomain, keep using that host when handing the link back to the user.
Selective Fetch Pattern
always returns outline format (
,
, and brief metadata) — never full content blocks. Always scan titles first, then fetch only what you need — this keeps session context lean.
- Scan — or to get a title list.
- Select — identify relevant items from the titles. Skip clearly unrelated ones.
- Fetch — or for each selected item to load full content.
| Mode | Flag | Returns |
|---|
| Outline (default) | (none) | , , , — no content blocks |
| Full | | complete content including all blocks / steps |
To load a single block or step instead of the full pack:
bash
# context pack — fetch one block
epismo pack get --id <id> --block-id <block-id>
# workflow pack — fetch specific steps
epismo pack get --id <id> --step-id <step-id-1>,<step-id-2>
Pack Reuse Scan Order
Before creating any new pack, scan in this order to avoid duplicating something that already exists:
- + — your own packs first
- + — packs you bookmarked
- + — community packs
If a close match is found, prefer
over creating new.
Pagination
All
calls return page size 20. For large result sets, iterate
and merge results.
bash
epismo pack search --type context --filter '{"visibility":["public"]}' --page 2
epismo track search --type task --filter '{"status":["todo"]}' --page 2
Stop iterating when a page returns fewer than 20 results.
Error Handling
| Error | Action |
|---|
Payment Required: Insufficient credits
| Stop. Check balance and purchase credits — see Credit Purchase. |
| Re-check accessible projects and resource ownership. |
| / | Re-authenticate: run (CLI) or reconnect via MCP OAuth. Verify active workspace and subscription. |
| / | Confirm the resource ID. It may have been deleted or the share token may have expired. |
| Rate limit / | Wait and retry with backoff. Inform user if persistent. |
| Timeout | Retry once. If persistent, reduce payload size or split the operation. |
Source of Truth
Repository:
https://github.com/epismoai/skills