2Slides Logo
How to Use QoderWake with 2Slides: MCP for AI Employees (2026)
2Slides Team
11 min read

How to Use QoderWake with 2Slides: MCP for AI Employees (2026)

Quick answer (≀60 words): Find your Waker's ID with qoderwake waker list --json, then run qoderwake mcp add --waker-id ag_xxx --name 2slides --transport http --http-url https://2slides.com/api/mcp --header "Authorization=Bearer YOUR_2SLIDES_API_KEY". That Waker can then search 2Slides themes and return an editable .pptx, on demand, from DingTalk or Feishu, or on a schedule.

QoderWake, from the Qoder team at Alibaba, calls its product "Autonomous AI Employees, On the Job". Each digital employee is called a Waker. A Waker gets triggered by IM messages, schedules, hook events or API calls, and does the work on its own. QoderWake runs on macOS 13+, Linux and Windows 10+. It has a local web console at 127.0.0.1:19820 and a full CLI, and it connects to DingTalk and Feishu.

MCP servers and skills are attached per Waker. This guide shows how to give one Waker (say, your "Reporting Assistant") the 2Slides presentation engine. It uses the official QoderWake CLI reference and 2Slides endpoints we tested live in production on September 30, 2026.

Why give a Waker 2Slides?

  • Wakers are built for recurring work, and "turn this week's numbers into a deck" is exactly that kind of job.
  • 2Slides produces the file: a theme-based, editable PowerPoint (Fast PPT, 10 credits per page), or image-designed slides (Nano Banana, 100 credits per page at 1K/2K) with optional AI narration.
  • Per-Waker scope means only the Waker that needs slides gets the tool and the key.

What you need first

  1. QoderWake installed and logged in. On macOS or Linux, the CLI reference gives a one-line installer:
curl -fsSL https://qoder-ide.oss-ap-southeast-1.aliyuncs.com/qoderwake/install.sh | bash qoderwake login qoderwake start # daemon on 127.0.0.1:19820

Windows and the macOS package are available from the QoderWake website. If the shell can't find qoderwake, use ~/.qoderwake/bin/qoderwake.

  1. A 2Slides API key from 2slides.com/api (sk-2slides-...). New accounts get 500 free credits, which covers 50 Fast PPT pages.
  2. Node.js on the device, only for the stdio method.

Step 1: Find the Waker ID

qoderwake waker list --json

Waker IDs start with ag_. Copy the one for the Waker that should make decks. The examples below use ag_xxx.

qoderwake mcp add --waker-id ag_xxx \ --name 2slides \ --description "2Slides presentation generator" \ --transport http \ --http-url https://2slides.com/api/mcp \ --header "Authorization=Bearer YOUR_2SLIDES_API_KEY"

About the quoting. The CLI's syntax is --header KEY=VALUE (repeatable). The value here, Bearer YOUR_2SLIDES_API_KEY, contains a space, so wrap the whole KEY=VALUE pair in double quotes as shown. Without quotes, the shell splits it into two arguments and the header arrives as just Bearer.

Want to avoid the = and space parsing entirely? Use the JSON form of the same option, --headers <json>:

qoderwake mcp add --waker-id ag_xxx \ --name 2slides \ --transport http \ --http-url https://2slides.com/api/mcp \ --headers '{"Authorization":"Bearer YOUR_2SLIDES_API_KEY"}'

In Windows PowerShell, single quotes also work, but quoting JSON across shells can be fiddly. In that case, the file-based import in Method 2 is the safer choice.

Header-free fallback. If the header still doesn't arrive (a 401 or Authentication required when the tools refresh), skip headers entirely. 2Slides also accepts the key as a URL query parameter, and we tested that form end to end:

qoderwake mcp add --waker-id ag_xxx \ --name 2slides \ --transport http \ --http-url "https://2slides.com/api/mcp?apikey=YOUR_2SLIDES_API_KEY"

Treat that URL like a password: don't paste it into tasks or screenshots, and rotate the key at 2slides.com/api if it leaks.

2Slides uses a plain API key, not OAuth, so leave all the --oauth-* flags off.

Method 2: Import MCP JSON

qoderwake mcp add also accepts --json <json> or --json-file <path> to import MCP JSON directly. Save this as 2slides-mcp.json:

