Back to Nodes

Tool

Last updated Aug 12, 2026

Run any iotools.cloud tool (converters, generators, formatters, calculators, editors, utilities) from an n8n workflow.

360 Weekly Downloads
743 Monthly Downloads

Included Nodes

Tool

Description

n8n-nodes-iotools

An n8n community node for iotools.cloud — run any of its 800+ tools
(converters, generators, formatters, calculators, editors, utilities) from a workflow, on top of the public
iotools.cloud API (GET /v1/openapi).

Install

In n8n: Settings → Community Nodes → Install, package name n8n-nodes-iotools.

Credentials

Add an iotools.cloud API credential:

  • API Key — mint one under Account → API Keys.
  • Base URL — defaults to https://api.iotools.cloud; only change it for a self-hosted or staging deployment.
  • The IO Tools node

    One node, six operations:

    | Operation | What it does |
    | — | — |
    | Run Tool | Pick a tool (searchable list or a known slug), fill its fields, run it. |
    | List Tools | Every tool with an API — one output item per tool. |
    | Search Tools | Find a tool by name, slug, description or tag. |
    | Get Tool Schema | A tool’s input/output JSON Schema and credit cost, without running it. |
    | Get Credits | The key’s remaining credit balance for the current period. |
    | Get Usage | The key’s recent credit spend, one item per (tool, day, surface) row. |

    Run Tool

  • Tool — a searchable resource picker (backed by GET /v1/tools/search) or a manual slug, e.g. case-converter.
  • Fields — populated dynamically from the selected tool’s input schema (GET /v1/tool/{slug}). Enums become
  • dropdowns; everything else maps to a string, number, or boolean field. Array and base64-blob inputs fall back to a
    string field (paste JSON / base64 text) — there’s no matching n8n field type for either.

  • Additional Fields (JSON) — a JSON object merged on top of Fields, for anything the mapper can’t represent well,
  • or to override a single field with an expression. Defaults to {} (no-op).

  • Simplify — on (default), returns just the tool’s outputs; off returns the full response envelope

(tool, toolversion, outputs, creditsused, credits_remaining).

A failed call throws using the API’s own RFC 9457 problem document — the error message
is the specific detail (falling back to the category title), and the code shows up in the error’s description.

Example: run a tool

A minimal workflow — a Manual Trigger feeding a Run Tool call to case-converter — looks like this. Import it via
n8n’s Import from File / URL (or paste into a new workflow with Ctrl/Cmd+V):

{
  "nodes": [
    {
      "parameters": {},
      "name": "When clicking 'Execute workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [-200, 0]
    },
    {
      "parameters": {
        "operation": "runTool",
        "tool": { "mode": "id", "value": "case-converter" },
        "fields": { "mappingMode": "defineBelow", "value": {} },
        "additionalFieldsJson": "{n  "inputString": "hello world",n  "caseStyle": "param-case"n}"
      },
      "name": "IO Tools",
      "type": "n8n-nodes-iotools.ioTools",
      "typeVersion": 1,
      "position": [0, 0],
      "credentials": {
        "ioToolsApi": { "id": "REPLACEWITHYOURCREDENTIALID", "name": "iotools.cloud API" }
      }
    }
  ],
  "connections": {
    "When clicking 'Execute workflow'": { "main": [[{ "node": "IO Tools", "type": "main", "index": 0 }]] }
  }
}

Swap case-converter for any slug from List Tools / Search Tools. This example puts the tool’s input
(inputString, caseStyle) in Additional Fields (JSON) for a self-contained, pasteable workflow — when building
by hand, the dynamic Fields table above it populates from the tool’s schema instead.

Rate limits

API keys are limited to 60 requests/minute per endpoint (higher on paid tiers) — easy to hit with more than one IO
Tools node in a workflow, or one processing many input items. A rate-limited call is retried automatically (up to 3
times, waiting the time the API itself reports) rather than failing the run; only a rate limit that outlasts those
retries surfaces as an error.

Development

pnpm install
pnpm typecheck
pnpm test
pnpm build   # -> dist/, loadable by n8n
pnpm dev     # starts n8n with this node loaded, hot reload

src/ holds framework-agnostic logic (API types, JSON-Schema → resourceMapper-field mapping, request-body merging) —
unit tested directly with vitest. credentials/ and nodes/IoTools/ are the n8n-facing glue.

To test against a real n8n instance without publishing anything, use n8n’s “private node” install: npm pack the
built package, then on the target instance run npm install inside its .n8n/nodes folder (creating it
with npm init -y first if needed) and restart n8n — no Settings → Community Nodes step required. See
n8n’s community-node docs for details.