Skip to main content
You don’t need to register custom connectors anywhere. Any object that satisfies the Tool type works directly with ToolCard. There is no global registry, provider, or configuration step — define a plain object that matches the type and pass it straight to the component.

Minimal custom tool

The only required fields are id and name. Everything else is optional:

Custom tool with fields and an inline SVG image

Use as const satisfies Tool for the strictest typing, an inline SVG string for the logo, and a fields array to describe the connector’s configuration inputs:
SVG content must be the complete <svg>...</svg> markup including a viewBox. Use explicit fill colors — an SVG rendered via <img> does not inherit CSS currentColor. Only include SVG markup you fully trust.

Custom tool with a hosted image URL

If you have a stable hosted asset, use { type: "url", src: "..." } instead of an inline SVG string:

Type-safe custom tools

For the strictest compile-time guarantees, use as const satisfies Tool. TypeScript will narrow every field to its literal type, and fields will be typed as a readonly tuple:

Mixing catalog and custom tools

Catalog entries and custom tools share the same Tool type, so they can be combined freely in a single array: