# Highlyt (remote · mcp.highlyt.app)

Highlight anything you read. Then ask your AI about it: search, read and edit your highlights.

- Trust score: 80/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.highlyt.app`: 80/100 (this document), [markdown](https://verifymcp.io/servers/app-highlyt-highlyt/mcp.md), [page](https://verifymcp.io/servers/app-highlyt-highlyt/mcp)

## Channel facts

- Endpoint: `https://mcp.highlyt.app/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.1`

## 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-11-05.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2479 tokens (~88/item across 28 items; 28 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Highlyt MCP server?

Highlyt is a hosted endpoint at https://mcp.highlyt.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http app-highlyt-highlyt 'https://mcp.highlyt.app/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "app-highlyt-highlyt": {
      "url": "https://mcp.highlyt.app/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "app-highlyt-highlyt": {
      "type": "http",
      "url": "https://mcp.highlyt.app/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.app-highlyt-highlyt]
url = "https://mcp.highlyt.app/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add app-highlyt-highlyt --url 'https://mcp.highlyt.app/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-highlyt-highlyt:
    url: "https://mcp.highlyt.app/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "app-highlyt-highlyt": {
      "Transport": "http",
      "Url": "https://mcp.highlyt.app/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add app-highlyt-highlyt -t streamable-http -u 'https://mcp.highlyt.app/mcp'
