First steps
Minion exposes search and execute as the two MCP tools. The agent should search first to find the right capability, official guide, package, note, or team skill, then run work through execute. Official guides open with search({ entities: ["guide:{id}"] }), not execute.
Habits that help
- Reuse the returned conversation id. If a search response included a
conversationId, pass it back unchanged on follow-up searches so they stay compact. Otherwise omit the field and use the server-generated value. Do not make one up locally. - Start broad. An empty
search({})returns the domain index. Open a domain withsearch({ domain: "jobs" }), or rank inside it withsearch({ query, domain }). - Let memories surface. Minion adds the one or two most relevant memories to a
searchwith a query, and to anexecutecall based on its code and params. There is nothing to pass for that. See Shared memory . - Read quota errors. A plan-limit denial keeps its error text, which names the plan and the limit.
minion.account.usage()shows where you stand against each daily limit. - Think in packages for reusable saved code. Packages expose exports, declare package-owned jobs, and can optionally serve an app. Recurring schedules belong on a package in the
jobslist of itsminionblock. Deferred one-shot work usesminion.workflows.create({ runAt }).minion.jobs.runNowfires an existing job immediately for debugging or catch-up runs, andminion.jobs.updatechanges a job's schedule or enabled state without rewriting package source. - Check your team's packages before creating one. Packages are shared inside your team, so
searchandminion.packages.list()show what already exists. Sharing with other teams isn't available yet. See Sharing packages . - Bootstrap integration-backed work before building. When a package, package app, or workflow depends on OAuth, a saved secret, or a third-party API, confirm the integration or secret exists, run a cheap authenticated smoke test in
execute, then build the downstream artifact. See Integration bootstrap . - Ask for natural-language goals, for example: “Search Minion for a way to run something every morning” or “Find a saved package for Cloudflare DNS helpers.”
- Credentials use the dashboard. Never paste a secret into chat. An owner or admin adds secrets at
/app/secretsand connects OAuth logins at/app/integrations, as described in Secrets and host approval . Per-provider walkthroughs live at minion.codes/docs/connect (each page also serves raw markdown at/docs/<slug>.md). - Confirm destructive work before mutating GitHub, Cloudflare, or other remote systems. See Mutating actions and confirmations .
- Verify before changing memory. If you think something should become durable memory, call
minion.memories.verifyfirst, review related memories, and only then chooseminion.memories.upsertorminion.memories.delete. - Check what is waiting on a person.
minion.waiting.list()returns the approvals and reconnects that only a person can clear, each with a link to send them.
Where to go next
- Search and execute — the two-tool playbook with copy-pasteable agent inputs
- Search — discovery, ranked results, and
entitieslookups - Execute and workflows — module-based execution with
minion:runtime - Editing package source — editing and publishing saved package source
- Memory and conversation context — surfaced memories and the verify-first write workflow
- Troubleshooting — empty results, auth, and approvals