Syndai Docs

Add a custom tool

POST
/api/v1/external/coding/tools

Add a skill or MCP server, workspace-wide or for one project. Its content is safety-scanned: a flagged tool is still created but runs skip it until someone acknowledges the flag in the portal. An MCP server using OAuth stays pending until it is connected in the portal. Requires the coding:tools:write scope.

Authorization

CustomerApiKey
headerAuthorizationBearer <API Key>

Customer API key sent as a bearer token

Query Parameters

customer_id?|null

Request Body

application/json
  1. body
auth_mode?|
Value in"oauth""token""none"null
config*
description*string
kind*string
Value in"mcp_server""skill"
manual_client?|null
name*string
repository_id?|null

Response Body

Document created, URL follows

application/json
  1. response
tool*
Example Request
curl -X POST 'https://api.syndai.ai/api/v1/external/coding/tools' \  -H 'Content-Type: application/json' \  -d '{  "config": {},  "description": "string",  "kind": "mcp_server",  "name": "string"}'
Example Response
{  "tool": {    "auth_mode": "oauth",    "auth_status": "pending",    "config": {},    "description": "string",    "description_hint": "string",    "enabled": true,    "has_token": true,    "id": "string",    "kind": "mcp_server",    "name": "string",    "not_ready_reason": "string",    "oauth": {      "connected_at": "string",      "connected_by_left": true,      "connected_by_name": "string",      "issuer_host": "string",      "redirect_uri": "string",      "requested_scopes": [        "string"      ],      "scopes": [        "string"      ]    },    "repository_id": "string",    "run_ready": true,    "scan_reason": "string",    "scan_status": "scanned",    "scanned_at": "string"  }}