API Reference

Tools

Copy page

Operations for managing MCP tools

List SubAgent Tool Relations

GET
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

Query Parameters

page?number
Default1
Range1 <= value
limit?number
Default10
Range1 <= value <= 100
subAgentId?string
toolId?string

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations"
{
  "data": [
    {
      "createdAt": "string",
      "headers": "string",
      "id": "string",
      "selectedTools": "string",
      "subAgentId": "string",
      "toolId": "string",
      "toolPolicies": "string",
      "updatedAt": "string"
    }
  ],
  "pagination": {
    "limit": 10,
    "page": 1,
    "pages": 0,
    "total": 0
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Create SubAgent Tool Relation

POST
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

Request Body

application/json

createdAt?string
headers?
id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
selectedTools?array<>
subAgentId*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
toolId*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
toolPolicies?
updatedAt?string

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations" \  -H "Content-Type: application/json" \  -d '{    "id": "resource_789",    "subAgentId": "resource_789",    "toolId": "resource_789"  }'
{
  "data": {
    "createdAt": "string",
    "headers": "string",
    "id": "string",
    "selectedTools": "string",
    "subAgentId": "string",
    "toolId": "string",
    "toolPolicies": "string",
    "updatedAt": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Get SubAgents for Tool

GET
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations/tool/{toolId}/sub-agents

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

toolId*string

Query Parameters

page?number
Default1
Range1 <= value
limit?number
Default10
Range1 <= value <= 100

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations/tool/string/sub-agents"
{
  "data": [
    {
      "createdAt": "string",
      "headers": "string",
      "id": "string",
      "selectedTools": "string",
      "subAgentId": "string",
      "toolId": "string",
      "toolPolicies": "string",
      "updatedAt": "string"
    }
  ],
  "pagination": {
    "limit": 10,
    "page": 1,
    "pages": 0,
    "total": 0
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Get SubAgent Tool Relation

GET
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations/resource_789"
{
  "data": {
    "createdAt": "string",
    "headers": "string",
    "id": "string",
    "selectedTools": "string",
    "subAgentId": "string",
    "toolId": "string",
    "toolPolicies": "string",
    "updatedAt": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Delete SubAgent Tool Relation

DELETE
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Response Body

application/json

curl -X DELETE "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations/resource_789"
Empty
{
  "details": null,
  "error": "string",
  "message": "string"
}

Update SubAgent Tool Relation

PUT
/manage/tenants/{tenantId}/projects/{projectId}/agents/{agentId}/sub-agent-tool-relations/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

agentId*string

Agent identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Request Body

application/json

createdAt?string
headers?
id?string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
selectedTools?array<>
subAgentId?string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
toolId?string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
toolPolicies?
updatedAt?string

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X PUT "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/agents/agent_789/sub-agent-tool-relations/resource_789" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "createdAt": "string",
    "headers": "string",
    "id": "string",
    "selectedTools": "string",
    "subAgentId": "string",
    "toolId": "string",
    "toolPolicies": "string",
    "updatedAt": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

List Tools

GET
/manage/tenants/{tenantId}/projects/{projectId}/tools

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

Query Parameters

page?number
Default1
Range1 <= value
limit?number
Default10
Range1 <= value <= 100
status?string
Value in"healthy" | "unhealthy" | "unknown" | "needs_auth" | "unavailable"
skipDiscovery?string

Skip MCP server discovery for faster response. Status will be "unknown".

Value in"true" | "false"

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools"
{
  "data": [
    {
      "availableTools": [
        {
          "description": "string",
          "inputSchema": {
            "property1": null,
            "property2": null
          },
          "name": "string"
        }
      ],
      "capabilities": "string",
      "config": {
        "mcp": {
          "activeTools": [
            "string"
          ],
          "prompt": "string",
          "server": {
            "url": "http://example.com"
          },
          "toolOverrides": {
            "property1": {
              "description": "string",
              "displayName": "string",
              "schema": null,
              "transformation": "string"
            },
            "property2": {
              "description": "string",
              "displayName": "string",
              "schema": null,
              "transformation": "string"
            }
          },
          "transport": {
            "eventSourceInit": {
              "property1": null,
              "property2": null
            },
            "reconnectionOptions": {},
            "requestInit": {
              "property1": null,
              "property2": null
            },
            "sessionId": "string",
            "type": "streamable_http"
          }
        },
        "type": "mcp"
      },
      "createdAt": "string",
      "createdBy": "string",
      "credentialReferenceId": "string",
      "credentialScope": "string",
      "description": "string",
      "expiresAt": "string",
      "headers": "string",
      "id": "resource_789",
      "imageUrl": "string",
      "lastError": "string",
      "name": "string",
      "projectId": "string",
      "relationshipId": "string",
      "status": "healthy",
      "tenantId": "string",
      "updatedAt": "string",
      "version": "string"
    }
  ],
  "pagination": {
    "limit": 10,
    "page": 1,
    "pages": 0,
    "total": 0
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Create Tool

POST
/manage/tenants/{tenantId}/projects/{projectId}/tools

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

Request Body

application/json

capabilities?|||||array<>|
config*
createdAt?string
credentialReferenceId?string
Lengthlength <= 256
credentialScope?string
Lengthlength <= 50
description?string
headers?|||||array<>|
id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
imageUrl?string
lastError?string
name*string
Lengthlength <= 256
updatedAt?string

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools" \  -H "Content-Type: application/json" \  -d '{    "config": {      "mcp": {        "server": {          "url": "http://example.com"        }      },      "type": "mcp"    },    "id": "resource_789",    "name": "string"  }'
{
  "data": {
    "availableTools": [
      {
        "description": "string",
        "inputSchema": {
          "property1": null,
          "property2": null
        },
        "name": "string"
      }
    ],
    "capabilities": "string",
    "config": {
      "mcp": {
        "activeTools": [
          "string"
        ],
        "prompt": "string",
        "server": {
          "url": "http://example.com"
        },
        "toolOverrides": {
          "property1": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          },
          "property2": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          }
        },
        "transport": {
          "eventSourceInit": {
            "property1": null,
            "property2": null
          },
          "reconnectionOptions": {},
          "requestInit": {
            "property1": null,
            "property2": null
          },
          "sessionId": "string",
          "type": "streamable_http"
        }
      },
      "type": "mcp"
    },
    "createdAt": "string",
    "createdBy": "string",
    "credentialReferenceId": "string",
    "credentialScope": "string",
    "description": "string",
    "expiresAt": "string",
    "headers": "string",
    "id": "resource_789",
    "imageUrl": "string",
    "lastError": "string",
    "name": "string",
    "projectId": "string",
    "relationshipId": "string",
    "status": "healthy",
    "tenantId": "string",
    "updatedAt": "string",
    "version": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Get Tool

GET
/manage/tenants/{tenantId}/projects/{projectId}/tools/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools/resource_789"
{
  "data": {
    "availableTools": [
      {
        "description": "string",
        "inputSchema": {
          "property1": null,
          "property2": null
        },
        "name": "string"
      }
    ],
    "capabilities": "string",
    "config": {
      "mcp": {
        "activeTools": [
          "string"
        ],
        "prompt": "string",
        "server": {
          "url": "http://example.com"
        },
        "toolOverrides": {
          "property1": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          },
          "property2": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          }
        },
        "transport": {
          "eventSourceInit": {
            "property1": null,
            "property2": null
          },
          "reconnectionOptions": {},
          "requestInit": {
            "property1": null,
            "property2": null
          },
          "sessionId": "string",
          "type": "streamable_http"
        }
      },
      "type": "mcp"
    },
    "createdAt": "string",
    "createdBy": "string",
    "credentialReferenceId": "string",
    "credentialScope": "string",
    "description": "string",
    "expiresAt": "string",
    "headers": "string",
    "id": "resource_789",
    "imageUrl": "string",
    "lastError": "string",
    "name": "string",
    "projectId": "string",
    "relationshipId": "string",
    "status": "healthy",
    "tenantId": "string",
    "updatedAt": "string",
    "version": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Delete Tool

DELETE
/manage/tenants/{tenantId}/projects/{projectId}/tools/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Response Body

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X DELETE "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools/resource_789"
Empty
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Update Tool

PUT
/manage/tenants/{tenantId}/projects/{projectId}/tools/{id}

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Request Body

application/json

capabilities?|||||array<>|
config?
createdAt?string
credentialReferenceId?string
Lengthlength <= 256
credentialScope?string
Lengthlength <= 50
description?string
headers?|||||array<>|
id?string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255
imageUrl?string
lastError?string
name?string
Lengthlength <= 256
updatedAt?string

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X PUT "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools/resource_789" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "availableTools": [
      {
        "description": "string",
        "inputSchema": {
          "property1": null,
          "property2": null
        },
        "name": "string"
      }
    ],
    "capabilities": "string",
    "config": {
      "mcp": {
        "activeTools": [
          "string"
        ],
        "prompt": "string",
        "server": {
          "url": "http://example.com"
        },
        "toolOverrides": {
          "property1": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          },
          "property2": {
            "description": "string",
            "displayName": "string",
            "schema": null,
            "transformation": "string"
          }
        },
        "transport": {
          "eventSourceInit": {
            "property1": null,
            "property2": null
          },
          "reconnectionOptions": {},
          "requestInit": {
            "property1": null,
            "property2": null
          },
          "sessionId": "string",
          "type": "streamable_http"
        }
      },
      "type": "mcp"
    },
    "createdAt": "string",
    "createdBy": "string",
    "credentialReferenceId": "string",
    "credentialScope": "string",
    "description": "string",
    "expiresAt": "string",
    "headers": "string",
    "id": "resource_789",
    "imageUrl": "string",
    "lastError": "string",
    "name": "string",
    "projectId": "string",
    "relationshipId": "string",
    "status": "healthy",
    "tenantId": "string",
    "updatedAt": "string",
    "version": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}

Get User Credential for Tool

GET
/manage/tenants/{tenantId}/projects/{projectId}/tools/{id}/user-credential

Authorization

bearerAuth cookieAuth
AuthorizationBearer <token>

Bearer token authentication. Use this for API clients and service-to-service communication. Set the Authorization header to "Bearer ".

In: header

better-auth.session_token<token>

Session-based authentication using HTTP-only cookies. Cookies are automatically sent by browsers. For server-side requests, include cookies with names starting with "better-auth." in the Cookie header.

In: cookie

Path Parameters

tenantId*string

Tenant identifier

projectId*string

Project identifier

id*string

Resource identifier

Match^[a-zA-Z0-9\-_.]+$
Length1 <= length <= 255

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.pilot.inkeep.com/manage/tenants/tenant_123/projects/project_456/tools/resource_789/user-credential"
{
  "data": {
    "createdAt": "string",
    "createdBy": "string",
    "credentialStoreId": "string",
    "externalAgents": [
      {
        "baseUrl": "string",
        "createdAt": "string",
        "credentialReferenceId": "string",
        "description": "string",
        "id": "string",
        "name": "string",
        "projectId": "string",
        "tenantId": "string",
        "updatedAt": "string"
      }
    ],
    "id": "string",
    "name": "string",
    "retrievalParams": "string",
    "toolId": "string",
    "tools": [
      {
        "capabilities": "string",
        "config": "string",
        "createdAt": "string",
        "credentialReferenceId": "string",
        "credentialScope": "string",
        "description": "string",
        "headers": "string",
        "id": "string",
        "imageUrl": "string",
        "lastError": "string",
        "name": "string",
        "projectId": "string",
        "tenantId": "string",
        "updatedAt": "string"
      }
    ],
    "type": "memory",
    "updatedAt": "string",
    "userId": "string"
  }
}
{
  "code": "bad_request",
  "detail": "Bad Request",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 400,
  "title": "Bad Request",
  "error": {
    "code": "bad_request",
    "message": "Bad Request"
  }
}
{
  "code": "unauthorized",
  "detail": "Unauthorized",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 401,
  "title": "Unauthorized",
  "error": {
    "code": "unauthorized",
    "message": "Unauthorized"
  }
}
{
  "code": "forbidden",
  "detail": "Forbidden",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 403,
  "title": "Forbidden",
  "error": {
    "code": "forbidden",
    "message": "Forbidden"
  }
}
{
  "code": "not_found",
  "detail": "Not Found",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 404,
  "title": "Not Found",
  "error": {
    "code": "not_found",
    "message": "Not Found"
  }
}
{
  "code": "unprocessable_entity",
  "detail": "Unprocessable Entity",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 422,
  "title": "Unprocessable Entity",
  "error": {
    "code": "unprocessable_entity",
    "message": "Unprocessable Entity"
  }
}
{
  "code": "internal_server_error",
  "detail": "Internal Server Error",
  "instance": "/conversations/123",
  "requestId": "req_1234567890",
  "status": 500,
  "title": "Internal Server Error",
  "error": {
    "code": "internal_server_error",
    "message": "Internal Server Error"
  }
}