> Source: https://wexa.ai/docs/connectors/get-connector-form

# get-connector-form

Read a connector category's setup form, as the console's create page shows it: the fields to fill in, whether the provider signs the person in after the connector is created, and the defaults a new connector starts from. Needs the `fabric:orchestrate.read` grant.

The shape of `result` for `get-connector-form` is not recorded here: it was not captured against a live deployment. The fields inside `form` differ from one category to the next. Call it once and read what comes back rather than assuming a shape.

**Read a connector form**

**Wexa MCP server**

```bash
curl -sS -X POST https://fabric.wexa.ai/mcp/$FABRIC_PROJECT_ID \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "Mcp-Session-Id: $MCP_SESSION_ID" \
  -H "content-type: application/json" -H "accept: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get-connector-form","arguments":{"category":"servicenow"}}}'
```

**REST API**

```bash
curl -sS https://fabric.wexa.ai/v1/get-connector-form \
  -H "authorization: Bearer $FABRIC_API_KEY" \
  -H "content-type: application/json" \
  -d '{"category":"servicenow"}'
```

**TypeScript SDK**

```ts
import { Fabric } from '@wexa-fabric/sdk'

const fabric = new Fabric()
const result = await fabric.getConnectorForm({
  category: 'servicenow'
})
```

**Python SDK**

```python
from wexa import Fabric

fabric = Fabric()
out = fabric.get_connector_form(category="servicenow")
```

## Parameters

| Parameter | Type | Required | Notes |
| --- | --- | --- | --- |
| `category` | string | Required | The connector category, such as `servicenow`, from [`list-connector-catalog`](/docs/connectors/list-connector-catalog). Case does not matter. Non-empty. A category with no form is refused (404). |

**Errors**

- `ValidationError` (400): the platform refused the request, with its own reason.

**More details**

The result carries `category`, the category you asked about in lower case, and `form`, the category's template. Its `ui_form` lists the fields to fill in: each field's id, label and type, and whether it is required or secret. The rest are the defaults a new connector starts from. In Python read it as `out["form"]`, and in TypeScript as `result.form`.

The form is the category's template. It never carries an existing connector's saved values, so it is safe to read for a connector that is already configured. Fill the form in and pass the values to [`configure-connector`](/docs/connectors/configure-connector) as `credentials`, keyed by each field's id. To read the forms of every category at once, call `list-connector-catalog` with `forms`.

The error code on the 422 is `S4:validate-input`, and the message on the 400 and 404 is the platform's own reason. Reading a form needs only `fabric:orchestrate.read`, and anyone with it may read one; saving the values is `configure-connector`, which only an admin may call. Not marked consequential. See also [`list-connector-access-scopes`](/docs/connectors/list-connector-access-scopes).

Every tool call works the same way: [How every tool call works](/docs/sdks-and-apis/how-every-tool-call-works).
