The four grounded examples:

slugaccessexecution_modemachine_run_statusserver_receives_文件_bytespdf-到-word免费client_browserdescribe_onlyfalsepdf-editor高级client_browserdescribe_onlyfalsemerge-pdf免费async_workersupportedtruecompress-pdf免费async_workersupportedtrue

pdf-到-word and pdf-editor stay in the browser. Quote and run are blocked. merge-pdf and compress-pdf are machine-runnable and the server receives 文件 bytes. This post does not record a completed 合并 artifact or an 上传 session id. QA did not finish an 上传 session.

The PDF category is mixed

The catalog PDF bucket holds 109 tools: 47 免费, 62 高级. Execution on that slice is client_browser 57, async_worker 50, server_sync 2. Machine status is 57 describe_only and 52 supported. Browser PDF tools and worker PDF tools sit in one directory. The directory heading does not tell you where bytes go.

Describe smoke on a related PDF slug, add-blank-page-到-pdf, returned HTTP 200, supported, async_worker. That is the worker side of the same category. pdf-到-word is the browser side. Do not copy one slug's 隐私 onto the other.

Processing location on the four examples:

  • pdf-到-word / pdf-editor: 隐私.processing_location client_browser
  • merge-pdf / compress-pdf: 隐私.processing_location server_worker_for_machine_runs

client_browser plus server_receives_文件_bytes false is the stay-in-browser contract. async_worker plus server_receives_文件_bytes true is not. Review how 到 choose a secure 在线 文件 工具 before you attach a 文件 到 the worker path.

Describe_only is why the browser tools will not run from a key

Docs at https://swarme.io/developers list 搜索, Describe, Quote, Run. They also state that describe_only blocks quote and run. API QA recorded pdf-到-word and pdf-editor as skipped_browser_only with no quote. That skip is the contract, not a crawl failure.

The full catalog is 1940 tools: 560 免费, 1380 高级; 1491 describe_only, 439 supported, 10 requires_worker. 1344 tools are client_browser. Browser PDF tools are inside that 1344. An API key created at https://swarme.io/dashboard?tab=developers (/dashboard/developers is 404) can still describe them. Prefix sk_sw_QdE8 only. Scopes capabilities:run and uploads:write do not execute pdf-到-word.

MCP follows the same gate. POST https://swarme.io/mcp initialize (protocolVersion 2025-03-26) identified Swarme Capability MCP Alpha 2026.07.15-wallet-alpha. tools/list returned 22 tools, including swarme_上传_session_创建. That helper is for machine-native 文件 capabilities. It is not a bypass of describe_only. Do not 创建 an 上传 session for a slug whose describe says server_receives_文件_bytes false.

Worker PDF tools still quote, and quote is not an artifact

merge-pdf and compress-pdf are supported. The documented path is still describe, quote, run. A completed uuid-generator run on the same account returned 4cd3c7b6-0495-447a-8efd-9a1374f7599c at $0.00 included after a 900-second lock. That UUID path sent no 文件. Do not treat it as a 合并 receipt.

Wallet $0.00 / metered_observe / spend_limit_minor 0 is the observed balance. It does not change server_receives_文件_bytes. Lifetime on the dashboard is not a 隐私 flag.

API QA later attempted quote+run on 435 tools: 272 passed, 163 failed (99 HTTP 422 after quote, 63 poll timeouts), 1505 skipped. 图片 PUT uploads returned WAF 403; multipart POST with 文件= worked. Those 上传 notes are about the worker path. They are not a completed merge-pdf 下载, and they are not a session id.

If a worker PDF run returns HTTP 422, read the 字段 rule. Observed non-PDF 422 strings (Use labeled address lines in key: value 表单 or provide JSON., Enter valid Base64URL input.) are the same class of stop: a named 字段, not a browser/worker mix-up.

How 到 choose before the 文件 leaves the 页面

  1. GET /api/capabilities/{slug}.
  2. Read execution.machine_run_status. If describe_only, stop the machine path. Open the 工具 页面 if the work belongs in the browser.
  3. Read 隐私.server_receives_文件_bytes and execution_mode.
  4. If the value is false / client_browser, do not call swarme_上传_session_创建. Do not POST run.
  5. If the value is true / async_worker / supported, tell the caller the server will receive bytes. Then quote. Then run with quote_id.
  6. Poll GET /api/capability-runs/{run_id}. Timeouts happened on other async workers (20s and 90s windows). A timeout is not a 404 on the 工具 页面.

Public 页面: https://swarme.io/工具/pdf-到-word, https://swarme.io/工具/pdf-editor, https://swarme.io/工具/merge-pdf, https://swarme.io/工具/compress-pdf.

Unauthenticated quote is HTTP 419. The login toast Your secure 表单 token expired. Please go back and try again. is a 表单 token. Neither message moves a PDF from the browser into a worker.

For pausing an agent before a file-capable run, see AI 工具 routing.