{"name":"io.github.jyswee/agenticmemory","slug":"jyswee-agenticmemory","title":null,"description":"Persistent memory for AI agents — history, context, semantic search, queues. 46 tools, stdio/SSE.","url":"https://mcp.market/server/jyswee-agenticmemory","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":35,"stars":1,"forks":0,"downloads_week":54,"last_push_at":"2026-09-23T11:40:17.000Z","license":"NOASSERTION"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T06:10:42.321Z","last_ok_at":"2026-11-04T06:10:42.321Z","latency_ms":142},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/jyswee/agenticmemory","website":"https://agenticmemory.ai","version":"1.10.0","remotes":[{"type":"sse","url":"https://mcp.agenticmemory.ai/sse","headers":[{"description":"Bearer token using your Agentic Memory API key: 'Bearer amk_...'. Optional for tool discovery; required to call a tool. Get one instantly with `npx agmry signup my-project`.","isSecret":true,"name":"Authorization"}]}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"agmry","version":"1.10.0","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"isRequired":true,"value":"mcp-serve","type":"positional"}],"environmentVariables":[{"description":"Agentic Memory API key (amk_...). Optional for tool discovery; required to call a tool. Get one instantly with `agmry signup my-project` — no browser, no card, live for 48h; $0 card-auth starts the free 7-day trial.","isSecret":true,"name":"AGMRY_API_KEY"}]}],"tools":[{"name":"context_delete","description":"Delete a context key.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"key":{"type":"string","description":"Context key to delete"}},"required":["spaceId","key"]}},{"name":"context_get","description":"Get a context value by key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"key":{"type":"string","description":"Context key name"}},"required":["spaceId","key"]}},{"name":"context_list","description":"List all context keys and values in a space.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"context_set","description":"Set a key-value context entry. Stores structured data (JSON or string).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"key":{"type":"string","description":"Context key name"},"value":{"description":"Value to store (string, number, object, array)"},"ttl":{"type":"number","description":"Optional TTL in seconds"}},"required":["spaceId","key","value"]}},{"name":"entities_list","description":"List entities in a memory space, optionally filtered.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"namePrefix":{"type":"string","description":"Filter by name prefix"},"knowsContains":{"type":"string","description":"Filter: entities that know this fact"}},"required":["spaceId"]}},{"name":"entity","description":"Entity (knowledge-graph node) operations: upsert (create), get, update, delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["upsert","get","update","delete"],"description":"Operation"},"name":{"type":"string","description":"Entity name"},"role":{"type":"string","description":"Entity role (upsert)"},"knows":{"type":"array","items":{"type":"string"},"description":"Facts this entity knows (upsert/update)"},"doesNotKnow":{"type":"array","items":{"type":"string"},"description":"Facts this entity does NOT know (upsert/update)"}},"required":["spaceId","action","name"]}},{"name":"entries_add_batch","description":"Append multiple journal entries in one call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"entries":{"type":"array","items":{"type":"object"},"description":"Array of {title, content, type?, tags?, source?} entries"}},"required":["spaceId","entries"]}},{"name":"entries_list","description":"List long-term memory entries. Filter by tags.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"limit":{"type":"number","description":"Max entries (default: 20)"},"tags":{"type":"string","description":"Comma-separated tags to filter by"}},"required":["spaceId"]}},{"name":"entry","description":"Single-entry operations on the tagged/versioned journal: add, get, update, versions, restore.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["add","get","update","versions","restore"],"description":"Operation"},"entryId":{"type":"string","description":"Entry ID (required for get/update/versions/restore)"},"title":{"type":"string","description":"Entry title (add)"},"content":{"type":"string","description":"Entry body (add/update)"},"type":{"type":"string","description":"Entry type: extraction | summary | decision | artifact (add)"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags (add/update)"},"source":{"type":"string","description":"Source attribution (add/update)"},"reason":{"type":"string","description":"Reason for the update (update)"},"version":{"type":"number","description":"Version number to restore (restore)"}},"required":["spaceId","action"]}},{"name":"knowledge","description":"Knowledge-base operations: create (with documents), list, delete, query (smart retrieval).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["create","list","delete","query"],"description":"Operation"},"name":{"type":"string","description":"KB name (create)"},"slug":{"type":"string","description":"KB slug (create/query)"},"description":{"type":"string","description":"KB description (create)"},"documents":{"type":"array","items":{"type":"object"},"description":"Documents to index (create)"},"kbId":{"type":"string","description":"KB ID (delete/query)"},"query":{"type":"string","description":"Query text (query)"},"limit":{"type":"number","description":"Max results (query)"}},"required":["spaceId","action"]}},{"name":"kv_hash","description":"Hash operations (Redis-hash semantics, write-through durable): set, get (whole hash), keys, get_field, del_field, delete, setnx (atomic set-if-absent), cas (atomic compare-and-set).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"name":{"type":"string","description":"Hash name"},"action":{"type":"string","enum":["set","get","keys","get_field","del_field","delete","setnx","cas"],"description":"Operation"},"fields":{"type":"object","description":"Fields to set (set)"},"field":{"type":"string","description":"Single field (get_field/del_field/setnx/cas)"},"value":{"description":"Value (setnx/cas)"},"expected":{"description":"Expected current value (cas — omit to require absent)"},"deleteField":{"type":"boolean","description":"CAS: delete the field instead of setting (cas)"}},"required":["spaceId","name","action"]}},{"name":"kv_set","description":"Set operations (Redis-set semantics): add, members (with size), contains, remove, delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"name":{"type":"string","description":"Set name"},"action":{"type":"string","enum":["add","members","contains","remove","delete"],"description":"Operation"},"members":{"type":"array","items":{"type":"string"},"description":"Members (add/remove)"},"member":{"type":"string","description":"Single member (contains)"}},"required":["spaceId","name","action"]}},{"name":"kv_string","description":"String operations with optional TTL (survives rebuild): set, get (includes remaining ttlMs), delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"name":{"type":"string","description":"String key name"},"action":{"type":"string","enum":["set","get","delete"],"description":"Operation"},"value":{"type":"string","description":"Value to set (set)"},"ttlSeconds":{"type":"number","description":"TTL in seconds (set)"}},"required":["spaceId","name","action"]}},{"name":"memory_bootstrap","description":"Load full context in one call: recent messages, entries, context, scratchpad. Run this at session start.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"entries":{"type":"number","description":"Number of entries to include (default: 10)"},"messages":{"type":"number","description":"Number of messages to include (default: 20)"},"query":{"type":"string","description":"Semantic query for relevant entries"}},"required":["spaceId"]}},{"name":"memory_bootstrap_batch","description":"Parallel bulk fetch: named context keys, entities, and optional semantic results in one call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"keys":{"type":"array","items":{"type":"string"},"description":"Context keys to fetch"},"entities":{"type":"array","items":{"type":"string"},"description":"Entity names to fetch"},"semantic":{"type":"boolean","description":"Include semantic search results"},"query":{"type":"string","description":"Semantic query (with semantic=true)"},"entriesLimit":{"type":"number","description":"Max entries to include"}},"required":["spaceId"]}},{"name":"memory_clear","description":"Clear all messages in a memory space.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"memory_recall","description":"Recall recent messages from conversation history. Returns newest first.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"limit":{"type":"number","description":"Number of messages to return (default: 20)"},"before":{"type":"string","description":"Cursor: return messages before this message ID"}},"required":["spaceId"]}},{"name":"memory_search","description":"Semantic search across past conversations. Finds by meaning, not keywords.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"query":{"type":"string","description":"Natural language search query"},"limit":{"type":"number","description":"Max results (default: 10)"},"tags":{"type":"array","items":{"type":"string"},"description":"Filter by tags"},"scope":{"type":"string","description":"Search scope: all | messages | entries | entities"},"includeEntities":{"type":"boolean","description":"Include entity matches in results"}},"required":["spaceId","query"]}},{"name":"memory_store","description":"Store a message in conversation history. Use for remembering what just happened.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"content":{"type":"string","description":"Message content"},"role":{"type":"string","description":"Role: user, assistant, system, tool (default: user)"}},"required":["spaceId","content"]}},{"name":"memory_store_batch","description":"Store multiple messages at once.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"Array of {role, content} messages"}},"required":["spaceId","messages"]}},{"name":"queue_ack","description":"Acknowledge a leased envelope (deletes it permanently).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"},"leaseToken":{"type":"string","description":"Lease token from queue_lease"}},"required":["spaceId","queue","leaseToken"]}},{"name":"queue_dlq","description":"Dead-letter queue operations: push a failed envelope, or list DLQ items.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"},"action":{"type":"string","enum":["push","list"],"description":"Operation"},"envelope":{"type":"object","description":"Envelope to dead-letter (push)"},"reason":{"type":"string","description":"Failure reason (push)"},"limit":{"type":"number","description":"Max items (list)"},"offset":{"type":"number","description":"Offset (list)"}},"required":["spaceId","queue","action"]}},{"name":"queue_lease","description":"Non-destructive lease (at-least-once): take the oldest envelope with a visibility timeout. Returns {item, leaseToken, deadline}. Ack with queue_ack, requeue with queue_nack.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"},"visibilitySeconds":{"type":"number","description":"Visibility timeout before auto-requeue"},"wait":{"type":"number","description":"Long-poll seconds, 0-25 (default 0)"}},"required":["spaceId","queue"]}},{"name":"queue_nack","description":"Negative-acknowledge a leased envelope (requeues it to the tail).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"},"leaseToken":{"type":"string","description":"Lease token from queue_lease"}},"required":["spaceId","queue","leaseToken"]}},{"name":"queue_peek","description":"Peek at a queue without consuming: returns length and the head envelope.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"}},"required":["spaceId","queue"]}},{"name":"queue_pop","description":"Dequeue the oldest envelope from a FIFO queue (returns null if empty). Set wait (max 25s) to long-poll for the next envelope.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name"},"wait":{"type":"number","description":"Long-poll seconds, 0-25 (default: 0 = return immediately)"}},"required":["spaceId","queue"]}},{"name":"queue_push","description":"Enqueue a JSON envelope onto a FIFO queue in a memory space. Use to send work/events to other agents sharing the space.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"queue":{"type":"string","description":"Queue name (lowercase alphanumeric plus . _ : -, max 64 chars)"},"envelope":{"type":"object","description":"JSON envelope to enqueue (opaque to the server)"}},"required":["spaceId","queue","envelope"]}},{"name":"scratchpad_get","description":"Get the scratchpad content from a memory space.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"scratchpad_set","description":"Set the scratchpad content for a memory space (ephemeral working memory).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"data":{"description":"Scratchpad data (any JSON-serializable value)"}},"required":["spaceId","data"]}},{"name":"shared_memory","description":"Shared world-memory (one-write, all-see) operations: set, get, list, delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["set","get","list","delete"],"description":"Operation"},"key":{"type":"string","description":"Shared key (required for set/get/delete)"},"value":{"description":"Value to set (set)"},"ttl":{"type":"number","description":"TTL in seconds (set)"}},"required":["spaceId","action"]}},{"name":"space_export","description":"Export all data in a space (all primitives, schema v2) as a restorable payload.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"space_import","description":"Restore a space from an export payload. Mode: empty-only (default), merge, or replace.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Target memory space ID"},"payload":{"type":"object","description":"Export payload (from space_export)"},"mode":{"type":"string","enum":["empty-only","merge","replace"],"description":"Import mode (default empty-only)"}},"required":["spaceId","payload"]}},{"name":"spaces_create","description":"Create a new memory space.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Space name"},"slug":{"type":"string","description":"URL-safe slug"}},"required":["name","slug"]}},{"name":"spaces_get","description":"Get a single memory space (config, usage counters).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"spaces_list","description":"List all memory spaces owned by this API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"state_get","description":"Get a space's single JSON state snapshot.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"}},"required":["spaceId"]}},{"name":"state_set","description":"Replace a space's single JSON state snapshot.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"state":{"type":"object","description":"The full state object (replaces existing)"}},"required":["spaceId","state"]}},{"name":"stream_append","description":"Append an entry to a stream (XADD). Returns the entry ID.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"stream":{"type":"string","description":"Stream name"},"data":{"type":"object","description":"Entry data (flat object)"},"maxlen":{"type":"number","description":"Approximate max stream length (trim)"}},"required":["spaceId","stream","data"]}},{"name":"stream_delete","description":"Delete a stream entirely (hot + durable) — irreversible.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"stream":{"type":"string","description":"Stream name"}},"required":["spaceId","stream"]}},{"name":"stream_group","description":"Consumer-group operations on a stream: create, destroy, read (XREADGROUP), ack (XACK), pending (XPENDING), claim (XCLAIM/XAUTOCLAIM).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"stream":{"type":"string","description":"Stream name"},"action":{"type":"string","enum":["create","destroy","read","ack","pending","claim"],"description":"Operation"},"group":{"type":"string","description":"Consumer group name"},"from":{"type":"string","description":"Start position for create (default $ = new entries only, use 0 for all)"},"consumer":{"type":"string","description":"Consumer name (read/pending/claim)"},"count":{"type":"number","description":"Max entries (read/pending/claim)"},"waitSeconds":{"type":"number","description":"Long-poll seconds ≤25 (read)"},"ids":{"type":"array","items":{"type":"string"},"description":"Entry IDs (ack/claim)"},"minIdleMs":{"type":"number","description":"Min idle ms before claim (claim)"},"start":{"type":"string","description":"Autoclaim scan start (claim)"}},"required":["spaceId","stream","action","group"]}},{"name":"stream_info","description":"Stream info: length and consumer groups (XLEN + XINFO GROUPS).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"stream":{"type":"string","description":"Stream name"}},"required":["spaceId","stream"]}},{"name":"stream_read","description":"Ranged read from a stream (XRANGE/XREVRANGE).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"stream":{"type":"string","description":"Stream name"},"start":{"type":"string","description":"Start ID (default -)"},"end":{"type":"string","description":"End ID (default +)"},"count":{"type":"number","description":"Max entries"},"reverse":{"type":"boolean","description":"Read newest-first (XREVRANGE)"}},"required":["spaceId","stream"]}},{"name":"thread","description":"Thread (conversation grouping) operations: create, get, update, delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["create","get","update","delete"],"description":"Operation"},"threadId":{"type":"string","description":"Thread ID (required for get/update/delete)"},"name":{"type":"string","description":"Thread name (create/update)"},"status":{"type":"string","description":"Thread status (update)"},"summary":{"type":"string","description":"Thread summary (update)"},"metadata":{"type":"object","description":"Metadata (create)"}},"required":["spaceId","action"]}},{"name":"threads_list","description":"List threads in a memory space, optionally filtered by status.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"status":{"type":"string","description":"Filter by status"}},"required":["spaceId"]}},{"name":"usage_get","description":"Get current usage vs plan limits for the authenticated tenant.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"webhook","description":"Per-space webhook subscriptions: create, list, delete.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"spaceId":{"type":"string","description":"Memory space ID"},"action":{"type":"string","enum":["create","list","delete"],"description":"Operation"},"url":{"type":"string","description":"Webhook URL (create)"},"events":{"type":"array","items":{"type":"string"},"description":"Event types to subscribe to (create)"},"filter":{"type":"object","description":"Event filter (create)"},"secret":{"type":"string","description":"Signing secret (create)"},"hookId":{"type":"string","description":"Webhook ID (delete)"}},"required":["spaceId","action"]}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-10-15T21:48:21.636Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-15T21:48:21.610Z","components":{"code":{"score":20,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1618ms"]},"poisoning":{"score":15,"max":15,"notes":["46 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 22 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"obf.hex-density","severity":"medium","component":"code","title":"Heavily hex-escaped string (obfuscation)","evidence":"dist/commands/auth.js: …47','\\x6c\\x6d\\x6b\\x79\\x77\\x57\\x43\\x7a','\\x46\\x43\\x6f\\x4f\\x57\\x52\\x42\\x63\\x4e\\x38\\x6f\\x64','\\x43\\x53\\x6b\\x49\\x71\\x71\\x78\\x63\\x54\\…"}],"inputs":{"probes":[{"url":"https://mcp.agenticmemory.ai/sse","reachable":true,"authRequired":false,"latencyMs":1618,"serverInfo":{"name":"agenticmemory","version":"1.3.0"}}],"packages":[{"registryType":"npm","identifier":"agmry","version":"1.10.0","found":true,"license":"SEE LICENSE IN LICENSE","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-23T12:41:05.129Z","repositoryUrl":"git+https://github.com/jyswee/agenticmemory.git","weeklyDownloads":54}],"repo":{"found":true,"owner":"jyswee","repo":"agenticmemory","archived":false,"pushedAt":"2026-09-23T11:40:17Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/11043064?v=4","ownerCreatedAt":"2015-02-17T10:44:46Z","license":"NOASSERTION"},"icon":{"url":"https://prodmedia.tyga.host/public/tyga.cloud/landing/agenticmemory.ai/favicon.ico","source":"registry","width":48,"height":48},"presence":{"stars":1,"forks":0,"downloadsWeek":54,"license":"NOASSERTION","lastPushAt":"2026-09-23T11:40:17.000Z","score":35}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 86: Heavily hex-escaped string (obfuscation)","createdAt":"2026-10-15T21:48:29.289Z"}],"reviews":[]}