Tools

Tool management operations

Tool management operations

List tools

List tools with cursor pagination. Optionally filter by workflow usage.

GET
/tools

Query Parameters

project?string

Project override

workflow_id?string

Return only tools referenced by the given workflow

limit?integer

Page size (max 500)

cursor?string

Opaque pagination cursor

q?string

Filter by tool ID prefix

Response Body

curl -X GET "https://loading/api/v0/tools?project=string&workflow_id=string&limit=0&cursor=string&q=string"
{
  "data": {
    "page": {
      "limit": 50,
      "next_cursor": "v2:after:tool-001",
      "prev_cursor": "v2:before:tool-000",
      "total": 2
    },
    "tools": [
      {
        "config": {
          "property1": null,
          "property2": null
        },
        "cwd": "string",
        "description": "string",
        "env": {
          "property1": "string",
          "property2": "string"
        },
        "etag": "abc123",
        "id": "string",
        "input": {
          "property1": null,
          "property2": null
        },
        "output": {
          "property1": null,
          "property2": null
        },
        "resource": "string",
        "timeout": "string",
        "with": {
          "property1": null,
          "property2": null
        }
      }
    ]
  },
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}

Export tools

Write tool YAML files for the active project.

POST
/tools/export

Response Body

curl -X POST "https://loading/api/v0/tools/export"
{
  "data": {
    "property1": 0,
    "property2": 0
  },
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "data": null,
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}

Import tools

Read tool YAML files from the project directory.

POST
/tools/import

Query Parameters

strategy?string

seed_only|overwrite_conflicts

Value in"seed_only" | "overwrite_conflicts"

Response Body

curl -X POST "https://loading/api/v0/tools/import?strategy=seed_only"
{
  "data": {},
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "data": null,
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "data": null,
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}

Get tool

Retrieve a tool configuration by ID.

GET
/tools/{tool_id}

Path Parameters

tool_idstring

Tool ID

Query Parameters

project?string

Project override

Response Body

curl -X GET "https://loading/api/v0/tools/string?project=string"
{
  "data": {
    "config": {
      "property1": null,
      "property2": null
    },
    "cwd": "string",
    "description": "string",
    "env": {
      "property1": "string",
      "property2": "string"
    },
    "id": "string",
    "input": {
      "property1": null,
      "property2": null
    },
    "output": {
      "property1": null,
      "property2": null
    },
    "resource": "string",
    "timeout": "string",
    "with": {
      "property1": null,
      "property2": null
    }
  },
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}

Delete tool

Delete a tool configuration. Returns conflict when referenced.

DELETE
/tools/{tool_id}

Path Parameters

tool_idstring

Tool ID

Query Parameters

project?string

Project override

Response Body

curl -X DELETE "https://loading/api/v0/tools/string?project=string"
"string"
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}

Create or update tool

Create a tool configuration when absent or update an existing one using strong ETag concurrency.

PUT
/tools/{tool_id}

Path Parameters

tool_idstring

Tool ID

Query Parameters

project?string

Project override

Header Parameters

If-Match?string

Strong ETag for optimistic concurrency

Tool configuration payload

Empty Object

Response Body

curl -X PUT "https://loading/api/v0/tools/string?project=string" \
  -H "If-Match: string" \
  -H "Content-Type: application/json" \
  -d '{}'
{
  "data": {
    "config": {
      "property1": null,
      "property2": null
    },
    "cwd": "string",
    "description": "string",
    "env": {
      "property1": "string",
      "property2": "string"
    },
    "id": "string",
    "input": {
      "property1": null,
      "property2": null
    },
    "output": {
      "property1": null,
      "property2": null
    },
    "resource": "string",
    "timeout": "string",
    "with": {
      "property1": null,
      "property2": null
    }
  },
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "data": {
    "config": {
      "property1": null,
      "property2": null
    },
    "cwd": "string",
    "description": "string",
    "env": {
      "property1": "string",
      "property2": "string"
    },
    "id": "string",
    "input": {
      "property1": null,
      "property2": null
    },
    "output": {
      "property1": null,
      "property2": null
    },
    "resource": "string",
    "timeout": "string",
    "with": {
      "property1": null,
      "property2": null
    }
  },
  "error": {
    "code": "string",
    "details": "string",
    "message": "string"
  },
  "message": "string",
  "status": 0
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}
{
  "code": "invalid_cursor",
  "detail": "Invalid cursor parameter",
  "instance": "/api/v0/workflows",
  "status": 400,
  "title": "Bad Request",
  "type": "about:blank"
}