URSY.DEVPART OF THE URSY NETWORKSign inBuild with URSY

Every contract sourcedEvery check datedGaps shown, never filledBuild with URSY

Capabilities

VAT Calculator

Add, remove or isolate VAT using a rate you enter rather than a stale preset.

How this capability is exposed

Stable ID
ursy.io:vat-calculator
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:vat-calculator",
    "slug": "vat-calculator",
    "name": "VAT Calculator",
    "version": "1.0.0",
    "summary": "Add, remove or isolate VAT using a rate you enter rather than a stale preset.",
    "intents": [
        "VAT calculator",
        "add vat",
        "remove vat",
        "vat calculator uk",
        "tax calculator",
        "20 percent vat"
    ],
    "aliases": [],
    "keywords": [
        "add vat",
        "remove vat",
        "vat calculator uk",
        "tax calculator",
        "20 percent vat"
    ],
    "category": "business-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": {
            "amount": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000000000000000,
                "description": "User-selected currency or monetary unit."
            },
            "rate": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000000000000000,
                "description": "Percent."
            },
            "direction": {
                "type": "string",
                "enum": [
                    "net",
                    "gross"
                ],
                "default": "net"
            },
            "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": [
            "amount",
            "rate"
        ],
        "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
            },
            "net": {
                "type": "number",
                "minimum": 0,
                "maximum": 1.0e+300,
                "description": "Same currency as amount."
            },
            "vat": {
                "type": "number",
                "minimum": 0,
                "maximum": 1.0e+300,
                "description": "Same currency as amount."
            },
            "gross": {
                "type": "number",
                "minimum": 0,
                "maximum": 1.0e+300,
                "description": "Same currency as amount."
            }
        },
        "required": [
            "text",
            "metrics",
            "net",
            "vat",
            "gross"
        ],
        "additionalProperties": false
    },
    "examples": [
        {
            "input": {
                "amount": 120,
                "rate": 20,
                "direction": "gross"
            },
            "output": {
                "text": "Formula: gross = net \u00d7 (1 + rate / 100)\nNet: 100\nVAT: 20\nGross: 120",
                "metrics": [
                    {
                        "label": "Net",
                        "value": "100"
                    },
                    {
                        "label": "VAT",
                        "value": "20"
                    },
                    {
                        "label": "Gross",
                        "value": "120"
                    }
                ],
                "net": 100,
                "vat": 20,
                "gross": 120
            }
        }
    ],
    "limits": {
        "max_input_bytes": 5308416,
        "max_output_bytes": 26214400,
        "max_json_depth": 100,
        "max_csv_cells": 1000000
    },
    "canonical_url": "https://ursy.io/business-tools/vat-calculator/",
    "descriptor_url": "https://ursy.io/wp-json/ursy-tools/v2/capabilities/vat-calculator",
    "runtime": {
        "package": "@ursy/runtime",
        "version": "1.0.0",
        "module": "@ursy/runtime",
        "entry": "run",
        "slug": "vat-calculator"
    },
    "health": {
        "status": "ok",
        "last_tested": "2026-09-11T17:24:33.220Z",
        "runtime_version": "1.0.0",
        "golden_fixtures": 2,
        "node_contract_tests": 2,
        "browser_verified": true,
        "tests_passed": 7,
        "tests_total": 7,
        "test_suite": "tests/runtime-canary.test.mjs",
        "browser_suite": "tests/runtime-browser.py"
    },
    "audit": {
        "classification": "A",
        "engine": "calculator",
        "mode": "vat",
        "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:vat-calculator:input_schema",
    "output_schema_id": "ursy.io:vat-calculator: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 07:01:38",
    "revision": "5ab6974dda5b3df56c1e602089d01d6bf2a18b006b58809089878934fb958722",
    "type": "capabilities",
    "source": {
        "url": "https://ursy.io/wp-json/ursy-tools/v2/catalog",
        "type": "capability_manifest"
    },
    "last_verified_at": "2026-10-14 07:01:38",
    "stale": false
}