{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:52:40.993Z","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent","markdownUrl":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent.md","server":{"slug":"cdonoyan-shuka","name":"io.github.cdonoyan/shuka","registryName":"io.github.cdonoyan/shuka","description":"Universal trust attestation for AI agents: create, verify, and negotiate Shuka trust proofs.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"shukashake-agent","type":"npm","identifier":"@shukashake/agent","withdrawn":false,"url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent","version":"2.2.0","transport":"stdio","scoredAt":"2026-11-05T02:32:43.749Z"},"score":{"total":83,"tier":"high trust","status":"scored","weekDelta":1,"history":[{"date":"2026-11-05","total":83},{"date":"2026-11-04","total":83},{"date":"2026-11-03","total":83},{"date":"2026-11-02","total":83},{"date":"2026-11-01","total":83},{"date":"2026-10-31","total":83},{"date":"2026-10-30","total":82},{"date":"2026-10-29","total":82},{"date":"2026-10-28","total":81},{"date":"2026-10-27","total":81},{"date":"2026-10-26","total":66},{"date":"2026-10-25","total":82},{"date":"2026-10-24","total":81},{"date":"2026-10-23","total":81},{"date":"2026-10-22","total":80},{"date":"2026-10-21","total":80},{"date":"2026-10-20","total":79},{"date":"2026-10-19","total":79},{"date":"2026-10-18","total":78},{"date":"2026-10-17","total":78},{"date":"2026-10-16","total":77},{"date":"2026-10-15","total":38},{"date":"2026-10-14","total":38},{"date":"2026-10-13","total":66},{"date":"2026-10-12","total":66},{"date":"2026-10-11","total":66},{"date":"2026-10-04","total":66},{"date":"2026-10-03","total":66},{"date":"2026-10-02","total":51}]},"categories":[{"name":"Supply Chain Security","score":98,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","30 of 92 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"92","unhealthy":"30"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 9 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"9"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":80,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 3017 tokens (~177/item across 17 items; 15 tools + 2 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"177","items":"17","tools":"15","tokens":"3017","resources":"2"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":100,"verdict":"pass","reasons":["No destabilizing schema changes in the last 30 days."],"codes":[{"code":"stability.stable","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":75,"verdict":"fail","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; \"revoke_grant\" implies \"revoke\" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.","An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_undeclared","args":{"pct":"0","tool":"revoke_grant","verb":"revoke","declared":"none","annotated":"0","destructive":"1"}},{"code":"toolsafety.manipulation_clean","args":{"units":"16","judged":"16"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"shukashake-agent","type":"npm","identifier":"@shukashake/agent","withdrawn":false,"score":83,"current":true,"url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent","markdownUrl":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@shukashake/agent"},{"label":"Version","value":"2.2.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"create_idempotent_shake","title":null,"description":"Create or retrieve an idempotent Shuka shake. RECOMMENDED for most use cases.\n\nThe One Ring: Same entity_data always returns the same shake. This is the magic\nthat enables AI agents to repeatedly attest to the same data without creating\nduplicates - critical for enterprise integrations.\n\nThis shake is the anchor for EVERYTHING else in the united flow: attach terms\n(manage_terms), issue a marketplace offering from it (issue_license), and its\nlifecycle is recorded in the registry (registry).\n\nUse this when you need to:\n- Attest to data that may be referenced multiple times\n- Create portable proofs that persist across sessions\n- Ensure billing accuracy (only charged on first creation)\n- Build reliable audit trails without duplicate entries\n\nReturns the shake with was_created=true (new) or was_created=false (existing).","inputs":[{"name":"entity_data","type":"object","required":true,"description":"The data being attested - used to generate deterministic entity_id. Same data = same shake."},{"name":"entity_type","type":"string","required":true,"description":"Category of entity being attested (e.g., 'medical_record', 'contract', 'license', 'compliance_check')"},{"name":"expires_in_days","type":"number","required":false,"description":"Days until expiration (default: 365)"},{"name":"handshake_type","type":"string","required":false,"description":"Type of attestation (default: 'attestation')"},{"name":"industry","type":"string","required":false,"description":"Industry context (default: 'sdk')"},{"name":"purpose","type":"string","required":true,"description":"Human-readable purpose of this shake"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":298},{"name":"lookup_shake","title":null,"description":"Look up an existing shake by entity identifiers.\n\nUse this to check if a shake already exists before creating a new one,\nor to retrieve shake details for data you've previously attested.\n\nReturns the shake if found, or null if not found.","inputs":[{"name":"entity_data","type":"object","required":true,"description":"The entity data (used to derive entity_id)"},{"name":"entity_type","type":"string","required":true,"description":"Category of entity"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":85},{"name":"verify_shake","title":null,"description":"Verify a shake by its ID and get trust information.\n\nUse this to confirm a shake is valid and check its trust score\nbefore proceeding with a data exchange.","inputs":[{"name":"shake_id","type":"string","required":true,"description":"The handshake ID to verify"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"create_attestation","title":null,"description":"Create a verifiable Shuka attestation for any claim or data.\n\nUse this when you need to:\n- Prove a claim is true with cryptographic certainty\n- Create an audit trail for data being shared\n- Attest to compliance, consent, or authorization\n- Generate a portable proof that other agents can verify\n\nReturns a proof token (shk_v1.xxx.yyy) that anyone can verify.\nInclude industry/jurisdiction context directly in the description text —\nthe attestation records the text and optional terms.","inputs":[{"name":"description","type":"string","required":true,"description":"What you are attesting to. Be specific and clear; include industry and jurisdiction context in the text."},{"name":"terms","type":"object","required":false,"description":"Optional access terms: access_type (single_use|time_limited|use_limited|perpetual|session_bound|windowed), validity_days, require_receipt, permitted_purposes, prohibited_purposes"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":192},{"name":"verify_proof","title":null,"description":"Verify a Shuka proof token and get details about the attestation.\n\nUse this when you:\n- Receive a proof token and need to confirm it's valid\n- Want to check the trust score before proceeding\n- Need to see what was attested and when\n- Want to verify claims before acting on data\n\nProof tokens look like: shk_v1.YWJjMTIz.a1b2c3 or ENV-xxx","inputs":[{"name":"proof_token","type":"string","required":true,"description":"The Shuka proof token to verify (shk_v1.xxx.yyy or ENV-xxx format)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":124},{"name":"negotiate_trust","title":null,"description":"Perform agent-to-agent trust negotiation with Shuka as the arbiter.\n\nUse this when:\n- Another agent presents a proof and you need Shuka to vouch for it\n- You need a recommendation on whether to proceed with a data exchange\n- You want detailed validation evidence before trusting external data\n\nReturns a recommendation: safe_to_proceed, proceed_with_caution,\nadditional_verification_recommended, or do_not_proceed.\n\nNOTE: negotiation is a billable operation (standard shake rate). An\ninvalid proof is rejected by a free pre-check before any charge.","inputs":[{"name":"proof_token","type":"string","required":true,"description":"The proof token to verify"},{"name":"purpose","type":"string","required":false,"description":"Why you need to verify this (provides context for the trust decision)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":157},{"name":"browse_marketplace","title":null,"description":"Browse the shake-anchored license marketplace.\n\nEvery offering in the marketplace is anchored to a Shuka shake that proves\nthe underlying rights. Without a license_id this searches offerings; with a\nlicense_id it returns full details plus a validation check.\n\nUse this to:\n- Discover license offerings by keyword or brand\n- Inspect a specific offering before purchasing (purchase_license)\n- Confirm an offering is real, active, and in good standing","inputs":[{"name":"brand","type":"string","required":false,"description":"Filter by brand name"},{"name":"license_id","type":"string","required":false,"description":"A specific license ID - returns full details plus validation instead of search results"},{"name":"page","type":"number","required":false,"description":"Page number (default: 1)"},{"name":"per_page","type":"number","required":false,"description":"Results per page (max 50)"},{"name":"search","type":"string","required":false,"description":"Free-text search across offerings"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":171},{"name":"issue_license","title":null,"description":"Issue a license offering anchored to one of YOUR handshakes (shakes).\n\nThe united flow: your shake proves the underlying rights; the offering is\nissued FROM that shake; buyers purchase grants against it; every event is\nrecorded in the append-only registry.\n\nRequires an SDK key with license:write permission and an issuer-capable\naccount (Partner/Admin). Get keys at https://shuka.app/dashboard/api-keys\n\nUse this to:\n- Turn an attested asset (voice likeness, IP, dataset rights) into a sellable offering\n- Set pricing, permitted/prohibited uses, royalties, and grant caps","inputs":[{"name":"anchor_handshake_id","type":"string","required":true,"description":"The shake (handshake ID) that anchors this offering - must belong to you"},{"name":"brand","type":"string","required":true,"description":"Brand / title of the offering"},{"name":"buy_to_open_price","type":"number","required":false,"description":"Price to purchase a grant"},{"name":"image_url","type":"string","required":false,"description":"Offering image URL"},{"name":"max_grants","type":"number","required":false,"description":"Maximum number of grants that can be sold"},{"name":"permitted_uses","type":"array","required":false,"description":"What grant holders may do"},{"name":"platform_fee_percentage","type":"number","required":false,"description":"Platform fee percent"},{"name":"prohibited_uses","type":"array","required":false,"description":"What grant holders may not do"},{"name":"rights_holder","type":"string","required":true,"description":"Legal rights holder name"},{"name":"royalty_cap_usd","type":"number","required":false,"description":"Royalty cap in USD"},{"name":"royalty_percentage","type":"number","required":false,"description":"Royalty percent recorded in contract terms"},{"name":"valid_until","type":"string","required":true,"description":"Expiry date (ISO format, e.g. 2027-12-31)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":325},{"name":"purchase_license","title":null,"description":"Purchase a license from the marketplace (creates a grant).\n\nReturns the transaction, portfolio entry, and the attestation (handshake +\nproof_token) anchoring the grant to the registry ledger. The proof_token\nis portable - any agent can verify it with verify_proof.\n\nAcquisition is idempotent per buyer+license: a replay returns 409 with no\ndouble charge; a license you already own returns 409 already_owned; a\npayment_amount that doesn't match the current list price returns 400\ncarrying license_price.\n\nUse this to:\n- Acquire usage rights for an offering found via browse_marketplace\n- Get a cryptographic proof of your grant for downstream agents","inputs":[{"name":"license_id","type":"string","required":true,"description":"The license/offering ID to acquire"},{"name":"payment_amount","type":"number","required":true,"description":"Payment amount (must match the offering price)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":177},{"name":"verify_grant","title":null,"description":"Verify a marketplace grant against the append-only registry ledger.\n\nReturns the grant status, the anchoring license offering, the attestation,\nand the integrity of the ledger chain. This is how any agent confirms a\ngrant is real, active, and unrevoked - without trusting the grant holder.\n\nUse this when:\n- Another party claims to hold a license grant\n- You need to confirm a grant before honoring its permitted uses","inputs":[{"name":"grant_id","type":"string","required":true,"description":"The grant ID to verify (GRANT-...)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":112},{"name":"enterprise_licenses","title":null,"description":"Browse enterprise (multi-seat) license offerings.\n\naction=\"browse\": list enterprise offerings (filter by brand, min_seats, max_price).\naction=\"acquire\": NOT CURRENTLY AVAILABLE — the enterprise seat model is not\nbuilt yet and the backend returns 501 not_implemented. Use purchase_license\nfor single-grant acquisitions.","inputs":[{"name":"action","type":"string","required":true,"description":"browse: list enterprise offerings. acquire: currently returns 501 not_implemented."},{"name":"brand","type":"string","required":false,"description":"(browse) Filter by brand"},{"name":"license_id","type":"string","required":false,"description":"(acquire) The enterprise license ID"},{"name":"max_price","type":"number","required":false,"description":"(browse) Maximum price"},{"name":"min_seats","type":"number","required":false,"description":"(browse) Minimum seats needed"},{"name":"seats_needed","type":"number","required":false,"description":"(acquire) Number of seats to acquire"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":172},{"name":"manage_terms","title":null,"description":"Manage the rules layer: modifiable terms riding on immutable handshakes.\n\nThe shake never changes; the terms on it can be amended, re-priced, or\nrevoked WITHOUT re-attesting. This is how user IP stays under the owner's\ncontrol after attestation.\n\nActions (all require an SDK key assigned to a user; most are billable):\n- create: attach terms to a handshake (requires handshake_id; access_type\n  defaults to perpetual; 409 terms_exist if the handshake already has terms;\n  needs license:write, $0.05)\n- get: fetch terms by terms_id\n- update: amend terms (updates MUST include change_reason or the backend\n  400s; new revision recorded; needs license:write, $0.03)\n- revoke: revoke terms (reason is REQUIRED; needs license:write, $0.02)\n- record_access: log an access under the terms (creates a receipt; purpose\n  must be in permitted_purposes when those are set; needs license:read, $0.01)\n- revisions: amendment history for terms\n- receipts: access receipts (audit trail) for terms\n- by_handshake: get the current terms attached to a handshake","inputs":[{"name":"access_config","type":"object","required":false,"description":"(create) Access-type-specific config (e.g. valid_until, max_uses)"},{"name":"access_type","type":"string","required":false,"description":"(create) How the data may be accessed"},{"name":"accessor_id","type":"string","required":false,"description":"(record_access) Who accessed (defaults to this agent)"},{"name":"action","type":"string","required":true,"description":"The terms operation to perform"},{"name":"handshake_id","type":"string","required":false,"description":"(create, by_handshake) The handshake the terms ride on"},{"name":"permitted_purposes","type":"array","required":false,"description":"(create) Purposes the data may be used for"},{"name":"prohibited_purposes","type":"array","required":false,"description":"(create) Purposes the data may NOT be used for"},{"name":"purpose","type":"string","required":false,"description":"(record_access) Why the data was accessed"},{"name":"reason","type":"string","required":false,"description":"(revoke) Why the terms are being revoked — REQUIRED for revoke"},{"name":"terms_id","type":"string","required":false,"description":"(get, update, revoke, record_access, revisions, receipts) The terms ID"},{"name":"updates","type":"object","required":false,"description":"(update) Fields to change — MUST include change_reason (backend rejects without it)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":482},{"name":"registry","title":null,"description":"Query the Shuka registry: the append-only ledger and interoperability layer.\n\nActions:\n- history: full chronological ledger history for an entity (requires entity_type + entity_id)\n- discover: find registries by industry / shake_type\n- lookup: look up a registry entity by entity_id\n- can_issue: check whether an entity can issue a shake type (requires entity_id + shake_type)\n- will_accept: check whether an entity accepts a shake type from an issuer (requires entity_id + shake_type + issuer_id)\n- interop_check: full issuer-to-receiver interoperability check (requires issuer_id + receiver_id + shake_type)\n\nUse this to trace provenance (every license and grant event is in the ledger)\nand to confirm two parties can exchange a given shake type BEFORE attempting it.","inputs":[{"name":"action","type":"string","required":true,"description":"The registry operation to perform"},{"name":"entity_id","type":"string","required":false,"description":"(history, lookup, can_issue, will_accept) The entity ID"},{"name":"entity_type","type":"string","required":false,"description":"(history) Ledger entity type (e.g. 'license', 'grant')"},{"name":"industry","type":"string","required":false,"description":"(discover) Filter registries by industry"},{"name":"issuer_id","type":"string","required":false,"description":"(will_accept, interop_check) The issuer entity ID"},{"name":"receiver_id","type":"string","required":false,"description":"(interop_check) The receiver entity ID"},{"name":"shake_type","type":"string","required":false,"description":"(discover, can_issue, will_accept, interop_check) The shake type in question"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":300},{"name":"check_access","title":null,"description":"THE DECISION POINT: may this accessor use this data for this purpose right now?\n\nEvaluates the stored Terms Layer (status, validity window, remaining uses,\npurpose binding) AND the shake's revocation state, server-side. Returns a\nSIGNED verdict. Allowed crossings are receipted and land as ACCESSED events\non the hash-chained ledger; a revoked shake denies with consent_revoked.\n\nCall this BEFORE acting on data protected by a Shuka proof — it is the same\ncheck shuka.guard performs at enterprise enforcement points.","inputs":[{"name":"handshake_id","type":"string","required":false,"description":"Handshake ID (alternative to proof_token)"},{"name":"proof_token","type":"string","required":false,"description":"Compact proof token (shk_v1....) — or use terms_id / handshake_id"},{"name":"purpose","type":"string","required":false,"description":"Declared purpose of access (e.g. 'care_coordination')"},{"name":"record","type":"boolean","required":false,"description":"Record a receipt + ledger event on allow (default true)"},{"name":"terms_id","type":"string","required":false,"description":"Terms ID (alternative to proof_token)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":213},{"name":"revoke_grant","title":null,"description":"Revoke a license grant (issuer or admin only).\n\nWrites the transactional GRANT_REVOKED event on the grant's ledger chain and\nrevokes the grant's proof token — verify_grant reports it immediately.","inputs":[{"name":"grant_id","type":"string","required":true,"description":"The grant ID to revoke"},{"name":"reason","type":"string","required":false,"description":"Revocation reason (audit trail)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:32:43.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":92,"partial":false,"deprecated":null,"stale":30,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-02","recent":[{"id":"chg_01a194f0-bc33-7c0b-833c-103a697bad58","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a194f0-bc33-7c0b-833c-103a697bad58"},{"id":"chg_01a18fca-1c2b-78f6-b9fb-c6ecc90440e8","kind":"score.total_changed","summary":"Trust score (82 → 83)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a18fca-1c2b-78f6-b9fb-c6ecc90440e8"},{"id":"chg_01a1857d-26bf-7bba-8ce3-bea1b6216d90","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1857d-26bf-7bba-8ce3-bea1b6216d90"},{"id":"chg_01a17b2f-3e54-76b9-aa08-e0c2db2cb40b","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a17b2f-3e54-76b9-aa08-e0c2db2cb40b"},{"id":"chg_01a17b2f-3e5a-71cc-ba24-4d6e461b8ee6","kind":"score.total_changed","summary":"Trust score (66 → 81)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a17b2f-3e5a-71cc-ba24-4d6e461b8ee6"},{"id":"chg_01a1794c-e13d-701d-9a03-9f5f0c8c9ef4","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1794c-e13d-701d-9a03-9f5f0c8c9ef4"},{"id":"chg_01a1794c-e140-73ce-9714-869e6f0b9b0e","kind":"check.measure","summary":"Schema quality (2726 → 3017)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1794c-e140-73ce-9714-869e6f0b9b0e"},{"id":"chg_01a1794c-e141-7031-8c1d-17f32fbd5108","kind":"check.verdict","summary":"Destructive annotations (pass → 0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1794c-e141-7031-8c1d-17f32fbd5108"},{"id":"chg_01a1794c-e141-7cf0-bd10-543f6746485d","kind":"package.version_changed","summary":"Package version (2.1.2 → 2.2.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1794c-e141-7cf0-bd10-543f6746485d"},{"id":"chg_01a1794c-e142-7267-b8d3-7b80a40e05e3","kind":"score.total_changed","summary":"Trust score (82 → 66)","materiality":"functional","direction":"regression","scoreDelta":-16,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1794c-e142-7267-b8d3-7b80a40e05e3"},{"id":"chg_01a170e1-1d41-79dd-8e3e-644e5d6df737","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a170e1-1d41-79dd-8e3e-644e5d6df737"},{"id":"chg_01a16692-c5e6-704f-a984-614d5ba67bf4","kind":"score.total_changed","summary":"Trust score (80 → 81)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a16692-c5e6-704f-a984-614d5ba67bf4"},{"id":"chg_01a15c45-c8d6-7e24-ba8c-61513787bc95","kind":"score.total_changed","summary":"Trust score (79 → 80)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a15c45-c8d6-7e24-ba8c-61513787bc95"},{"id":"chg_01a151f8-1355-79aa-b666-47bdb07d847a","kind":"score.total_changed","summary":"Trust score (78 → 79)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-19","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a151f8-1355-79aa-b666-47bdb07d847a"},{"id":"chg_01a147ab-1648-7468-aa0b-7b31473e8ff5","kind":"score.total_changed","summary":"Trust score (77 → 78)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-17","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a147ab-1648-7468-aa0b-7b31473e8ff5"},{"id":"chg_01a1428b-ca2b-7dd4-b2a2-5b584142e387","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1428b-ca2b-7dd4-b2a2-5b584142e387"},{"id":"chg_01a1428b-ca83-76f7-889f-4e6b513a1c70","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1428b-ca83-76f7-889f-4e6b513a1c70"},{"id":"chg_01a1428b-ca9a-7737-88cd-ea872aa0d57c","kind":"check.reverified","summary":"Schema quality (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1428b-ca9a-7737-88cd-ea872aa0d57c"},{"id":"chg_01a1428b-caf0-7c7f-94dc-2bc1606157eb","kind":"check.reverified","summary":"MCP protocol (unverified → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1428b-caf0-7c7f-94dc-2bc1606157eb"},{"id":"chg_01a1428b-cb5b-778b-bcb7-d3944fa2d446","kind":"check.reverified","summary":"Stability (unverified → 0.47)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent#chg-chg_01a1428b-cb5b-778b-bcb7-d3944fa2d446"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent/changelog.json"},"links":{"html":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent","markdown":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent.md","changelogJson":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent/changelog.json","changelogRss":"https://verifymcp.io/servers/cdonoyan-shuka/shukashake-agent.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@shukashake/agent"},{"label":"Socket report","href":"https://socket.dev/npm/package/@shukashake/agent"},{"label":"Repository","href":"https://github.com/cdonoyan/shuka-agent"}]}}