{ "mcpServers": { "2slides": { "type": "streamable-http", "url": "https://2slides.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_2SLIDES_API_KEY" } } } }
qoderwake mcp add --waker-id ag_xxx --json-file 2slides-mcp.json

The CLI reference doesn't spell out which JSON shapes the importer accepts. The block above is the common mcpServers format. If the import is rejected, use Method 1's flags, which are fully documented. Delete the file afterwards, or keep it out of any Git repo, because it contains your key.

Method 3: Local stdio server

To run the open-source 2slides-mcp package on the Waker's device:

qoderwake mcp add --waker-id ag_xxx \ --name 2slides \ --transport stdio \ --command npx \ --args "-y,2slides-mcp@latest" \ --env '{"API_KEY":"YOUR_2SLIDES_API_KEY"}'

--args takes a comma-separated list, the same style as the official filesystem example in the CLI reference. --env takes JSON. This needs Node.js on the machine where the Waker runs, and QoderWake is device-resident by default.

Verify the connection

qoderwake mcp list --waker-id ag_xxx # 2slides should be listed qoderwake mcp refresh-tools --waker-id ag_xxx --mcp-id <mid> qoderwake mcp get --waker-id ag_xxx --mcp-id <mid> # inspect the entry

Take the <mid> from mcp list. Then send the Waker a read-only test. QoderWake's own guidance is to validate a new connector with a read-only call first:

List the tools you have from 2slides, then search for a "minimal" theme and show me the themeId.

themes_search is free, so this test costs nothing. If a connector misbehaves, qoderwake mcp toggle --waker-id ag_xxx --mcp-id <mid> --enabled false switches it off without deleting it.

Method 4: Upload the 2Slides skill

QoderWake skills are git-versioned capability packs you can diff and roll back. You upload "a Markdown file or archive containing SKILL.md". The official 2Slides skill is at github.com/2slides/slides-generation-2slides-skills. Zip it so that SKILL.md sits at the root of the archive:

git clone https://github.com/2slides/slides-generation-2slides-skills cd slides-generation-2slides-skills zip -r ../2slides-skill.zip SKILL.md scripts references cd .. qoderwake skill upload 2slides-skill.zip --waker-id ag_xxx

This leaves out the older .skill bundle in the repo. The skill's Python scripts (Python 3 and requests) read the key from the environment variable SLIDES_2SLIDES_API_KEY.

Secrets rule. QoderWake's docs say: "Never put secrets, tokens, or cookies in tasks, memory, knowledge bases, role files, or screenshots." Credentials belong in protected fields or environment variables. So never paste your key into a task prompt or tell the Waker to "remember" it. QoderWake doesn't document a way to pass environment variables to skill scripts, so we recommend this split:

  • Use the MCP connector (Method 1) for the actual API calls. The key lives in its header.
  • Use the skill only if the SLIDES_2SLIDES_API_KEY variable is already set in the environment the Waker runs in. Check with a test task that runs scripts/search_themes.py --query minimal --limit 1.

Generate your first deck

Read sales_week39.csv in the project, summarize the key movements, and build an 8-slide weekly sales review with 2slides. Search for a clean business theme first, then generate the PowerPoint and send me the download link.

The Waker should call themes_search, then slides_generate, and return a downloadUrl. In our production test, a 3-page Fast PPT deck came back in about 22 seconds. The link expires after 1 hour. QoderWake's docs say file delivery "depends on channel capabilities. Use the returned link or the task artifact". So have the Waker post the link right away, or download the .pptx into its workspace. You can then pull it from the session with qoderwake session artifacts --session-id sess_xxx.

Use cases for an AI employee

Triggered from DingTalk or Feishu. Once a Waker is paired with a DingTalk or Feishu channel, a teammate can message "@Reporting Assistant make a 6-slide update on the Q4 hiring plan". The Waker gathers the context, calls 2Slides and replies with the link.

A weekly deck on a schedule. The CLI reference documents scheduled automations:

