TDZ C64 Knowledge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| USE_OCR | No | Enable OCR for scanned PDFs. | 1 |
| USE_BM25 | No | Enable BM25 fallback. | 1 |
| USE_FTS5 | No | Enable FTS5 search (recommended). | 0 |
| TDZ_DATA_DIR | No | Database directory where knowledge data is stored. | ~/.tdz-c64-knowledge |
| SEMANTIC_MODEL | No | Sentence-transformers model for semantic search. | all-MiniLM-L6-v2 |
| FUZZY_THRESHOLD | No | Fuzzy similarity threshold (0-100). | 80 |
| SEARCH_CACHE_TTL | No | Search cache time-to-live in seconds. | 300 |
| USE_FUZZY_SEARCH | No | Enable fuzzy search. | 1 |
| ALLOWED_DOCS_DIRS | No | Document directory whitelist for restricted environments. | |
| SEARCH_CACHE_SIZE | No | Maximum number of cached search results. | 100 |
| USE_SEMANTIC_SEARCH | No | Enable semantic search. | 0 |
| USE_QUERY_PREPROCESSING | No | Enable NLTK preprocessing. | 1 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_docsB | Search the C64 knowledge base for information. Use this to find documentation about memory maps, opcodes, BASIC commands, SID, VIC-II, CIA chips, etc. |
| translate_queryA | Translate natural language query to structured search parameters. Parses queries like 'find sprite information' or 'how does the SID chip work' into search terms, entity mentions, and facet filters. Returns recommended search mode (keyword/semantic/hybrid) and confidence score. |
| get_chunkA | Get the full content of a specific document chunk. Use after search_docs to read more context. |
| get_documentB | Get the full content of a document by ID. |
| list_docsA | List all documents in the C64 knowledge base. |
| add_documentC | Add a PDF or text file to the knowledge base. |
| scrape_urlA | Scrape a documentation website and add all pages to the knowledge base. Supports recursive scraping of entire sites by following links. Great for ingesting online documentation like http://www.sidmusic.org/sid/. Converts HTML to searchable markdown. |
| rescrape_documentA | Re-scrape a URL-sourced document to check for updates. Removes the old version and re-scrapes the original URL with the same configuration. |
| check_url_updatesB | Check all URL-sourced documents for updates by comparing Last-Modified headers. Detects when source URLs have been modified since last scrape. |
| remove_documentB | Remove a document from the knowledge base. |
| semantic_searchA | Search the knowledge base using semantic/conceptual similarity (requires USE_SEMANTIC_SEARCH=1). Finds documents based on meaning, not just keywords. Example: searching for 'movable objects' can find 'sprites'. |
| find_similarA | Find documents similar to a given document. Uses semantic embeddings if available, falls back to TF-IDF. Great for discovering related content. |
| hybrid_searchA | Perform hybrid search combining FTS5 keyword search and semantic search. Best of both worlds - finds exact keyword matches AND conceptually related content. Returns results ranked by weighted combination of both scores. |
| fuzzy_searchB | Search with typo tolerance using fuzzy string matching. Handles misspellings and variations like 'VIC2' → 'VIC-II', 'asembly' → 'assembly', '6052' → '6502'. Returns exact matches first, then fuzzy matches if needed. |
| search_within_resultsA | Refine previous search results with an additional query. Useful for progressive search refinement: first search broadly (e.g., 'VIC-II'), then refine (e.g., 'sprite collision'). Returns filtered and re-ranked results from previous search set. |
| suggest_tagsB | Get tag suggestions for a document based on content analysis. Detects hardware components (SID, VIC-II, CIA), programming topics (assembly, BASIC, graphics), document types (reference, tutorial), and difficulty levels. Useful for organizing documents. |
| get_tags_by_categoryA | Browse all tags organized by category (hardware, programming, document-type, difficulty, custom). Shows tag usage count and sample documents. Useful for discovering and organizing content. |
| answer_questionA | Answer questions about C64 documentation using RAG (Retrieval-Augmented Generation). Synthesizes information from multiple sources with citations. Returns answer text with source references and confidence score. |
| kb_statsC | Get statistics about the knowledge base. |
| health_checkA | Perform health check on the knowledge base system. Returns status, metrics, feature availability, and any issues detected. |
| detect_anomaliesA | Detect anomalies in URL monitoring history. Analyzes patterns to identify unusual update frequencies, performance degradation, or unexpected content changes. Returns anomalies with severity scores (normal/minor/moderate/critical) based on learned baselines. |
| check_updatesA | Check all indexed documents for updates. Detects files that have been modified since indexing and optionally re-indexes them automatically. |
| add_documents_bulkA | Add multiple documents from a directory at once. Supports glob patterns for file matching. |
| remove_documents_bulkA | Remove multiple documents by IDs or tags. Useful for cleaning up the knowledge base. |
| update_tags_bulkA | Update tags for multiple documents in bulk. Add, remove, or replace tags for documents selected by ID or existing tags. Useful for reorganizing and categorizing the knowledge base. |
| export_documents_bulkA | Export metadata for multiple documents in JSON, CSV, or Markdown format. Useful for creating reports, backups, or sharing document lists. |
| search_tablesA | Search for tables in PDF documents. Tables contain structured data like memory maps, register definitions, and command references. Returns tables in markdown format with page numbers. |
| search_codeA | Search for code blocks in documents (BASIC, Assembly, Hex dumps). Finds programming examples and code snippets. Returns code with type (basic/assembly/hex), line count, and page numbers. |
| faceted_searchB | Search with faceted filtering. Filter results by hardware components (SID, VIC-II, CIA, etc.), assembly instructions (LDA, STA, etc.), or memory registers ($D000, etc.). Great for narrowing down search results to specific technical domains. |
| search_analyticsB | Get search analytics and insights. Shows popular queries, failed searches, search mode usage, and performance metrics. |
| find_by_referenceA | Find documents by cross-reference. Search for documents containing specific memory addresses ($D020), register offsets (VIC+0, SID+4), or page references (page 156). Great for tracking how specific registers or memory locations are documented. |
| suggest_queriesA | Get autocomplete suggestions for partial queries. Suggests technical terms, memory addresses, instructions, and concepts based on indexed content. Great for discovering searchable content and learning proper terminology. |
| export_resultsA | Export search results to various formats (markdown, json, html). Use this to save search results for offline use, sharing, or creating custom reference guides. |
| create_backupA | Create a backup of the knowledge base. Backs up database and embeddings to a zip file. Use this regularly for data safety and before making major changes. |
| restore_backupA | Restore knowledge base from a backup. WARNING: This will replace the current database. A safety backup is created automatically before restoration. |
| auto_tag_documentA | Automatically generate tags for a document using AI analysis. Analyzes document content and suggests relevant tags across categories: hardware (sid, vic-ii), programming (assembly, basic), document type (tutorial, reference), and difficulty level (beginner, advanced). Requires LLM configuration (set LLM_PROVIDER and API key). |
| auto_tag_allA | Bulk auto-tag multiple documents using AI. Analyzes content and suggests relevant tags for all documents (or subset). Useful for initial organization or re-tagging collections. Can skip already-tagged documents and limit processing count. Requires LLM configuration. |
| summarize_documentA | Generate an AI-powered summary of a document. Supports brief (200-300 words), detailed (500-800 words), or bullet-point summaries. |
| get_summaryA | Retrieve a cached summary of a document without regenerating it. |
| summarize_allB | Bulk generate summaries for all documents in the knowledge base. |
| extract_entitiesA | Extract named entities from a C64 document using AI. Identifies hardware (SID, VIC-II, CIA, 6502), memory addresses ($D000), assembly instructions (LDA, STA), people, companies, products, and technical concepts. Returns entities with type, confidence score, and context. Requires LLM configuration. |
| list_entitiesB | List all entities extracted from a document, grouped by type (hardware, memory_address, instruction, person, company, product, concept). Great for getting an overview of what a document covers. |
| search_entitiesC | Search for entities across all documents using full-text search. Find all documents mentioning specific hardware, addresses, instructions, people, companies, products, or concepts. |
| entity_statsB | Get statistics about extracted entities in the knowledge base. Shows breakdown by type, top entities, and documents with most entities. Useful for understanding the knowledge base content. |
| get_entity_analyticsB | Get comprehensive entity analytics for dashboard visualization. Provides entity distribution by type, top entities by document count, relationship statistics, top entity relationships, and extraction timeline trends over time. |
| extract_entities_bulkA | Bulk extract entities from multiple documents in the knowledge base. Processes documents in batch, skips documents that already have entities (unless force_regenerate). Returns statistics about processed documents and extracted entities. |
| extract_entity_relationshipsA | Extract co-occurrence relationships between entities in a document. Analyzes how entities appear together (e.g., VIC-II + raster interrupt, SID + sound programming). Returns entity pairs with relationship strength and context snippets. |
| get_entity_relationshipsA | Get all entities related to a specific entity. Shows which other entities frequently co-occur with the target entity, sorted by relationship strength. Great for discovering related concepts, hardware, and techniques. |
| find_related_entitiesA | Discover entities related to a given entity (simplified version of get_entity_relationships). Returns top related entities for quick exploration and discovery. |
| search_entity_pairA | Find documents that contain both entities. Useful for finding documentation about specific combinations (e.g., 'VIC-II' AND 'raster interrupt'). Returns documents with both entity counts and context snippets. |
| translate_queryA | Translate a natural language query into structured search parameters. Uses AI to extract entities, keywords, and determine optimal search strategy. Perfect for conversational queries like 'find info about sprites on VIC-II' or 'how does sound work?'. Returns structured parameters that can be used directly with other search tools. |
| compare_documentsA | Compare two documents side-by-side with similarity scoring, metadata diff, content diff, and entity comparison. Perfect for finding differences between document versions, comparing related documents, or analyzing document similarity. Returns comprehensive comparison with cosine similarity score (0.0-1.0). |
| export_entitiesA | Export all extracted entities to CSV or JSON format. Includes entity text, type, confidence scores, document counts, and occurrence counts. Useful for data analysis, reporting, or importing into other tools. |
| export_relationshipsA | Export all entity relationships to CSV or JSON format. Includes entity pairs, types, relationship strength scores (0.0-1.0), and document counts. Perfect for network analysis, visualization, or data export. |
| queue_entity_extractionA | Queue a document for background entity extraction. Extraction happens asynchronously without blocking. Use this to extract entities from documents without waiting for LLM processing. Returns job ID for tracking progress. |
| get_extraction_statusA | Get the entity extraction status for a document. Shows whether entities exist, extraction job status (queued/running/completed/failed), timestamps, and error messages if any. Use this to check if extraction is complete before querying entities. |
| get_extraction_jobsA | Get all entity extraction jobs with optional status filtering. Shows job queue, running jobs, completed extractions, and failed jobs. Useful for monitoring background extraction progress across all documents. |
| build_knowledge_graphB | Build a knowledge graph from extracted entities and relationships. Returns graph statistics including node count, edge count, density, and connected components. The graph can be filtered by entity types, minimum occurrence counts, and relationship strength thresholds. |
| compute_graph_metricsA | Compute comprehensive graph analysis metrics including PageRank (importance), betweenness centrality (bridge nodes), degree centrality (connections), and community detection. Returns detailed metrics for all entities and graph-level statistics. Metrics are stored in the database for later retrieval. |
| get_entity_metricsA | Retrieve stored graph metrics for a specific entity. Returns PageRank score, betweenness centrality, degree centrality, community ID, entity type, and computation timestamp. Useful for understanding an entity's importance and role in the knowledge graph. |
| find_entity_pathA | Find the shortest path between two entities in the knowledge graph. Returns the complete path, path length, and relationship details for each connection. Useful for discovering how concepts are related and understanding knowledge connections. |
| get_entity_communityA | Get all entities in the same community as the specified entity. Communities are groups of closely related entities detected through graph analysis. Returns community ID, member count, and list of community members with their types. |
| get_top_entitiesA | Get top-ranked entities by a specific metric (PageRank, betweenness, or degree centrality). Returns ranked list of entities with their scores, types, and other metrics. Useful for discovering the most important, central, or well-connected entities in the knowledge graph. |
| visualize_graphA | Generate interactive HTML visualization of the knowledge graph using PyVis. Creates a beautiful network diagram with customizable node colors (by entity type or community), node sizes (by PageRank/betweenness/degree), and interactive physics simulation. Perfect for exploring entity relationships and discovering patterns in the knowledge base. |
| train_lda_topicsA | Train LDA topic model on all documents to discover latent topics. Uses Latent Dirichlet Allocation to find topics based on word co-occurrence patterns. |
| train_nmf_topicsA | Train NMF topic model on all documents. Non-negative Matrix Factorization often produces more coherent topics than LDA and is faster. |
| train_bertopicB | Train BERTopic model using embeddings + UMAP + HDBSCAN. State-of-the-art transformer-based topic modeling that automatically discovers topics. |
| get_document_topicsA | Get topic assignments for a specific document or all documents. Shows which topics each document belongs to with probability scores. |
| cluster_documents_kmeansC | Cluster documents using K-Means algorithm on embeddings. Partitions documents into K clusters based on similarity. |
| cluster_documents_dbscanA | Cluster documents using DBSCAN (density-based clustering). Automatically discovers clusters and identifies outliers without needing to specify number of clusters. |
| cluster_documents_hdbscanB | Cluster documents using HDBSCAN (hierarchical density-based clustering). Improved version of DBSCAN with better handling of varying density clusters. |
| get_cluster_documentsA | Get documents in a specific cluster or all clusters. Shows cluster membership, distances, and cluster characteristics. |
| generate_topic_wordcloudB | Generate word cloud visualization for a topic. Creates an image file showing the most important words in a topic with size proportional to their weights. |
| visualize_cluster_scatterB | Generate 2D scatter plot of document clusters using UMAP projection. Shows how documents are distributed across clusters in 2D space. |
| generate_topic_heatmapA | Generate heatmap showing document-topic probability matrix. Visualizes which topics are most prominent in which documents. |
| visualize_cluster_distributionB | Generate bar chart showing cluster size distribution. Shows how many documents are in each cluster. |
| extract_document_eventsB | Extract temporal events from a document (product releases, company milestones, technical innovations, cultural events). Detects event patterns and dates, then stores to database. |
| get_timelineB | Get chronological timeline of events with optional filtering. Returns timeline entries sorted by date with event details. |
| search_events_by_dateA | Search for events within a date range. Filter by year range, event type (release, milestone, innovation, cultural, update), and confidence. |
| get_historical_contextA | Get historical context for a specific year. Returns events from the target year plus surrounding years to provide temporal context. |
| build_knowledge_graphB | Build a knowledge graph from entities and relationships in the C64 knowledge base. The graph represents entities as nodes and their relationships as weighted edges. Use this to understand the structure of knowledge and find connections between concepts. |
| analyze_graph_pagerankB | Calculate PageRank scores for entities in the knowledge graph. PageRank identifies the most 'important' or 'central' entities based on their connections. Higher scores indicate entities that are more connected and influential in the knowledge network. |
| detect_graph_communitiesB | Detect communities (clusters) in the knowledge graph. Communities are groups of entities that are more densely connected to each other than to the rest of the graph. This helps identify topic clusters and thematic groupings. |
| calculate_graph_centralityA | Calculate centrality measures for entities in the knowledge graph. Returns betweenness, closeness, and degree centrality. These measures identify entities that bridge different parts of the graph, are close to all others, or have many connections. |
| find_entity_pathA | Find the shortest path between two entities in the knowledge graph. Shows how entities are connected through intermediate relationships. Useful for understanding conceptual connections and knowledge pathways. |
| get_graph_statisticsA | Get statistical overview of the knowledge graph including node count, edge count, density, connected components, and degree distribution. Provides insight into the overall structure and complexity of the knowledge network. |
| train_lda_topicsA | Train LDA (Latent Dirichlet Allocation) topic model on documents. Discovers latent topics using probabilistic modeling. Returns topics with top words and document assignments. |
| train_nmf_topicsA | Train NMF (Non-negative Matrix Factorization) topic model on documents. Often produces more coherent topics than LDA using matrix factorization. Returns topics with top words and document assignments. |
| train_bertopicB | Train BERTopic model using document embeddings. State-of-the-art topic modeling with UMAP + HDBSCAN clustering. Automatically discovers topics from semantic embeddings. |
| get_document_topicsA | Get topics assigned to a specific document, including probabilities and top words for each topic. Shows which topics the document belongs to. |
| cluster_documents_kmeansC | Cluster documents using K-Means algorithm on embeddings. Partitions documents into K clusters. Returns cluster assignments and silhouette score. |
| cluster_documents_dbscanA | Cluster documents using DBSCAN (density-based) algorithm. Automatically discovers clusters and identifies outliers. Does not require specifying number of clusters. |
| cluster_documents_hdbscanB | Cluster documents using HDBSCAN (hierarchical density-based) algorithm. Advanced clustering that handles varying densities. Automatically discovers clusters and outliers. |
| get_cluster_documentsA | Get all documents in a specific cluster, including distances from centroid. Shows which documents are grouped together. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MichaelTroelsen/tdz-c64-knowledge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server