{"name":"io.github.kapoost/humanmcp","slug":"kapoost-humanmcp","title":"humanMCP — kapoost","description":"Personal MCP server for humans who create. Proof of authorship, license control.","url":"https://mcp.market/server/kapoost-humanmcp","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":14,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-05-19T20:48:26.000Z","license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T06:05:31.801Z","last_ok_at":"2026-11-04T06:05:31.801Z","latency_ms":303},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/kapoost/humanmcp-go","website":null,"version":"0.3.0","remotes":[{"type":"streamable-http","url":"https://kapoost.humanmcp.net/mcp"}],"packages":[],"tools":[{"name":"about_humanmcp","description":"Self-description of this humanMCP server. Deterministic, no bootstrap required — call this first to decide whether the rest of the API is relevant.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"ask_human","description":"Submit an async question to kapoost. Returns an ID. Rate-limited 5/hr/IP. Poll fetch_answer later — kapoost answers on his own schedule (minutes, hours, or days). ALWAYS set `from` to a stable name for yourself: with it, sending the same question again returns the answer instead of creating a duplicate, which is the reliable path when your runtime cannot keep the ID between sessions.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"question":{"type":"string"},"context":{"type":"string"},"from":{"type":"string"}},"required":["question"]}},{"name":"bootstrap_session","description":"Validate the Polish poetry session code, then emit the full team briefing (guardian + style + personas + skills + persist block). Rate-limited 5/min/IP.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]}},{"name":"delete_skill","description":"Delete a skill by slug. Owner-only: requires Authorization: Bearer <token>.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"fetch_answer","description":"Poll for an answer to an ask_human question. Marks the question as fetched the first time an answer is returned. Rate-limited 30/hr/IP.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"fetch_narada_result","description":"Poll a narada job by ID. Statuses: pending, running, done, failed. When done, returns all persona voices.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"get_author_profile","description":"Author identity, bio, and a browsing cheatsheet. Records a profile-view event.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_certificate","description":"Return a formatted copyright/authenticity certificate for a piece.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"get_persona","description":"Return one persona's full prompt by slug. Session-gated except for Hodor (guardian rules must always apply). Pass session_token if your client cannot set an Authorization header.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["slug"]}},{"name":"get_persona_journal","description":"Read a persona's raw reflection journal. Owner-only — the journal is a private feedback loop, not for external callers.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"get_skill","description":"Return one skill's full body by slug. Session-gated except for -public suffixed skills (guardian bypass). Pass session_token if your client cannot set an Authorization header.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["slug"]}},{"name":"leave_comment","description":"Attach a short comment (≤280 chars) to a piece kapoost has published. Truncated silently past the limit.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"text":{"type":"string"},"from":{"type":"string"}},"required":["slug","text"]}},{"name":"leave_message","description":"Send kapoost a longer message. context REQUIRED (why you're writing / which piece / which task). contact optional — without it no reply is possible.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"text":{"type":"string"},"context":{"type":"string"},"contact":{"type":"string"},"from":{"type":"string"},"regarding":{"type":"string"}},"required":["text","context"]}},{"name":"list_blobs","description":"List typed data artifacts (images, contact, vectors, documents, datasets, capsules). Filter by blob_type. Readable-column reflects caller_kind + caller_id vs audience.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blob_type":{"type":"string"},"caller_kind":{"type":"string"},"caller_id":{"type":"string"}}}},{"name":"list_collection","description":"List works kapoost owns but did NOT create. Public items always; members-only surface only after session activation.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}}}},{"name":"list_content","description":"List published pieces (slug, title, type, access, tags). Optional type/tag filters.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"type":{"type":"string"},"tag":{"type":"string"}}}},{"name":"list_personas","description":"List every persona (slug, title, role). Full prompts unlock after bootstrap_session.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_provenance","description":"List provenance items (chain of custody, certificates, invoices) for an artwork slug. Tries piece then collection.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"list_skill_groups","description":"Index of every skill tag in use, with slugs per group. Public — no bootstrap required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"list_skills","description":"List skills (slug, category, title, tags). Optional category / tag filters.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"category":{"type":"string"},"tag":{"type":"string"}}}},{"name":"load_skill_group","description":"Bulk-fetch every skill tagged with the given group name. Respects the bootstrap gate per-skill: -public suffix bypasses, everything else needs session.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["name"]}},{"name":"mysloodsiewnia_get","description":"Fetch one document from kapoost's vault by slug. Requires Authorization: Bearer <edit token or friend token>. Friend tokens: vault-side filter enforces scope + access:private invisibility — an out-of-scope or private slug returns not_found. Vault offline ⇒ {status:offline}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doc_slug":{"type":"string"}},"required":["doc_slug"]}},{"name":"mysloodsiewnia_list","description":"Enumerate vault documents without FTS — for browsing by type or paginating. Requires Authorization: Bearer <edit token or friend token>. Friend tokens see only their scoped doc_types; access:private is invisible. Args: {doc_type?: string filter (note/pdf/literatura/calendar_event/...), limit?: int 1-200 default 50, offset?: int default 0}. Returns [{slug, title, doc_type, created_at, chunk_count}]. Vault offline ⇒ {status:offline}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doc_type":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}}}},{"name":"mysloodsiewnia_search","description":"Full-text search (BM25 over SQLite FTS5) on kapoost's local vault corpus. Requires Authorization: Bearer <edit token or friend token>. Friend tokens see only their scoped doc_types; access:private is invisible. Returns {status, results:[{source, type, body, doc_slug, title, page, citation}], summary}. Vault offline ⇒ {status:offline}.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer"},"doc_type":{"type":"string"},"doc_slug":{"type":"string"}},"required":["query"]}},{"name":"mysloodsiewnia_status","description":"Read-only liveness probe on kapoost's local vault (mysłoodsiewnia). Returns {status: online|degraded|offline, last_seen, commit_sha, personas_updated_at, skills_updated_at}. Offline is a stable state — retry later, don't escalate. Requires Authorization: Bearer <edit token or friend token>.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"mysloodsiewnia_write","description":"Ingest a new document into kapoost's vault (wave 2). OWNER-ONLY — friend tokens receive {status:write_denied,reason:owner_only}. Args: {doc_type (required), title (required), body (required, ≤100 KiB), source_path?, meta?}. Requires Authorization: Bearer <owner token>. On Unauthorized: obtain the token by either (a) calling bootstrap_session(code=<owner poet fragment>) and reading SESSION_TOKEN from the response briefing (1h TTL, preferred for agents that already know the code), or (b) if you have shell access on kapoost's Mac, running `security find-generic-password -s humanmcp-edit-token -w` to fetch the persistent EDIT_TOKEN. Server-side vault auto-tags via:humanmcp-bridge; op_id is dedup key (idempotent retries safe). Delete is permanently unavailable. Envelopes: {status:online, op_id, result:{slug, created_at}}, {status:invalid_args}, {status:payload_too_large, limit, got}, {status:offline}, {status:vault_timeout}, {status:vault_error, error}.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"doc_type":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"source_path":{"type":"string"},"meta":{"type":"object"}},"required":["doc_type","title","body"]}},{"name":"prepare_narada","description":"Offline narada: returns the panel plus each persona's ready-to-run SYSTEM/USER prompts so YOU run them as your own subagents, instead of the server generating voices. No LLM cost, no rate limit, nothing recorded — no narada ID and no journal feedback. Prefer this over run_narada when your subagents can read material the server cannot (a repository, local files) or when the server has no API key. Session-gated.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"context":{"type":"string"},"personas":{"type":"array","items":{"type":"string"},"description":"Optional. Explicit persona slugs (from list_personas). When present the keyword manifest is not used. Omit for automatic keyword routing."},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["context"]}},{"name":"read_blob","description":"Read one blob by slug. Returns text or base64-encoded data. Access-gated by audience unless blob is public.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"caller_kind":{"type":"string"},"caller_id":{"type":"string"}},"required":["slug"]}},{"name":"read_collection_item","description":"Full record for one collection item + dossier count. Access-gated: private is never visible, members needs session.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["slug"]}},{"name":"read_content","description":"Read a public piece by slug. Locked pieces return a hint pointing at request_access.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"read_provenance","description":"Return one provenance item with resolvable file URLs. slug + id required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"id":{"type":"string"}},"required":["slug","id"]}},{"name":"recall","description":"List memories saved under the given code, optionally substring-filtered by query. Session-gated for symmetry with remember.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"type":"string"},"query":{"type":"string"},"limit":{"type":"integer"},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["code"]}},{"name":"record_persona_reflection","description":"Ask a persona to write a lesson-for-self after a rolled-back narada recommendation. Appends to the persona's journal via Sonnet/Haiku. Owner-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"narada_id":{"type":"string"},"persona_slug":{"type":"string"},"error_context":{"type":"string"}},"required":["narada_id","persona_slug","error_context"]}},{"name":"remember","description":"Persist a note under the given session code. Session-gated — bootstrap_session first. Callers sharing the code share the memory.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"text":{"type":"string"},"code":{"type":"string"},"from":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"session_token":{"type":"string","description":"Optional. The SESSION_TOKEN emitted by bootstrap_session. Pass it here when your client cannot set a per-call Authorization: Bearer header."}},"required":["text","code"]}},{"name":"request_access","description":"Get the gate details for a locked piece: challenge question, manual-review flow, time-lock countdown, payment terms, or trade rules.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"request_license","description":"Declare intended use of a piece, get licensing terms + audit-log entry. caller_id is REQUIRED (whitespace-only rejected — storyboard-pinned).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"intended_use":{"type":"string"},"caller_id":{"type":"string"}},"required":["slug","intended_use","caller_id"]}},{"name":"run_narada","description":"Create an async narada job: server routes context to 3-5 personas via keyword manifest, then generates each voice via Sonnet 4.6 (Haiku 4.5 for journal recaps). Returns job ID for polling. Pass `personas` to pick the voices yourself and skip the router entirely — the router matches keywords only and cannot read a request to include or exclude someone written in the context.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"context":{"type":"string"},"from":{"type":"string"},"personas":{"type":"array","items":{"type":"string"},"description":"Optional. Explicit persona slugs (from list_personas) to consult. When present the keyword manifest is not used and these exact personas answer, in this order. Omit for automatic keyword routing."}},"required":["context"]}},{"name":"search_content","description":"Search kapoost's pieces by words in title, tags, description and body. Every word must match (AND). Polish diacritics are folded, so \"czlowieczenstwa\" finds \"człowieczeństwa\". Use this BEFORE ask_human — most questions about which piece is which are answered here instantly, while ask_human waits for a human. Locked pieces are matched by title and tags only; their body is never searched or quoted.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer"}},"required":["query"]}},{"name":"submit_answer","description":"Submit an answer to a challenge-gated piece. Correct answer unlocks and returns the full body.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"answer":{"type":"string"}},"required":["slug","answer"]}},{"name":"suggest_skills","description":"Deterministic manifest→tag mapping. Given files + languages + git_origin, returns up to 8 skill slugs and up to 5 personas, each with the reason it fired. No LLM classification.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"}},"git_origin":{"type":"string"}}}},{"name":"synthesise_persona_patterns","description":"Force-run Sonnet synthesis over a persona's raw journal, replacing the previous pattern set. Owner-only — paid + writes internal state.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"upsert_skill","description":"Create or replace a skill by slug. Owner-only: requires Authorization: Bearer <token>. Writes JSON to content/skills/<slug>.json.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"category":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["slug","category","title","body"]}},{"name":"verify_content","description":"Verify a piece's Ed25519 signature against the server's owner public key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}}],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-27T21:48:17.402Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T21:48:17.326Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 924ms"]},"poisoning":{"score":15,"max":15,"notes":["43 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 7 write-action tools with no auth"]},"maintenance":{"score":8,"max":15,"notes":["last push 131 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://kapoost.humanmcp.net/mcp","reachable":true,"authRequired":false,"latencyMs":924,"serverInfo":{"name":"humanMCP — kapoost","version":"0.2.0-dev"}}],"packages":[],"repo":{"found":true,"owner":"kapoost","repo":"humanmcp-go","archived":false,"pushedAt":"2026-05-19T20:48:26Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/778613?v=4","ownerCreatedAt":"2011-05-10T08:27:41Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/778613?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-05-19T20:48:26.000Z","score":14}}}},"grade_history":[],"reviews":[]}