URSY.DEVPART OF THE URSY NETWORKSign inBuild with URSY

Every contract sourcedEvery check datedGaps shown, never filledBuild with URSY

Capabilities

Whitespace Cleaner

Remove repeated spaces, trailing whitespace and excess blank lines safely.

How this capability is exposed

Stable ID
ursy.io:whitespace-cleaner
Owning service
URSY.io
Runtime
@ursy/runtime · 1.0.0
Execution modes
browser, node, mcp-local, remote_transient
Remote execution
Available at the owning service
Remote endpoint
https://api.ursy.io/v1/run
Input schemaOutput schemaOpen the owning interface ↗

Capability declarations describe what the service exposes. They are not a guarantee of availability or permission to execute an operation.

Accepted contract

REGISTRY JSON
{
    "schema": "ursy.io/capability/v1",
    "id": "ursy.io:whitespace-cleaner",
    "slug": "whitespace-cleaner",
    "name": "Whitespace Cleaner",
    "version": "1.0.0",
    "summary": "Remove repeated spaces, trailing whitespace and excess blank lines safely.",
    "intents": [
        "remove extra whitespace"
    ],
    "aliases": [],
    "keywords": [],
    "category": "text-tools",
    "deterministic": true,
    "side_effects": false,
    "network_required": false,
    "execution": {
        "preferred": "local",
        "supported": [
            "browser",
            "node",
            "mcp-local",
            "remote_transient"
        ],
        "local_executable": true,
        "remote_safe": true,
        "remote_enabled": true,
        "remote_endpoint": "https://api.ursy.io/v1/run"
    },
    "privacy": {
        "input_leaves_device_by_default": false,
        "payload_logged": false
    },
    "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
            "text": {
                "type": "string",
                "maxLength": 5242880
            },
            "locale": {
                "type": "string",
                "minLength": 2,
                "maxLength": 35,
                "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
                "default": "en-US",
                "description": "Locale for display text; numerical result fields are locale independent."
            }
        },
        "required": [
            "text"
        ],
        "additionalProperties": false
    },
    "output_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
            "text": {
                "type": "string",
                "maxLength": 26214400
            },
            "metrics": {
                "type": "array",
                "items": {
                    "type": "object",
                    "required": [
                        "label",
                        "value"
                    ],
                    "properties": {
                        "label": {
                            "type": "string",
                            "maxLength": 100
                        },
                        "value": {
                            "type": [
                                "string",
                                "number"
                            ],
                            "maxLength": 1000
                        }
                    },
                    "additionalProperties": false
                },
                "maxItems": 10
            }
        },
        "required": [
            "text",
            "metrics"
        ],
        "additionalProperties": false
    },
    "examples": [
        {
            "input": {
                "text": "  One\t two \n  three  "
            },
            "output": {
                "text": "One two\nthree",
                "metrics": [
                    {
                        "label": "Before",
                        "value": "21"
                    },
                    {
                        "label": "After",
                        "value": "13"
                    }
                ]
            }
        }
    ],
    "limits": {
        "max_input_bytes": 5308416,
        "max_output_bytes": 26214400,
        "max_json_depth": 100,
        "max_csv_cells": 1000000
    },
    "canonical_url": "https://ursy.io/text-tools/whitespace-cleaner/",
    "descriptor_url": "https://ursy.io/wp-json/ursy-tools/v2/capabilities/whitespace-cleaner",
    "runtime": {
        "package": "@ursy/runtime",
        "version": "1.0.0",
        "module": "@ursy/runtime",
        "entry": "run",
        "slug": "whitespace-cleaner"
    },
    "health": {
        "status": "ok",
        "last_tested": "2026-09-11T17:24:33.220Z",
        "runtime_version": "1.0.0",
        "golden_fixtures": 1,
        "node_contract_tests": 2,
        "browser_verified": true,
        "tests_passed": 5,
        "tests_total": 5,
        "test_suite": "tests/runtime-canary.test.mjs",
        "browser_suite": "tests/runtime-browser.py"
    },
    "audit": {
        "classification": "A",
        "engine": "text-transform",
        "mode": "whitespace",
        "headless_possible": true,
        "notes": "Deterministic calculation/text core can be separated from the existing DOM workbench; schemas and regression fixtures remain required."
    },
    "assumptions": [],
    "formulae": [],
    "input_schema_id": "ursy.io:whitespace-cleaner:input_schema",
    "output_schema_id": "ursy.io:whitespace-cleaner:output_schema",
    "service_id": "ursy-io",
    "parent_id": "",
    "source_url": "https://ursy.io/wp-json/ursy-tools/v2/catalog",
    "source_type": "capability_manifest",
    "verified_at": "2026-10-14 03:01:34",
    "revision": "cd0a978dc23748653c7d3c844b5528a95ce65ad13033ae2732272632ca87ac94",
    "type": "capabilities",
    "source": {
        "url": "https://ursy.io/wp-json/ursy-tools/v2/catalog",
        "type": "capability_manifest"
    },
    "last_verified_at": "2026-10-14 03:01:34",
    "stale": false
}