---
title: "Search Tools"
method: GET
path: "/v1/tools/search"
tags: ["API v1", "Tools", "Tools Discovery"]
---

# Search Tools

`GET /v1/tools/search`

## Request

- Base URL: `https://api.xpander.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xpander.ai/v1/tools/search`
- Auth: API key in header `x-api-key`

Fuzzy search the unified tool catalog by name/description.

## Query parameters

- `query` string, required: Search query.
- `type` 'connector' | 'agent' | 'workflow' | 'custom_function' | 'mcp': Kind of attachable tool in the unified catalog.

## Response `200`

Successful Response

- ToolCatalogItem[]
  - `kind` 'connector' | 'agent' | 'workflow' | 'custom_function' | 'mcp', required: Kind of attachable tool in the unified catalog.
  - `id` string, required: Identifier to attach this tool: connector_id, agent_id, workflow_id, custom_function_id, or mcp registry id.
  - `name` string, required: Display name.
  - `description` string, nullable: What the tool does.
  - `logo` string, nullable: Logo/icon identifier.
  - `status` string, nullable: Connector status ('ready' means usable). Connectors only.
  - `total_operations` integer, nullable: Number of operations available. Connectors only.
  - `using_built_in_auth` boolean, nullable: Whether xpander manages auth for this connector.
  - `connections` ConnectionSummary[], nullable: Existing connections for this connector in your org. Connectors only.
    - `id` string, required: Unique identifier of this connection. Use this ID when referencing the connection in operations or agent tool configuration.
    - `name` string, required: Human-readable name for this connection instance (e.g., 'Production Slack', 'Dev Jira').
    - `access_scope` string, nullable: Who can use this connection. 'organizational' is visible to all org members. 'personal' is only visible to the connection owner.
    - `is_service_account` boolean, nullable: Whether this connection uses a service account (shared org-level credentials) rather than personal user credentials.
    - `per_user` boolean, nullable: Per-user OAuth placeholder: this connection holds no credential of its own; each user signs in individually and tokens are stored per connection+user.
    - `owner` string, nullable: User ID of the connection owner. Only relevant for personal connections.
    - `version` string, nullable: The connector version this connection is pinned to. May differ from the connector's latest version.
    - `open_api_spec_id` string, nullable: OpenAPI spec ID this connection uses. May differ from the connector's default spec if the connection is pinned to a specific version.
    - `status` string, nullable: Connection status ('ready' means authorized/usable).
    - `created_at` string, date-time, nullable: Optional creation date of the connection.
  - `supports_user_auth` boolean, nullable: The connector declares oauth2, so per-user sign-in is possible. Connectors only.
  - `orgOwned` boolean, nullable: The caller's organization owns this connector row, making it manageable (replace spec, delete). Connectors only.
  - `transport` string, nullable: MCP transport. MCP only.
  - `auth_type` string, nullable: MCP auth type. MCP only.
  - `url` string, nullable: MCP server URL. MCP only.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xpander/apis/xpander-ai-api-service.md) - [All operations](https://skmtc.dev/xpander/apis/xpander-ai-api-service/llms.txt) - [OpenAPI document](https://skmtc.dev/xpander/apis/xpander-ai-api-service/revisions/725c0066d5df?raw)
