ToolsToolReadResult tools.tool-read-result@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
tools
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/tools/tool-read-result.v1.json

tools.tool-read-result@1: answers of tools.tool.read on openvibe.tools (public registry; ADR-027). GET /api/v1/tools → tools.tool-list@1; GET /api/v1/tools/:id → tools.tool@1 with its schemas embedded; GET /api/v1/tools/:id/schema → the tool's own JSON Schema document { $schema, $id, $defs: { input, output } } (application/schema+json; input is false for a tool without an API input).

Fields

This schema has no named fields.

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: list
{
  "tools": [
    {
      "id": "png",
      "family": "img",
      "name": "PNG Converter",
      "summary": "Convert JPG, WebP, AVIF, HEIC, GIF, BMP, TIFF and more to PNG.",
      "keywords": [
        "jpg to png",
        "webp to png",
        "heic to png",
        "convert image to png"
      ],
      "status": "stable",
      "execution": "job",
      "api": true,
      "run": {
        "method": "POST",
        "path": "/api/v1/tools/png/run",
        "job": {
          "type": "img.process",
          "operation": "convert",
          "preset": {
            "format": "png"
          }
        },
        "legacy": [
          "POST /api/process",
          "POST /api/process/direct"
        ]
      },
      "input": {
        "$ref": "https://openvibe.tools/api/v1/tools/png/schema#/$defs/input"
      },
      "files": {
        "min": 1,
        "max": 1,
        "accept": [
          "image/*"
        ],
        "maxBytes": 52428800
      },
      "output": {
        "kind": "file",
        "mime": [
          "image/png"
        ]
      },
      "limits": {
        "timeoutMs": 120000,
        "maxPixels": 100000000
      },
      "auth": {
        "anonymous": true,
        "capability": "tools.tool.run"
      },
      "quotaClass": "tools-job",
      "cost": 5,
      "egress": false,
      "hosts": [
        "png.openvibe.tools"
      ],
      "docs": "https://openvibe.tools/tool/png"
    },
    {
      "id": "dns",
      "family": "net",
      "name": "DNS Lookup",
      "summary": "Look up A, AAAA, MX, TXT, NS, CNAME and other records for a domain.",
      "keywords": [
        "dns lookup",
        "mx record lookup",
        "txt record check",
        "nslookup online"
      ],
      "status": "stable",
      "execution": "sync",
      "api": true,
      "run": {
        "method": "POST",
        "path": "/api/v1/tools/dns/run",
        "job": null,
        "legacy": [
          "GET /api/net/dns/:target"
        ]
      },
      "input": {
        "$ref": "https://openvibe.tools/api/v1/tools/dns/schema#/$defs/input"
      },
      "files": null,
      "output": {
        "kind": "json",
        "schema": {
          "$ref": "https://openvibe.tools/api/v1/tools/dns/schema#/$defs/output"
        }
      },
      "limits": {
        "timeoutMs": 10000,
        "maxInputBytes": 1024,
        "perTargetPerMinute": 30
      },
      "auth": {
        "anonymous": true,
        "capability": "tools.tool.run"
      },
      "quotaClass": "tools-fetch",
      "cost": 1,
      "egress": true,
      "hosts": [
        "dns.openvibe.tools"
      ],
      "docs": "https://openvibe.tools/tool/dns"
    },
    {
      "id": "port",
      "family": "net",
      "name": "Port Checker",
      "summary": "Check whether TCP ports on a host are open.",
      "keywords": [
        "open port checker",
        "port scanner"
      ],
      "status": "beta",
      "execution": "sync",
      "api": true,
      "run": {
        "method": "POST",
        "path": "/api/v1/tools/port/run",
        "job": null,
        "legacy": [
          "GET /api/net/port/:target"
        ]
      },
      "input": {
        "$ref": "https://openvibe.tools/api/v1/tools/port/schema#/$defs/input"
      },
      "files": null,
      "output": {
        "kind": "json",
        "schema": {
          "$ref": "https://openvibe.tools/api/v1/tools/port/schema#/$defs/output"
        }
      },
      "limits": {
        "timeoutMs": 15000,
        "perTargetPerMinute": 6
      },
      "auth": {
        "anonymous": false,
        "capability": "tools.net.probe"
      },
      "quotaClass": "tools-probe",
      "cost": 5,
      "egress": true,
      "hosts": [
        "port.openvibe.tools"
      ],
      "docs": "https://openvibe.tools/tool/port"
    },
    {
      "id": "yt",
      "family": "media",
      "name": "YouTube Downloader",
      "summary": "Save a YouTube video or its audio.",
      "status": "stable",
      "execution": "job",
      "api": false,
      "run": null,
      "input": null,
      "files": null,
      "output": {
        "kind": "file",
        "mime": [
          "video/mp4",
          "audio/mpeg"
        ]
      },
      "limits": {
        "timeoutMs": 900000,
        "maxDurationSec": 3600,
        "perTargetPerMinute": 20
      },
      "auth": {
        "anonymous": true,
        "capability": "tools.tool.run"
      },
      "quotaClass": "tools-download",
      "cost": 50,
      "egress": true,
      "hosts": [
        "youtube-downloader.openvibe.tools",
        "yt.openvibe.tools"
      ],
      "docs": "https://openvibe.tools/tool/yt"
    }
  ],
  "count": 4,
  "updated_at": "2026-09-23T21:00:00.000Z",
  "families": [
    {
      "id": "img",
      "name": "Image Tools",
      "count": 1
    },
    {
      "id": "net",
      "name": "Network Tools",
      "count": 2
    },
    {
      "id": "media",
      "name": "Media",
      "count": 1
    }
  ]
}
Valid: one
{
  "id": "dns",
  "family": "net",
  "name": "DNS Lookup",
  "summary": "Look up A, AAAA, MX, TXT, NS, CNAME and other records for a domain.",
  "keywords": [
    "dns lookup",
    "mx record lookup",
    "txt record check",
    "nslookup online"
  ],
  "status": "stable",
  "execution": "sync",
  "api": true,
  "run": {
    "method": "POST",
    "path": "/api/v1/tools/dns/run",
    "job": null,
    "legacy": [
      "GET /api/net/dns/:target"
    ]
  },
  "input": {
    "$ref": "https://openvibe.tools/api/v1/tools/dns/schema#/$defs/input"
  },
  "files": null,
  "examples": [
    {
      "title": "MX records of a domain",
      "input": {
        "target": "example.com",
        "type": "MX"
      }
    }
  ],
  "output": {
    "kind": "json",
    "schema": {
      "$ref": "https://openvibe.tools/api/v1/tools/dns/schema#/$defs/output"
    }
  },
  "limits": {
    "timeoutMs": 10000,
    "maxInputBytes": 1024,
    "perTargetPerMinute": 30
  },
  "auth": {
    "anonymous": true,
    "capability": "tools.tool.run"
  },
  "quotaClass": "tools-fetch",
  "cost": 1,
  "egress": true,
  "hosts": [
    "dns.openvibe.tools"
  ],
  "docs": "https://openvibe.tools/tool/dns"
}
Valid: schema-doc
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://openvibe.tools/api/v1/tools/dns/schema",
  "$defs": {
    "input": {
      "type": "object"
    },
    "output": {
      "type": "object"
    }
  }
}
Rejected: bad-schema-doc
{
  "$schema": 5,
  "$defs": {}
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('tools.tool-read-result@1', value);   // { valid, errors: [{ path, message }] }