{"name":"io.github.numbererikson/shinobi","slug":"numbererikson-shinobi","title":null,"description":"Task spine + searched dead ends + approvals for AI coding agents. One brain, every device.","url":"https://mcp.market/server/numbererikson-shinobi","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":23,"stars":2,"forks":1,"downloads_week":53,"last_push_at":"2026-07-31T16:06:35.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/numbererikson/shinobi","website":null,"version":"0.3.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@shinobiapps/shinobi","version":"0.3.1","transport":{"type":"stdio"}}],"tools":[{"name":"add_note","description":"Add a free-form note. Used for things that do not fit decision/dead_end/task. Body is fulltext-searched by recall(), and embedded for semantic recall when SHINOBI_EMBED_PROVIDER is configured.","write_action":false,"price_micros":0,"input_schema":null},{"name":"agent_bootstrap","description":"Start an agent work session for a project. Returns project context, latest plan, selected/next task, open decisions, relevant dead ends, recent activity, and file-specific decisions. Optionally claims the task.","write_action":false,"price_micros":0,"input_schema":null},{"name":"archive_project","description":"Mark a project as archived (sets archived_at timestamp).","write_action":false,"price_micros":0,"input_schema":null},{"name":"bulk_create_tasks","description":"Create multiple subtasks in a single transaction. Useful when seeding a project plan.","write_action":true,"price_micros":0,"input_schema":null},{"name":"check_dead_ends","description":"Preventive search BEFORE implementing an approach. Pass a description and optional file paths. Uses semantic similarity when SHINOBI_EMBED_PROVIDER is configured; otherwise FTS5 + filename overlap. Returns matching past failures.","write_action":false,"price_micros":0,"input_schema":null},{"name":"claim_task","description":"Mark a subtask as in_progress and link the current session. Call BEFORE starting work so resume knows where you left off.","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_task","description":"Mark a subtask as done. Optionally pass a summary that will be attached to the linked session. Set notify:true to fire a \"task done\" mobile push (best-effort, never fails the completion) — meant for headless / dispatch-loop agents; leave false for interactive completes so you do not buzz your own phone.","write_action":false,"price_micros":0,"input_schema":null},{"name":"compress_session_summary","description":"Compress a project's recent activity + decisions + dead ends into a terse 3-paragraph markdown summary via LLM (Groq Llama 3.3 by default, free tier). When persist=true (default), stores on projects.recent_summary_md so next agent_bootstrap surfaces it as signal instead of raw 270-row noise. Requires SHINOBI_LLM_PROVIDER + GROQ_API_KEY (or OPENAI_API_KEY).","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_project","description":"Create a new project. Tag with workspace (e.g. shinobi / shinobiapps / sitesnap) so cross-codebase work stays organised.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_task","description":"Create a subtask. project_id is optional (null = unrouted inbox task). Title+description are embedded for semantic recall when SHINOBI_EMBED_PROVIDER is configured.","write_action":true,"price_micros":0,"input_schema":null},{"name":"decisions_for_file","description":"Return every decision whose files_touched contains the given path. Useful when opening a file you have not touched in months.","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_project","description":"Permanently delete a project (cascades to subtasks, decisions, plans, etc.).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_subtask","description":"Permanently delete a subtask.","write_action":true,"price_micros":0,"input_schema":null},{"name":"extract_decisions","description":"Extract decision drafts from a conversation transcript via LLM (Groq Llama 3.3 by default, free tier). Drafts land in the decision_drafts table with status=pending — the user reviews them in the dashboard and approves to create real decisions via log_decision. Use at session boundaries when you want auto-capture of decisions you may have forgotten to log explicitly. Requires SHINOBI_LLM_PROVIDER +","write_action":false,"price_micros":0,"input_schema":null},{"name":"file_context","description":"Return guardrail context for files an agent is about to inspect or edit: project context annotations, decisions for each file, relevant dead ends, and recent activity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_context","description":"Get a project living context: conventions, dont_touch, test_patterns, deploy_notes, file_annotations. Returns null when no context row exists yet.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_plan","description":"Return the latest plan for a project, or a specific version. Optionally include version history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project","description":"Get a single project by id, including its summary fields.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_task","description":"Get a single subtask by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"history","description":"Return activity timeline (claim/complete/log_decision/log_dead_end/save_plan/...) ordered newest-first. Optionally scoped to a project, entity, or session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_findings","description":"Turn a list of audit / linter / code-review findings into a subtask graph the swarm can drain. Severity maps to priority (critical→urgent, high→high, medium→medium, low/info→low). Findings on the same file are chained (depends_on) so they run sequentially — agents never edit one file in parallel — while different files stay independent and fan out. Closes the loop: an AI review generates findings,","write_action":false,"price_micros":0,"input_schema":null},{"name":"link_commit","description":"Link a git commit to a subtask (when commit message contains [SHI-N] tag) or attribute to projects via target_path match. Records to the activity timeline so 'history' shows commits next to claims/completions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_notes","description":"List notes ordered newest-first, optionally scoped to a project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"List Shinobi projects with progress. Filter by status, workspace, or include archived. Pass brief=true for a token-light listing (truncated descriptions, no summary blobs) and use get_project for full detail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tasks","description":"List subtasks. Filter by project_id, status, or claude session id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"log_dead_end","description":"Log an approach that demonstrably failed so future sessions do not re-try. Embeds approach+failure_reason for semantic match when SHINOBI_EMBED_PROVIDER is configured.","write_action":false,"price_micros":0,"input_schema":null},{"name":"log_decision","description":"Record a decision in the durable decision log. Architectural choices, library picks, tradeoffs, workarounds. Embeds summary+rationale for semantic recall when SHINOBI_EMBED_PROVIDER is configured.","write_action":false,"price_micros":0,"input_schema":null},{"name":"next_task","description":"Pick the highest-priority todo subtask whose dependencies are met. Optionally scoped to a project. Also returns matched dead-end warnings (semantic when SHINOBI_EMBED_PROVIDER is configured).","write_action":false,"price_micros":0,"input_schema":null},{"name":"notify","description":"Fire-and-forget mobile push to every subscribed device. Unlike request_approval, this does NOT block waiting for a response — use it from a headless / dispatch-loop agent to signal \"done while you slept\" (kind:\"task_completed\") or \"I am stuck, come look\" (kind:\"blocked\"). Returns a delivery summary; push failures never throw.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugin_hello","description":"List discovered plugins and their registered tools. Use this to verify the plugin system loaded correctly. Plugins are loaded from ~/.shinobi/plugins/*.{js,mjs} (user tier) and node_modules/@shinobi/plugin-* (npm tier).","write_action":false,"price_micros":0,"input_schema":null},{"name":"recall","description":"Search across decisions, dead ends, notes, and subtask titles/descriptions for a query string. Uses semantic similarity when SHINOBI_EMBED_PROVIDER is configured; otherwise FTS5-backed fulltext. Use this when you have lost the thread on an old project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"request_approval","description":"Block waiting for the user to approve a decision via mobile push notification. Creates an approval row, fires web push to all subscribed devices with action buttons, and polls until the user responds (or timeout). Use when the agent hits a decision point that requires human judgment (\"ship to prod?\", \"drop this feature?\", \"pick library X or Y?\").","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_plan","description":"Persist an approved plan as a new versioned snapshot. Auto-increments version per project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"session_closeout","description":"Finish an agent work session in one call. Records summary, changed files, completed tasks, decisions, dead ends, optional plan snapshot, and follow-up tasks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"unarchive_project","description":"Restore an archived project (clears archived_at).","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_context","description":"Patch a project's context. Only fields present in the patch are modified — others preserve their prior value.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_decision_status","description":"Move a decision through its lifecycle (open / fix_now / fix_later / wontfix / fixed / false_positive). Stamps decided_at automatically on closing states.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_project","description":"Patch a project. Only fields present in the patch are modified.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_subtask","description":"Patch a subtask. Rejects circular dependencies. Use status=\"todo\" to reset an in-progress task.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-27T05:27:33.691Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:27:33.672Z","components":{"code":{"score":25,"max":25,"notes":["199 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":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 58 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@shinobiapps/shinobi","version":"0.3.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-06-15T09:46:52.010Z","repositoryUrl":"git+https://github.com/numbererikson/shinobi.git","weeklyDownloads":53}],"repo":{"found":true,"owner":"numbererikson","repo":"shinobi","archived":false,"pushedAt":"2026-07-31T16:06:35Z","stars":2,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/131168856?v=4","ownerCreatedAt":"2023-04-18T12:52:11Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":1,"downloadsWeek":53,"license":"MIT","lastPushAt":"2026-07-31T16:06:35.000Z","score":23}}}},"grade_history":[],"reviews":[]}