io.github.lsmman/fetchive
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FETCHIVE_DB_PATH | No | Where your archive index and transcript cache live | ~/.fetchive/fetchive.db |
| FETCHIVE_LANGUAGES | No | Preferred caption languages, best first | ko,en |
| FETCHIVE_TRANSPORT | No | http for a hosted deployment | stdio |
| FETCHIVE_ENABLE_STT | No | Set to false to never fall back to speech-to-text | true |
| FETCHIVE_BATCH_WORKERS | No | Concurrent extractions. YouTube dislikes more | 3 |
| FETCHIVE_WHISPER_MODEL | No | Larger is slower and more accurate | base |
| WEBSHARE_PROXY_PASSWORD | No | Enables the proxy step. Without these it is skipped | |
| WEBSHARE_PROXY_USERNAME | No | Enables the proxy step. Without these it is skipped | |
| FETCHIVE_MAX_STT_DURATION | No | Refuse to transcribe anything longer, in seconds | 3600 |
| FETCHIVE_QUOTE_WORD_LIMIT | No | Longest verbatim quote allowed out of the server | 15 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| archive_batchA | Parse every link out of pasted text (a KakaoTalk or Slack export, a bare list, anything), skip what is already archived, extract YouTube transcripts, and prepare a page payload for each one. Returns a batch ID immediately; extraction runs in the background. Poll get_batch_status. |
| get_batch_statusA | Progress for a running or finished batch. When state is 'completed', |
| ingest_linksA | Pull every URL out of a text blob and classify it by platform, without archiving anything. Useful for showing the user what was found first. |
| extract_youtube_scriptA | Get the transcript for one YouTube video, trying caption APIs, yt-dlp, and local speech-to-text in turn. Reports which method worked and why the others did not. Cached, so asking twice is free. |
| summarise_pendingA | Write summaries and tags for items a batch has extracted but not yet summarised, using your own model. Call this after archive_batch reports items in |
| add_summaryA | Record a summary and tags for one extracted item. Use this after summarise_pending hands you a prompt to write yourself. The summary is checked for copying the source before it is kept, and the item then appears in ready_to_save. |
| search_archiveA | Full-text search across everything archived — transcripts and article bodies, not just titles. Use this to answer questions about what the user has already saved, or to find the source of a half-remembered idea. Returns matching excerpts with the workspace page link where one was recorded. |
| check_duplicateA | Has this URL already been archived? Matches the canonical form of the URL, and if a title is supplied also compares it against archived titles to catch re-uploads and mirrors. |
| record_archivedA | Tell Fetchive that a URL has been saved to the workspace, and where. Call this after every successful save — it is the only way duplicate detection learns what exists. |
| forget_archivedA | Remove a URL from the archive index, so it counts as new again. Use when the page it points to was deleted from the workspace. Does not touch the workspace itself. |
| format_for_notionA | Shape one link into a page payload: properties, the workspace's existing tag vocabulary, and instructions for classifying against it. Quotes are capped and transcripts are never included verbatim. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools have clearly distinct purposes, but archive_batch and ingest_links both parse links from text, which could cause misselection. summarise_pending and add_summary are also related, though descriptions clarify their different roles.
All tool names follow a consistent verb_noun pattern in snake_case (archive_batch, get_batch_status, ingest_links, etc.). The naming is predictable and easy to reason about.
11 tools is well within the ideal range for a focused archiving workflow. Each tool supports a distinct step in the pipeline: extraction, transcription, summarization, search, and duplicate management.
The core workflow is well-covered: link extraction, YouTube transcript retrieval, summary generation, archiving, search, and duplicate detection. Minor gaps exist, such as no direct update or fetch-by-ID for individual archived items, but the server's purpose is well-served.