{"name":"io.github.sidyellur/tether","slug":"sidyellur-tether","title":null,"description":"Local-first agent memory over SQLite: remember, recall, link, forget. Degrades, never fails.","url":"https://mcp.market/server/sidyellur-tether","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"data","tags":["data","ai"],"presence":{"score":28,"stars":1,"forks":0,"downloads_week":27,"last_push_at":"2026-09-12T23:28:27.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/sidyellur/tether","website":"https://github.com/sidyellur/tether","version":"0.6.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"tether-memory","version":"0.6.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the SQLite memory file. Defaults to the platform data dir (e.g. ~/.local/share/tether/memory.db).","format":"filepath","name":"TETHER_DB"},{"description":"Set to 0 to force keyword-only recall. Semantic recall needs the [semantic] extra and is on by default when available.","format":"string","name":"TETHER_SEMANTIC"},{"description":"Optional libSQL/Turso primary URL to sync memory across devices. Leave unset for local-only.","format":"string","name":"TETHER_SYNC_URL"},{"description":"Auth token for TETHER_SYNC_URL.","format":"string","isSecret":true,"name":"TETHER_SYNC_TOKEN"}]}],"tools":[{"name":"forget","description":"Soft-delete a memory by id: marks it no longer current (excluded from recall/the boot index) but keeps the row, reversibly, like consolidation and the forgetting sweep already do. Returns {\"forgotten\", \"existed\"}. (Permanent purge is an admin-only CLI operation, not available here.)","write_action":false,"price_micros":0,"input_schema":null},{"name":"link","description":"Create a bidirectional link between two memories by id.","write_action":true,"price_micros":0,"input_schema":null},{"name":"recall","description":"Search memories by keyword and semantic similarity, then follow the usage graph to related memories, most relevant first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remember","description":"Save a durable memory. UPSERTS: a memory of the same `type` with the same (whitespace/case-normalized) `title` is updated in place instead of duplicated, so re-remembering a fact refines it rather than cluttering.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T00:26:16.074Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:26:15.986Z","components":{"code":{"score":25,"max":25,"notes":["14 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 7 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"tether-memory","version":"0.6.1","found":true,"weeklyDownloads":27,"dependencyCount":7,"publishedAt":"2026-09-07T20:24:32.013437Z","repositoryUrl":"https://github.com/sidyellur/tether"}],"repo":{"found":true,"owner":"sidyellur","repo":"tether","archived":false,"pushedAt":"2026-09-12T23:28:27Z","stars":1,"forks":0,"openIssues":4,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/20009719?v=4","ownerCreatedAt":"2016-06-18T05:45:15Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":27,"license":"MIT","lastPushAt":"2026-09-12T23:28:27.000Z","score":28}}}},"grade_history":[],"reviews":[]}