```

### Other

```json
{
  "mcpServers": {
    "app-highlyt-highlyt": {
      "type": "http",
      "url": "https://mcp.highlyt.app/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-11-05 (score 80, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-04 (score 80, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-03 (score 79, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-02 (score 79, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-01 (score 78, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-31 (score 78, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-30 (score 77, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-29 (score 77, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

## MCP tools (28)

### `highlyt_list_documents` (~52 tokens)

List Documents

List PDF documents in your Highlyt library.

Returns documents sorted by last update time with pagination.
Filter by shelf_id to see documents in a specific collection.

Input parameters:

- `params` (object, required): Parameters for listing documents.

### `highlyt_get_document` (~43 tokens)

Get Document

Get detailed information about a document.

Returns full metadata including book context, reading progress,
and organizational information.

Input parameters:

- `params` (object, required): Parameters for getting a document.

### `highlyt_get_research_brief` (~71 tokens)

Get Research Brief

Read a researcher-authored brief with verified, reviewed source receipts.

Use this as context only. Cite only the included receipts. The tool does
not reveal a draft reference or proposed evidence as support for a claim.

Input parameters:

- `params` (object, required): Read a source-linked research brief by UUID.

### `highlyt_export_research_brief_markdown` (~42 tokens)

Export Research Brief Markdown

Export a portable researcher-authored Markdown brief with safe receipts.

Input parameters:

- `params` (object, required): Read a source-linked research brief by UUID.

### `highlyt_list_highlights` (~80 tokens)

List Highlights

List highlights in a document with pagination.

Returns up to 'limit' highlights (default 20, max 50) starting from 'offset'.
Use has_more and next_offset to paginate through all highlights.
Each highlight includes the color meaning (e.g., "Key concepts", "Questions").

Input parameters:

- `params` (object, required): Parameters for listing highlights.

### `highlyt_create_highlight` (~106 tokens)

Create Highlight

Create a new highlight in a document.

Uses react-pdf-highlighter-extended format:
\- position: ScaledPosition with boundingRect, rects, pageNumber
\- content: {text: "..."} or {image: "..."}
\- highlight_type: "text" or "area"
\- comment: User's comment
Colors should be hex codes (e.g., #FFEB3B for yellow).

Input parameters:

- `params` (object, required): Parameters for creating a highlight.

### `highlyt_update_highlight` (~38 tokens)

Update Highlight

Update a highlight's color or comment.

Only provided fields will be updated.

Input parameters:

- `params` (object, required): Parameters for updating a highlight.

### `highlyt_delete_highlight` (~34 tokens)

Delete Highlight

Delete a highlight permanently.

This action cannot be undone.

Input parameters:

- `params` (object, required): Parameters for deleting a highlight.

### `highlyt_list_highlight_links` (~99 tokens)

List Highlight Links

List highlight links (insight threads) in a document with pagination.

Returns up to 'limit' links (default 50, max 100) starting from 'offset'.
Use has_more and next_offset to paginate through all links.
Each link has a type: 'related', 'supports', 'contradicts', 'expands', or 'questions'.

Input parameters:

- `params` (object, required): Parameters for listing highlight links in a document.

### `highlyt_get_highlight_links` (~70 tokens)

Get Highlight Links

Get all links connected to a specific highlight.

Returns parent links (where this highlight is referenced by others)
and child links (where this highlight references others).
Useful for exploring how a specific idea connects to other highlights.

Input parameters:

- `params` (object, required): Parameters for getting links for a specific highlight.

### `highlyt_create_highlight_link` (~279 tokens)

Create Highlight Link

Create a link between two highlights to form an insight thread.
Supports both same-document and cross-document linking.

IMPORTANT — parent/child semantics:
\- parent_highlight_id = the highlight you are viewing (the "context" highlight)
\- child_highlight_id = the highlight you are linking TO (the "related" highlight)
\- link_type describes what the CHILD does to the PARENT:
  \- supports: "child supports parent" (child provides evidence for parent)
  \- contradicts: "child contradicts parent" (child challenges parent)
  \- expands: "child expands parent" (child elaborates on parent)
  \- questions: "child questions parent" (child raises questions about parent)
  \- related: general connection

For cross-document links, set target_document_id to the document containing the
child highlight. If omitted, both highlights are assumed to be in source_document_id.

Example: If highlight A says "GDP grew 5%" and you want to link highlight B
"Exports increased 12%" as supporting evidence, then:
  parent_highlight_id = A (the claim), child_highlight_id = B (the evidence),
  link_type = "supports" (B supports A).

Input parameters:

- `params` (object, required): Parameters for creating a link between two highlights (same-doc or cross-doc).

### `highlyt_update_highlight_link` (~42 tokens)

Update Highlight Link

Update a highlight link's relationship type or note.

Only provided fields will be updated.

Input parameters:

- `params` (object, required): Parameters for updating a highlight link.

### `highlyt_delete_highlight_link` (~44 tokens)

Delete Highlight Link

Delete a link between two highlights.

This removes the connection but does not delete the highlights themselves.

Input parameters:

- `params` (object, required): Parameters for deleting a highlight link.

### `highlyt_get_cross_document_links` (~66 tokens)

Get Cross-Document Links

List all cross-document highlight links for the current user.

Returns links where source_document_id != target_document_id,
with metadata about both source and target documents.
Useful for exploring connections across your entire library.

Input parameters:

- `params` (object, required): Parameters for listing cross-document highlight links.

### `highlyt_list_cluster_summaries` (~207 tokens)

List Cluster Summaries

List all cluster summaries for a document's knowledge graph.

Returns each summary with its highlight_ids array — the highlights that were
in the cluster when the summary was last generated.

DETECTING STALE SUMMARIES:
To check if summaries need updating after adding new links:
1\. Call highlyt_list_highlight_links to get all current links
2\. Compute connected components (group highlights by connectivity)
3\. Call this tool to get stored summaries
4\. For each summary, check if its highlight_ids is a SUBSET of a current component
   \- If highlight_ids == component_ids → summary is current
   \- If highlight_ids ⊂ component_ids → summary is STALE (cluster grew)
   \- Set difference (component_ids - highlight_ids) = newly added highlights
5\. Regenerate stale summaries with highlyt_upsert_cluster_summary,
   passing the FULL current component highlight_ids

Input parameters:

- `params` (object, required): Parameters for listing cluster summaries.

### `highlyt_upsert_cluster_summary` (~232 tokens)

Upsert Cluster Summary

Create or update a summary for a connected component cluster in the knowledge graph.

A cluster is a group of linked highlights that form a connected component.

IMPORTANT:
\- highlight_ids must be the COMPLETE, CURRENT set of highlight UUIDs in the cluster
  (not just newly added ones). The array is sorted internally for matching.
\- If a summary already exists for this document_id + highlight_ids combination,
  it will be UPDATED (upsert behavior).
\- When updating a stale summary (cluster grew due to new links), pass the FULL
  updated highlight_ids array so the stored record reflects the current cluster.
\- The summary should describe thematic connections across ALL highlights in the cluster,
  including any newly added ones.

Typical workflow:
1\. Read highlights with highlyt_list_highlights
2\. Read links with highlyt_list_highlight_links
3\. Compute connected components from links
4\. For each component, generate a summary covering all highlights
5\. Call this tool with the component's highlight_ids and generated summary

Input parameters:

- `params` (object, required): Parameters for creating or updating a cluster summary.

### `highlyt_delete_cluster_summary` (~48 tokens)

Delete Cluster Summary

Delete a cluster summary from the knowledge graph.

This removes the summary record but does not affect the highlights or their links.

Input parameters:

- `params` (object, required): Parameters for deleting a cluster summary.

### `highlyt_get_page_text` (~76 tokens)

Get Page Text

Retrieve the text content of specific pages from a document.

Use this to read document content before creating highlights.
Returns up to 5 pages per request. If the requested range exceeds 5 pages,
use has_more and next_page_start to paginate through remaining pages.

Input parameters:

- `params` (object, required): Parameters for retrieving page text content.

### `highlyt_get_document_images` (~173 tokens)

Get Document Images

Retrieve images (charts, graphs, figures, diagrams, photos) and their surrounding
text context from an EPUB or web clip document.

WHEN TO USE THIS TOOL:
\- User asks about a chart, graph, figure, diagram, or image in a document
\- User wants visual data or illustrations from a book/article
\- User references "Figure X.X" or any visual element

Returns each image's base64 data URI, alt text, dimensions, chapter location,
and the paragraph text before/after it so you can describe what the image shows.
Use the optional query parameter to filter images by surrounding text context.

For PDFs, images are embedded in the rendered pages — use highlyt_get_page_text instead.

Input parameters:

- `params` (object, required): Parameters for retrieving images and their surrounding context from EPUB/web documents.

### `highlyt_create_text_highlight` (~77 tokens)

Create Text Highlight

Create a text-based highlight on a specific page.

Use this after reading page content with highlyt_get_page_text.
The highlight will appear in the sidebar and be searchable/exportable.
Copy the exact text from the page content for the 'text' field.

Input parameters:

- `params` (object, required): Parameters for creating a text-based highlight.

### `highlyt_bulk_create_highlights` (~127 tokens)

Bulk Create Highlights

Create multiple text-based highlights in one batch (max 10 per request).

Efficient for chapter analysis — create highlights in batches of up to 10.
If you have more than 10, split into multiple calls.

Highlight format: {page_number: int, text: str, comment?: str, color?: str}
Colors: amber (#E5A84B) core ideas, sage (#6BBF8A) action items, sky (#5BA3D9) questions.

Input parameters:

- `params` (object, required): Parameters for creating multiple text-based highlights at once.

### `highlyt_export_highlights` (~82 tokens)

Export Highlights

Export document highlights for AI context with pagination.

Returns up to 'limit' highlights (default 20, max 50) starting from 'offset'.
Use has_more and next_offset to paginate through all highlights.
Includes document metadata, color meanings, and insight threads
relevant to the returned highlights.

Input parameters:

- `params` (object, required): Parameters for exporting highlights.

### `highlyt_search_highlights` (~57 tokens)

Search Highlights

Search highlights across your library.

Finds highlights containing the query text.
Each result includes the color meaning based on the document's definitions.
Optionally limit to a specific document.

Input parameters:

- `params` (object, required): Parameters for searching highlights.

### `highlyt_search` (~165 tokens)

Full-Text Library Search

Full-text search across your entire library — documents, highlights, and page content.

This searches the actual text content of your PDFs (every page), highlight text/comments,
and document metadata (title, author, keywords). Results are ranked by relevance with
text snippets showing where matches were found.

Supports natural language queries and websearch syntax:
\- Simple: "machine learning"
\- Exact phrase: '"neural network"'
\- OR: "neural OR deep"
\- Exclude: "learning -supervised"

Each result includes match_type ('content', 'highlight', or 'metadata'),
the page number where the match was found, and a snippet with **bold** markers
around matching terms.

Input parameters:

- `params` (object, required): Parameters for full-text search across all document content.

### `highlyt_list_research_projects` (~25 tokens)

List Research Projects

List the caller's research projects for a bounded AI research task.

### `highlyt_list_references` (~56 tokens)

List Research References

List reviewed references, optionally in one project.

Drafts are excluded unless include_drafts is explicitly true. Never cite a
draft as a verified source.

Input parameters:

- `params` (object, required): Parameters for listing or exporting research references.

### `highlyt_get_reference` (~31 tokens)

Get Research Reference

Get one reviewed research reference. Never cite a draft without explicit permission.

Input parameters:

- `params` (object, required)

### `highlyt_export_references` (~57 tokens)

Export Research References

Export reviewed references as BibTeX, RIS, or canonical CSL-JSON.

This always excludes drafts. Never cite a draft as a verified source.

Input parameters:

- `params` (object, required): Parameters for a portable, reviewed-only reference export.

## Diagnostics

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

## Score history

- 2026-11-05: 80
- 2026-11-04: 80
- 2026-11-03: 79
- 2026-11-02: 79
- 2026-11-01: 78
- 2026-10-31: 78
- 2026-10-30: 77
- 2026-10-29: 77
- 2026-10-28: 77
- 2026-10-27: 76
- 2026-10-26: 76
- 2026-10-25: 36
- 2026-10-24: 36
- 2026-10-23: 36
- 2026-10-22: 36
- 2026-10-21: 36
- 2026-10-20: 36
- 2026-10-19: 36
- 2026-10-18: 36
- 2026-10-17: 36
- 2026-10-16: 36

## Common questions

### What is the Highlyt MCP server?

Highlyt is an MCP server listed in the public MCP registry as app.highlyt/highlyt. Highlight anything you read. Then ask your AI about it: search, read and edit your highlights. This page covers its hosted endpoint (https://mcp.highlyt.app/mcp).

### Is the Highlyt MCP server safe to use?

Highlyt scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Highlyt MCP server expose?

Highlyt exposes 28 tools: highlyt_list_documents, highlyt_get_document, highlyt_get_research_brief, highlyt_export_research_brief_markdown, highlyt_list_highlights, and 23 more. Their descriptions and schemas cost roughly 2,479 tokens of context every time the server is loaded.

### Does the Highlyt MCP server require authentication?

Yes. Highlyt asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Highlyt MCP server still maintained?

Highlyt is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.highlyt.app/mcp
- Website: https://highlyt.app/features/mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/app-highlyt-highlyt/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-highlyt-highlyt/mcp.json
- HTML version of this page: https://verifymcp.io/servers/app-highlyt-highlyt/mcp
