Knowledge Base

The vendor's manual, next to your docs.

Collections hold reference articles from outside sources, kept apart from client documentation and never belonging to a company. A help center read by its own structure, a website crawled by sitemap, an export brought in as a zip. Searched in one place, read in one place, and offered to the assistants you allow.

Bringing documentation in

Reads as its source did.

Every converter and every stored body is held to one standard: an imported article must read as the original. Numbered procedures are the hard case, and they are the case that matters to a tech on the phone.

  • →Numbered steps keep their numbers and keep counting past a screenshot, a note, or a caption.
  • →A source site's own menus, breadcrumbs, print and share buttons are dropped. Trove KB builds its own outline from the headings.
  • →A section title the source numbers is a heading, not an empty list item.
  • →Imports upsert on a stable id, so a newer export updates what changed and nothing else.
  • →An embedded video plays in the article. Pictures are kept by their address.
Sources
Help center

A vendor's help site read by its own structure. Categories come from the breadcrumb or section.

Crawl

A website by sitemap or from a starting page, on a schedule, so the manual updates when the vendor's does.

Zip / folder

An export of another system's articles, a wiki dump, a folder of Markdown, with images/ and files/ coming along as attachments.

PDF / Word

Manuals and documents linked from articles are kept and offered; their text is searchable.

Written here

By administrators, or by anyone granted a collection by name. Markdown, with the same tidy applied.

Over MCP

An assistant working in a code repository keeps that product's own documentation current through upsert_kb_article.

A knowledge base article with numbered steps, a screenshot between two steps, and the outline on the right
A vendor procedure in the knowledge base. Numbered steps stay numbered, and the outline on the right is built from the headings.
Runbooks

Steps with stable ids.

A runbook is an article whose lists are a procedure. Every step carries an id written into the body: write it yourself as {#reseat-ram}, or let Trove KB mint one on first save. A ticketing system that links the runbook keeps per-ticket progress by step on its own side. Trove KB stores none of that progress, so the runbook stays a document and the ticket stays a ticket.

Whatever is nested under a step comes along as its note. A @canned:[Name] token names a canned response for the system on the other end.

A runbook article: five numbered steps with checkboxes, a note under the first, a Wireshark filter under the third, and a reply template on the last
A runbook in the app. Checkboxes are for working through it; nothing is saved here, and a ticketing system keeps its own progress by step id.
# GET /api/v1/kb/articles/:id (kind: runbook)
"steps": [
  { "id": "confirm-profile", "text": "Confirm the VPN profile" },
  { "id": "capture-trace", "text": "Capture a TCP trace",
    "note": "Wireshark filter: tcp.port == 443" },
  { "id": "escalate", "text": "Escalate to the vendor",
    "canned": "Vendor escalation" }
]
Public site

Publish the collections you choose.

The end-user how-tos, the printer setup guide, the password reset walkthrough: on a hostname of its own, with search, favorites, and votes, and with everything else kept off it.

Where

A hostname of its own, such as kb.yourdomain.com, with a proxy that passes /pub/kb and nothing else. Sign-in, admin, and the API are not reachable through it.

What

Each collection has "Show on the public site", off by default. Any article can be held back from its own page.

Keyword rules

Phrases or regular expressions by title, category, or file type keep internal-only material off the site, and apply to what arrives later.

Who

Anyone who can reach it, or only visitors from listed addresses. Pair it with a Cloudflare Access Bypass policy for the same ranges.

Readers

Favorites and "was this helpful" votes. Behind Cloudflare Access, Trove KB knows the reader by a hash from the Access token, with no account of its own.

Customers

Give a company its sign-in email domains and a visitor Access names from one of them is placed with that company: they see the collections for everyone plus the ones kept to theirs, with their company's logo in the corner. Nothing of the visitor is stored.

Your name

The public site can carry your own name on the credit, Powered by Trove KB | Your MSP, in front of your customers. Admin → Portal is the setup page: what is set, whether the address answers, whether Access has verified a token, which collections are on the site and for whom, with the Cloudflare steps inline.

The knowledge base index listing collections with article counts and categories
Collections, each with its categories and counts.
Admin → Portal, the public knowledge base's setup page with its checklist and the public-site form
Admin → Portal. The checklist says what is left to do before the site is ready.

Grants by name

A person or an API key is granted a collection to read it, and with write to change it, whatever companies it is kept to. Administrators need no grant. Every change is in the audit log.

Over the API

List, search, read in full with steps, upsert and archive under an external id, and subscribe to kb.article.upserted and kb.article.archived webhooks. Integrations →

Over MCP

search_kb returns the passage that matched; get_kb_article reads in chunks. A key granted write on a collection also gets upsert and archive, and only there.

Ready to document something?

One compose file, no required services beyond Postgres. Read the docs, or take the next feature for a spin.