2 checks that ran failed — credential hygiene and version behavior — so this release can’t be trusted as-is.
- Publisher
- com.granoflow
- Install
- npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server, npm:@granoflow/mcp-server
- Versions
- 8
- Inspected
- 5 of 6 checks · 90%
- Scored
- 2026-09-01 · rubric 1.0.0
What we checked
Six static checks, weighted by risk. Every result reflects only what could be observed in the published package and repository — never intent.
Injection surface
pass25% of gradeTool descriptions/manifest scanned for instruction-injection patterns (imperatives at the model, hidden text, 'ignore previous', data-exfil URLs).
Scanned 727 text field(s); no instruction-injection patterns found. PASS = no static red flag. A server can serve different tool descriptions at runtime (the rug-pull class), which static scanning cannot see.
Supply chain
pass25% of gradePackage provenance: namespace verification, repo linkage, maintainer count, account age, postinstall scripts, typosquat distance.
Python build script has no build-time network/exec; repository linkage verified
Credential hygiene
fail15% of gradeHow the server takes secrets (env vs plaintext config vs hardcoded); secrets appearing in tool schemas.
tool "granoflow_evidence_authoring_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_experience_authoring_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_knowledge_assessment_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_knowledge_materialization_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_knowledge_control_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_task_knowledge_adoption_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_task_knowledge_audit_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_task_knowledge_usage_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential). tool "granoflow_review_card_authoring_apply" has a secret-shaped input parameter "previewToken" — secrets must never be tool parameters (the model would supply/handle the credential).
Permission scope
pass15% of gradeDeclared tools vs. breadth (filesystem, network, exec); flags shell-exec and unbounded filesystem access.
No shell-exec, unbounded/sensitive filesystem, or download-and-run primitives found in scanned source. PASS = no static red flag. Static scanning is blind to code fetched or executed at runtime.
Version behavior
fail10% of gradeDiff of tool definitions between versions; new permissions or changed descriptions in a patch release (the postmark-mcp class).
vs prior 0.1.15 (patch bump): new tool "granoflow_agent_workflow_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_daily_review_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_first_run_import_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_review_card_draft_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_gfmcp_runner_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_delegated_authorization_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_orchestrator_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_workflow_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_persistent_milestone_runner_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_definition_skill" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_bundled_skill_reference" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_gfmcp_prepare" appeared; new tool "granoflow_gfmcp_safe_sync" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_gfmcp_candidates" appeared; new tool "granoflow_setup_status" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_setup_detect_local_api" appeared; new tool "granoflow_setup_write_config" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_setup_open_config" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_setup_open_app" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_health" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_version" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_capabilities" appeared; new tool "granoflow_ai_agent_tools" appeared; new tool "granoflow_agent_preferences_get" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_agent_preferences_write_defaults" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_git_missing_notice_record" appeared; new tool "granoflow_evidence_list" appeared; new tool "granoflow_evidence_search" appeared; new tool "granoflow_evidence_get" appeared; new tool "granoflow_evidence_authoring_preview" appeared; new tool "granoflow_evidence_authoring_apply" appeared; new tool "granoflow_evidence_update" appeared; new tool "granoflow_evidence_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_experience_list" appeared; new tool "granoflow_experience_get" appeared; new tool "granoflow_project_experiences" appeared; new tool "granoflow_milestone_experiences" appeared; new tool "granoflow_experience_search" appeared; new tool "granoflow_experience_authoring_preview" appeared; new tool "granoflow_experience_authoring_apply" appeared; new tool "granoflow_experience_update" appeared; new tool "granoflow_experience_delete_impact" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_experience_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_experience_merge_preview" appeared; new tool "granoflow_experience_merge_apply" appeared; new tool "granoflow_experience_usage_link" appeared; new tool "granoflow_experience_usage_unlink_impact" appeared; new tool "granoflow_experience_usage_unlink" appeared; new tool "granoflow_knowledge_assessment_list" appeared; new tool "granoflow_knowledge_assessment_get" appeared; new tool "granoflow_knowledge_assessment_preview" appeared; new tool "granoflow_knowledge_assessment_apply" appeared; new tool "granoflow_knowledge_materialization_list" appeared; new tool "granoflow_knowledge_materialization_get" appeared; new tool "granoflow_knowledge_materialization_preview" appeared; new tool "granoflow_knowledge_materialization_apply" appeared; new tool "granoflow_knowledge_control_preview" appeared; new tool "granoflow_knowledge_control_apply" appeared; new tool "granoflow_task_knowledge_pack" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_knowledge_references" appeared; new tool "granoflow_task_knowledge_adoption_preview" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_knowledge_adoption_apply" appeared; new tool "granoflow_task_knowledge_audit_preview" appeared; new tool "granoflow_task_knowledge_audit_apply" appeared; new tool "granoflow_task_knowledge_usage_preview" appeared; new tool "granoflow_task_knowledge_usage_apply" appeared; new tool "granoflow_project_knowledge_usages" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_knowledge_usages" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_review_card_draft_schema" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_review_card_similar" appeared; new tool "granoflow_review_card_authoring_preview" appeared; new tool "granoflow_review_card_authoring_apply" appeared; new tool "granoflow_context_pack" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_historical_task_candidates" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_memory_batch_preview" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_context_steward_status" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_context_attachments_ensure" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_context_attachment_read" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_context_attachment_reconcile" appeared; new tool "granoflow_project_context_attachment_write" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_interaction_style" appeared; new tool "granoflow_project_context_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_context_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_context_archive" appeared; new tool "granoflow_task_completion_record" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_review_card_record" appeared; new tool "granoflow_tag_list" appeared; new tool "granoflow_tag_create" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_source_tags_ensure" appeared; new tool "granoflow_task_list" appeared; new tool "granoflow_task_export" appeared; new tool "granoflow_task_validate" appeared; new tool "granoflow_task_import" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_history_mutate" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_create" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_create_structured" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_update_structured" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_review_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_completion_summary_update" appeared; new tool "granoflow_task_complete" appeared; new tool "granoflow_task_attachment_list" appeared; new tool "granoflow_logical_attachment_replace" appeared; new tool "granoflow_logical_attachment_read" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_design_baseline_import" appeared; new tool "granoflow_project_design_baseline_read" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_work_evaluate" appeared; new tool "granoflow_project_work_confirm" appeared; new tool "granoflow_task_attachment_add_markdown" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_attachment_read_markdown" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_attachment_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_node_list" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_node_batch_create" appeared; new tool "granoflow_task_node_update" appeared; new tool "granoflow_task_node_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_task_finish" appeared; new tool "granoflow_task_resolve" appeared; new tool "granoflow_project_list" appeared; new tool "granoflow_project_resolve" appeared; new tool "granoflow_project_create" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_project_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_list" appeared; new tool "granoflow_milestone_resolve" appeared; new tool "granoflow_milestone_create" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_delete" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_milestone_update" touches a sensitive surface (email/exec/net/fs); new tool "granoflow_review_day_show" appeared; new tool "granoflow_api_request" touches a sensitive surface (email/exec/net/fs).
Transport config
unscannable10% of gradeRemote servers: TLS and auth mode (none/token/OAuth). Local servers: whether the manifest indicates it phones home.
local stdio server: no remote transport or auth surface, and no phone-home/telemetry signal found in source. Absence of transport findings is NOT a safety guarantee — phone-home hosts can be constructed at runtime and defeat static analysis.
Version history
Each release plotted by grade against the safe line at B. A version that sinks below the line has lost its trusted standing — the shape of a rug-pull.
| Version | Published | Grade | Score | Inspected | Change |
|---|---|---|---|---|---|
| v0.1.16 · current | 2026-07-19 | B | 75 | 5/6 · 90% | ±0 |
| v0.1.15 | 2026-07-16 | B | 100 | 3/6 · 55% | — |