# io.usefulapi/knack (remote · knack.usefulapi.io)

Read, create, update and delete records; inspect objects, fields and schema in your Knack database.

- Trust score: 28/100 (low)
- Change this week: −40
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `knack.usefulapi.io`: 28/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-knack/knack.md), [page](https://verifymcp.io/servers/io-usefulapi-knack/knack)

## Channel facts

- Endpoint: `https://knack.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 4 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add --transport http io-usefulapi-knack https://knack.usefulapi.io/mcp
```

### Codex

```toml
[mcp_servers.io-usefulapi-knack]
url = "https://knack.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-knack": {
      "type": "remote",
      "url": "https://knack.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-knack --url https://knack.usefulapi.io/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-knack:
    url: "https://knack.usefulapi.io/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-knack": {
      "type": "http",
      "url": "https://knack.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 28, −44)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.20 → unverified
- [security regression] Authorization: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: fail → unverified

### 2026-08-02 (score 72, +54)

- [security improvement] Authorization: unverified → pass
- [security improvement] Transport: fail → pass
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.20

### 2026-08-01 (score 18, −53)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.13 → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 71, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 69, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-27 (score 68, +56)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (9)

### `knack_get_application` (~80 tokens)

Get application schema

Fetch a Knack application's full schema/metadata — its objects (tables), fields, and scenes. Knack API: GET /applications/{app_id}. Returns the raw JSON as-is. app_id defaults to the configured KNACK_APPLICATION_ID.

Input parameters:

- `appId` (string): Optional Knack Application ID; defaults to the configured KNACK_APPLICATION_ID.

### `knack_list_objects` (~71 tokens)

List objects (tables)

List an application's objects (tables) as a compact array [{ key, name, fieldCount }]. Convenience over GET /applications/{app_id}. app_id defaults to the configured KNACK_APPLICATION_ID.

Input parameters:

- `appId` (string): Optional Knack Application ID; defaults to the configured KNACK_APPLICATION_ID.

### `knack_list_fields` (~113 tokens)

List fields for an object

List the fields of ONE object as [{ key, name, type, required }]. Fetches GET /applications/{app_id} and returns the fields of the object whose key === objectKey (e.g. "object_1"). app_id defaults to the configured KNACK_APPLICATION_ID.

Input parameters:

- `appId` (string): Optional Knack Application ID; defaults to the configured KNACK_APPLICATION_ID.
- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".

### `knack_list_records` (~287 tokens)

List records

List an object's records. Knack API: GET /objects/{object_key}/records. Returns the paged envelope { total_pages, current_page, total_records, records: [...] } as-is. Records carry both field_x (formatted) and field_x_raw (structured) values. Page with page / rows_per_page (max 1000), sort with sort_field / sort_order, and filter with the `filters` object.

Input parameters:

- `filters` (object): Optional Knack filter object, JSON-stringified into the `filters` query param. Shape: { "match": "and"|"or", "rules": [{ "field": "field_1", "operator": "is", "value": "Acme" }] }. Common operators:…
- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".
- `page` (integer): Page number (default 1).
- `rows_per_page` (integer): Records per page (1-1000, default 25).
- `sort_field` (string): Field key to sort by, e.g. "field_25".
- `sort_order` (string): Sort direction: "asc" or "desc".

### `knack_get_record` (~90 tokens)

Get a record

Fetch a single record by id. Knack API: GET /objects/{object_key}/records/{record_id}. Returns the bare record (with both field_x and field_x_raw values).

Input parameters:

- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".
- `recordId` (string, required): The record id (a hex string returned by Knack).

### `knack_request` (~102 tokens)

Raw Knack API GET

Power-user escape hatch: GET any Knack API path not wrapped by a dedicated tool (e.g. view-based reads). READ-ONLY — only GET is allowed. Path starts with a slash (e.g. "/objects/object_1/records"). Knack API: GET {path}.

Input parameters:

- `path` (string, required): API path starting with a slash, e.g. "/objects/object_1/records".
- `query` (object): Optional query params object.

### `knack_create_record` (~165 tokens)

Create a record

MUTATES Knack data — creates a new record in an object. Knack API: POST /objects/{object_key}/records. Provide `fields` as an object keyed by field key, e.g. { "field_1": "Acme", "field_2": 100 }. Auto Increment / Formula / Equation fields are read-only and cannot be set. Returns the created record.

Input parameters:

- `fields` (object, required): The record's field values keyed by field key, e.g. { "field_1": "Acme", "field_2": 100 }. Auto Increment / Formula / Equation fields are read-only and cannot be written.
- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".

### `knack_update_record` (~179 tokens)

Update a record

MUTATES Knack data — updates a record. Knack API: PUT /objects/{object_key}/records/{record_id}. Provide `fields` as an object keyed by field key; only the included fields change, e.g. { "field_1": "Acme Inc" }. Auto Increment / Formula / Equation fields are read-only. Returns the updated record.

Input parameters:

- `fields` (object, required): The record's field values keyed by field key, e.g. { "field_1": "Acme", "field_2": 100 }. Auto Increment / Formula / Equation fields are read-only and cannot be written.
- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".
- `recordId` (string, required): The record id (a hex string returned by Knack).

### `knack_delete_record` (~95 tokens)

Delete a record

MUTATES Knack data — permanently DELETES a record (irreversible). Knack API: DELETE /objects/{object_key}/records/{record_id}. Knack returns { delete: true } on success.

Input parameters:

- `objectKey` (string, required): The Knack object (table) key, e.g. "object_1".
- `recordId` (string, required): The record id (a hex string returned by Knack).

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-knack/knack#diagnostics

## Score history

- 2026-08-03: 28
- 2026-08-02: 72
- 2026-08-01: 18
- 2026-07-31: 71
- 2026-07-30: 68
- 2026-07-29: 70
- 2026-07-28: 69
- 2026-07-27: 68
- 2026-07-26: 12

## Links

- Remote endpoint: https://knack.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-knack/knack/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-knack/knack/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-knack/knack