qoderwake automation create schedule --waker-id ag_xxx \ --name "Weekly Sales Deck" \ --schedule-type cron --cron "0 9 * * 1" \ --timezone Asia/Shanghai \ --prompt "Build this week's 8-slide sales review from the latest CSV with 2slides and post the download link" qoderwake automation run-now --waker-id ag_xxx --automation-id tr_xxx # test once

Run it once with run-now and check the result with qoderwake automation detail before you let it run on its own.

The 2Slides MCP tools

ToolWhat it doesCredits
themes_searchFind a themeId among 1,500+ themesFree
slides_generateTheme-based editable PowerPoint (Fast PPT), sync or async10 / page
slides_create_pdf_slidesImage-designed slides from text (Nano Banana)100 / page (1K/2K), 200 (4K)
slides_create_like_thisSlides matching a reference image's style100 / page (1K/2K), 200 (4K)
slides_generate_narrationAI voice narration for a Nano Banana job210 / page
slides_download_slides_pages_voicesZIP of page images, audio and transcriptFree
jobs_getPoll an async job (every 20 to 30 seconds)Free

What's confirmed vs. not yet documented (as of September 30, 2026)

ItemStatus
waker list, mcp add flags (--transport, --http-url, --header, --headers, --json, --command, --args, --env), skill uploadConfirmed in QoderWake CLI reference
MCP and skills are per Waker; secrets must not go in tasks or memoryConfirmed in QoderWake docs
2Slides endpoint, Bearer auth, 7 toolsLive-tested by 2Slides
Exact JSON shape accepted by mcp add --jsonNot documented; mcpServers form shown as best effort
How --header splits a value containing =Not documented; quote the whole pair or use --headers JSON
Passing env vars to skill scriptsNot documented

Troubleshooting

  • "daemon unreachable". Run qoderwake status. If the daemon isn't running, qoderwake start. If the port is taken, qoderwake start --port auto.
  • 401 from QoderWake itself. Run qoderwake whoami, and qoderwake login again if needed.
  • 401 from 2Slides. The header probably arrived without the key. Re-add it with the quoted --header or the --headers JSON form.
  • Tools missing. Run qoderwake mcp refresh-tools, and check that the connector is enabled with mcp toggle ... --enabled true.
  • stdio fails. Check that Node.js is installed on the Waker's device and that --args is comma-separated.
  • Errors in a run. qoderwake log --level error --limit 100 or qoderwake trace list --status failed.
  • Link expired. downloadUrl lasts 1 hour. Have the Waker save the file as a task artifact.

Frequently asked questions

Does QoderWake support custom MCP servers?

Yes. Each Waker can mount several MCP servers over stdio, HTTP or SSE, using qoderwake mcp add --waker-id <id> or the Custom MCP Connectors screen in the console.

What is the exact command to add 2Slides to a Waker?

qoderwake mcp add --waker-id ag_xxx --name 2slides --transport http --http-url https://2slides.com/api/mcp --header "Authorization=Bearer YOUR_2SLIDES_API_KEY". Quote the whole header pair, because the value contains a space.

Where should I store the 2Slides API key in QoderWake?

In the MCP connector's header (--header or --headers) or its --env for stdio. Never put it in a task, memory, knowledge base or role file. QoderWake's docs forbid that explicitly.

Can a Waker send the PowerPoint to DingTalk or Feishu?

The Waker can always reply with the 2Slides download link. Whether the file itself gets attached depends on the channel. QoderWake's docs say to use the returned link or the task artifact. The link expires after 1 hour.

Can a Waker make a deck every week automatically?

Yes. Create a scheduled automation with qoderwake automation create schedule and a cron expression. Test it with automation run-now before it runs unattended.

How much does it cost?

New 2Slides accounts get 500 free credits. Fast PPT costs 10 credits per page, so a weekly 8-slide deck is 80 credits. Theme search, job polling and exports are free.

The takeaway

One qoderwake mcp add command turns a Waker into an AI employee that ships real decks. Keep the key in the MCP header, trigger it from DingTalk, Feishu or a cron schedule, and save the .pptx within the hour.

Related guides: personal AI agents that can make slides, QwenWork with 2Slides, WorkBuddy with 2Slides, use any AI agent with the 2Slides MCP server, and agent skills vs MCP servers.

Get your key and config at 2slides.com/api?tab=mcp.

Sources:

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free