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

Read and write knowledge-base articles, categories, snippets, glossary, readers, and search data.

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

## Components

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

## Channel facts

- Endpoint: `https://knowledgeowl.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**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint returned HTTP 429.
- **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-knowledgeowl https://knowledgeowl.usefulapi.io/mcp
```

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-knowledgeowl": {
      "type": "http",
      "url": "https://knowledgeowl.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 18, −53)

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

### 2026-08-02 (score 71, +53)

- [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, −52)

- [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 70, +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 67, −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 69, +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 68, 0)

- [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 (24)

### `list_articles` (~109 tokens)

List articles

List knowledge-base articles. KnowledgeOwl API: GET /article.json. Optionally filter by project_id (the knowledge base). Returns the list envelope { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).
- `project_id` (string): Filter to a single knowledge base (project) id.

### `get_article` (~54 tokens)

Get an article

Fetch a single article by id. KnowledgeOwl API: GET /article/{id}.json. Returns { valid, data:{...} }.

Input parameters:

- `id` (string, required): The article id (a Mongo-style hex string).

### `list_categories` (~107 tokens)

List categories

List categories (the article tree/table of contents). KnowledgeOwl API: GET /category.json. Optionally filter by project_id. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).
- `project_id` (string): Filter to a single knowledge base (project) id.

### `get_category` (~44 tokens)

Get a category

Fetch a single category by id. KnowledgeOwl API: GET /category/{id}.json.

Input parameters:

- `id` (string, required): The category id (a Mongo-style hex string).

### `list_tags` (~76 tokens)

List tags

List article tags. KnowledgeOwl API: GET /tag.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_snippets` (~78 tokens)

List snippets

List reusable content snippets. KnowledgeOwl API: GET /snippet.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_glossary_terms` (~84 tokens)

List glossary terms

List glossary terms and definitions. KnowledgeOwl API: GET /glossaryterm.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_comments` (~80 tokens)

List comments

List reader comments / feedback on articles. KnowledgeOwl API: GET /comment.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_readers` (~84 tokens)

List readers

List readers (knowledge-base end users / audience accounts). KnowledgeOwl API: GET /reader.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `get_reader` (~44 tokens)

Get a reader

Fetch a single reader by id. KnowledgeOwl API: GET /reader/{id}.json.

Input parameters:

- `id` (string, required): The reader id (a Mongo-style hex string).

### `list_files` (~83 tokens)

List files

List files in the file library (images/attachments). KnowledgeOwl API: GET /file.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_article_versions` (~78 tokens)

List article versions

List article versions. KnowledgeOwl API: GET /articleversion.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_article_revisions` (~87 tokens)

List article revisions

List article revision history (read-only audit trail). KnowledgeOwl API: GET /articlerevision.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_suggestions` (~86 tokens)

List search suggestions

List search suggestions / reader search analytics (what readers searched for). KnowledgeOwl API: GET /suggest.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_synonyms` (~85 tokens)

List synonyms

List search synonyms (terms treated as equivalent by search). KnowledgeOwl API: GET /synonym.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_webhooks` (~79 tokens)

List webhooks

List configured webhooks. KnowledgeOwl API: GET /webhook.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `list_authors` (~87 tokens)

List authors

List authors/agents (the team members who write and manage content). KnowledgeOwl API: GET /agent.json. Returns { valid, page_stats, data:[...] }.

Input parameters:

- `_page` (integer): KnowledgeOwl pagination page number, 1-based.
- `params` (object): Additional documented query-string filters/operators to send verbatim (merged with the typed params above).

### `knowledgeowl_request` (~107 tokens)

Raw read request

Power-user escape hatch: GET any KnowledgeOwl API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the base, starting with a slash, INCLUDING any query string, e.g. "/article.json?_page=2" or "/category/abc123.json". Returns the parsed JSON.

Input parameters:

- `path` (string, required): Full API path after the base, starting with "/", e.g. "/article.json?_page=2".

### `create_article` (~215 tokens)

Create an article

MUTATES KnowledgeOwl data: creates a new article. KnowledgeOwl API: POST /article.json (JSON). Required by the API: project_id, name, status, url_hash, visibility, and current_version (a nested object `{ <lang>: { title, body, ... } }` — pass it via the `fields` passthrough). Returns the created article.

Input parameters:

- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `name` (string, required): The article name/title (required).
- `project_id` (string, required): The knowledge base (project) id this article belongs to (required).
- `status` (string): Publishing status, e.g. "published", "draft", "review".
- `url_hash` (string): The article URL slug (e.g. "getting-started").
- `visibility` (string): Visibility, e.g. "public" or "private".

### `update_article` (~165 tokens)

Update an article

MUTATES KnowledgeOwl data: updates an existing article. KnowledgeOwl API: PUT /article/{id}.json (JSON — only included fields change). Use the `fields` passthrough for current_version (title/body) and any other documented field. The path id is never sent in the body.

Input parameters:

- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `id` (string, required): The article id to update (path only; required).
- `name` (string): New article name/title.
- `status` (string): New publishing status.
- `url_hash` (string): New URL slug.
- `visibility` (string): New visibility.

### `create_category` (~208 tokens)

Create a category

MUTATES KnowledgeOwl data: creates a new category (a node in the article tree). KnowledgeOwl API: POST /category.json (JSON). Required by the API: type, project_id, url_hash, name, visibility, status. Pass extra documented fields via `fields`. Returns the created category.

Input parameters:

- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `name` (string, required): The category name (required).
- `project_id` (string, required): The knowledge base (project) id this category belongs to (required).
- `status` (string): Publishing status, e.g. "active".
- `type` (string): The category type (e.g. "blank", "topic", "custom-content").
- `url_hash` (string): The category URL slug.
- `visibility` (string): Visibility, e.g. "public" or "private".

### `update_category` (~157 tokens)

Update a category

MUTATES KnowledgeOwl data: updates an existing category. KnowledgeOwl API: PUT /category/{id}.json (JSON — only included fields change). Use the `fields` passthrough for any other documented field. The path id is never sent in the body.

Input parameters:

- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `id` (string, required): The category id to update (path only; required).
- `name` (string): New category name.
- `status` (string): New publishing status.
- `url_hash` (string): New URL slug.
- `visibility` (string): New visibility.

### `create_snippet` (~130 tokens)

Create a snippet

MUTATES KnowledgeOwl data: creates a reusable content snippet. KnowledgeOwl API: POST /snippet.json (JSON). Pass the snippet body/content and any other documented field via `fields` (e.g. snippet_text/body). Returns the created snippet.

Input parameters:

- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `name` (string, required): The snippet name (required).
- `project_id` (string, required): The knowledge base (project) id this snippet belongs to (required).

### `create_glossary_term` (~135 tokens)

Create a glossary term

MUTATES KnowledgeOwl data: creates a glossary term and definition. KnowledgeOwl API: POST /glossaryterm.json (JSON). Pass extra documented fields via `fields`. Returns the created glossary term.

Input parameters:

- `definition` (string): The term's definition.
- `fields` (object): Additional documented KnowledgeOwl fields to send in the JSON write body (e.g. current_version, body) — merged OVER the typed fields above.
- `project_id` (string, required): The knowledge base (project) id this glossary term belongs to (required).
- `term` (string, required): The glossary term (required).

## Diagnostics

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

## Score history

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

## Links

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