{"name":"dev.hythe/hythe","slug":"hythe","title":null,"description":"HYTHE — coordination bus + shared truth for AI agent fleets — self-hosted MCP server + stdio bridge.","url":"https://mcp.market/server/hythe","rating":null,"grade":"C","score":69,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":24,"stars":0,"forks":0,"downloads_week":58,"last_push_at":"2026-09-05T01:59:41.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/hythe-dev/hythe","website":null,"version":"0.2.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@hythe/mcp","version":"0.2.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Stable exact agent identity for this client lane; required so restarts and compaction cannot adopt another principal","isRequired":true,"format":"string","name":"HYTHE_AGENT_ID"},{"description":"Optional path to one protected per-agent credential file: regular, non-symlink, owned by the client user, mode 0400 or 0600, containing one hya1 token. Never place the token itself in an environment variable.","format":"string","name":"HYTHE_AGENT_KEY_FILE"},{"description":"Client authorization expectation: observe, mixed, or required (default observe). Move to mixed and then required only after this exact lane has a credential and passes /agent/whoami.","format":"string","name":"HYTHE_AGENT_AUTH_MODE"},{"description":"Shared API key authenticating the bridge to your self-hosted HYTHE server (create a protected .env with: npx -y @hythe/mcp@0.2.0 init --write-env --agent-id <agent-id>)","isRequired":true,"format":"string","isSecret":true,"name":"API_KEY"},{"description":"HYTHE server host (default 127.0.0.1)","format":"string","name":"MCP_HOST"},{"description":"HYTHE server port (default 6174)","format":"string","name":"MCP_PORT"}]}],"tools":[{"name":"add_observations","description":"Add new observations to existing entities with automatic vector embedding and graph updates. Supports mode:\"replace-current\" (alias supersedesLatest:true) to atomically supersede the entity's current observation server-side — the recommended way to maintain a one-current-observation entity without fetching the prior observation id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"archive_messages","description":"Archive messages for an agent — either specific messageIds, or all messages older than N days. Set markAsRead:true to acknowledge and archive the same scoped messages atomically. Archived messages are excluded from get_ai_messages by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"begin_session","description":"Compatibility wrapper over resume (Engram v1 B2, TOOL-COMPATIBILITY-MAP.md). Rebuilds working context for a scope; NEVER auto-consumes handoffs — acknowledgement is explicit via ackHandoffIds. Accepts the wrapper shape {agentId, scope:{project|task}, budget, ackHandoffIds?} or the pinned legacy shape {agentId, projectId, maxTokens?, userId?} (auto-adapted: projectId→scope.project, maxTokens→budget","write_action":false,"price_micros":0,"input_schema":null},{"name":"checkpoint","description":"Write an immutable, branch-preserving state snapshot for a scope (CAS on expectedRevision; stale parents branch, never conflict) with fingerprint-verified idempotency, plus transactional fact/loop changes. Returns the ids each factChange/loopChange materialized to (result.changes, positional, with a created flag) so callers never need a follow-up resume to learn a new loopId/factId. The counterpar","write_action":true,"price_micros":0,"input_schema":null},{"name":"compact_memory","description":"Analyze and reclaim storage bloat (ENG-2). Classes: \"index-diet\" (rebuild the derived graph_lookup_keys index under the current extraction policy), \"superseded\" (retire explicitly-superseded observations to restorable trash — marked-only, never guesses staleness, never touches an entity's current observation), \"vec-orphans\" (drop vector rows whose source memory is gone), \"message-archive\" (flag re","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_entities","description":"Create multiple new entities in the knowledge graph","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_relations","description":"Create multiple new relations between entities in the knowledge graph","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_entity","description":"Delete an entity and cascade-delete its observations and relations from the knowledge graph. Requires admin-equivalent authorization.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_observations_by_entity","description":"Delete ALL observations for a given entity. Requires admin-equivalent authorization.","write_action":true,"price_micros":0,"input_schema":null},{"name":"discover_related_context","description":"Read-only related-knowledge discovery for an exact project/task scope. Automatically retrieves vector candidates, reranks them with bounded one/two-hop graph paths, and explains currentness, evidence references, provenance, and score components. It never creates relations or changes memory; use create_relations separately only after validating a proposed relationship.","write_action":false,"price_micros":0,"input_schema":null},{"name":"end_session","description":"Compatibility wrapper over checkpoint (Engram v1 B2, TOOL-COMPATIBILITY-MAP.md) — end_session IS checkpoint: pass {agentId, scope:{project|task}, expectedRevision, idempotencyKey, state, factChanges?, loopChanges?}. The legacy {projectId, summary, openItems} shape is RETIRED and returns a migration error. Legacy side effects are gone — the wrapper only checkpoints. Prefer checkpoint for new caller","write_action":false,"price_micros":0,"input_schema":null},{"name":"gc_agent_registrations","description":"Dry-run-first garbage collection for expired or stale inactive agent registrations. Deletes only when dryRun is false.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_agent_context","description":"Retrieve a tiered context bundle for an agent, optionally scoped to a project. Returns identity, project state, unread messages, guardrails, and handoff flags.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_agent_status","description":"Get comprehensive status and health information for AI agents","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_ai_messages","description":"Retrieve messages for the calling agent's exact inbox with filtering and real offset pagination. Identity-bound client bridges require agentId to match the configured lane identity. The response reports the true total matching the filters plus hasMore/nextOffset. IMPORTANT: For routine inbox checks, just pass agentId — the defaults (unreadOnly: true, compact: true, limit: 5, offset: 0) return the ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_current_observation","description":"Return the single authoritative (current) observation for an entity: the newest observation not superseded by any other. Resolves the supersedes chain server-side via the entity lookup index — no history scan, works for entities with thousands of observations. Returns id, timestamp, kind, canonicalFact, full contents, and metadata; current:null when the entity has no observations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_entity_backlinks","description":"Bounded backlink view for ONE entity. Returns relation rows that point TO the entity, plus optional outgoing links for comparison. Inspired by Obsidian backlinks, but read from the SQLite knowledge graph.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_entity_detail","description":"Retrieve full entity content by storage ID, canonical entity name, or alias. `ids` preserves the scan-then-detail workflow; `names` or the singular `entity` input skips the search-then-refetch round trip and returns resolution metadata. STATE SEMANTICS: an entity's embedded observations[] is its creation-time definition snapshot, NOT current state — each entity result carries a resolved `currentOb","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_entity_neighborhood","description":"Bounded local-graph view around ONE entity: the entity plus its directly-related entities and the relations among them, out to a small depth (1-2 hops). The safe, focused alternative to read_graph — hard-capped node/edge counts with truncated flags. Use it to answer \"what is connected to X?\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_individual_memory","description":"Retrieve an agent's individual memory snapshot","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_message_detail","description":"Retrieve the full content of a single message by ID. Use after scanning compact message list from get_ai_messages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user_profile","description":"Get a user profile within the current tenant. Returns timezone, locale, preferences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_messages_read","description":"Mark specific messages or all unread messages for an agent as read","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_graph","description":"Read the knowledge graph in BOUNDED pages (entities, relations, and optionally observations). Defaults to a capped page and EXCLUDES observations unless requested, so a broad read can never dump the whole graph. Use limit/offset to paginate and since to fetch only recent rows; the response includes accurate totals + nextOffset. For a focused view around one entity, prefer get_entity_neighborhood.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_learning","description":"Record a learning entry into an agent's individual memory","write_action":false,"price_micros":0,"input_schema":null},{"name":"register_agent","description":"Register or refresh an AI agent in the collaboration system. Optional TTL/expiresAt metadata lets ephemeral agents expire without schema migration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_observations","description":"Remove specific observations from an entity by ID or content match. Requires admin-equivalent authorization.","write_action":true,"price_micros":0,"input_schema":null},{"name":"resume","description":"Rebuild working context for a project/task scope: current state, open loops, scoped messages/handoffs, facts, decisions, evidence handles and pointers — with closed per-section coverage accounting under a hard token budget. Pass resultVersion:2 to also receive `capsule` — the scope entity's rehydration capsule selected by kind (newest unsuperseded kind=capsule observation, with other unsuperseded ","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_entities","description":"Advanced federated search across graph, vectors, and cache. AGENT TIP: for a KNOWN entity/project name, pass searchType=exact — it is fast, precise, and name-anchored; hybrid/semantic is a bounded, lower-precision supplement best for fuzzy/exploratory queries (entity & observation hits are ranked above ai_message chatter). Returns compact summaries by default (use get_entity_detail for full conten","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_nodes","description":"DEPRECATED alias for graph-only search; use search_entities with { searchType: \"graph\" }","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_ai_message","description":"Send messages to AI agents (direct, capability-based, or broadcast)","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_agent_identity","description":"Temporarily disabled during migration to tenant-scoped stable principals. Calls fail without changing identity history; register an exact handle with register_agent instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_preferences","description":"Update agent preferences in individual memory","write_action":true,"price_micros":0,"input_schema":null},{"name":"unregister_agent","description":"Soft-unregister an agent registration by marking it inactive and recording lifecycle audit metadata. Does not delete rows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_observation","description":"Update the content of a specific observation. Runs sanitizer for parity with create/add paths. Requires admin-equivalent authorization.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_user_profile","description":"Update a user profile. Only the profile owner (or a service key) can update. Bumps prefs_version.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":69,"grade":"C","scanned_at":"2026-09-20T11:39:24.496Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:39:24.429Z","components":{"code":{"score":20,"max":25,"notes":["124 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 15 days ago"]},"identity":{"score":4,"max":10,"notes":["namespace and repository owner differ"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/memory/sqlite-vec-client.js: …(moduleName) { const importer = new Function('m', 'return import(m);'); retur…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@hythe/mcp","version":"0.2.0","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":18,"publishedAt":"2026-09-05T02:17:53.815Z","repositoryUrl":"git+https://github.com/hythe-dev/hythe.git","weeklyDownloads":58}],"repo":{"found":true,"owner":"hythe-dev","repo":"hythe","archived":false,"pushedAt":"2026-09-05T01:59:41Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/313523786?v=4","ownerCreatedAt":"2026-08-05T17:25:45Z","license":"Apache-2.0"},"icon":{"url":"https://www.hythe.dev/favicon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":58,"license":"Apache-2.0","lastPushAt":"2026-09-05T01:59:41.000Z","score":24}}}},"grade_history":[],"reviews":[]}