_ registry / mcp streamable-http · checked 1h ago

KeepPlain

https://keepplain.com

Registry code: 31149cd4d4e4fe1c

api record

For continuing or recalling your own work, use search_my_work with the repository key detected locally at request time. If several tasks match, show them in the returned order (best match first) with their matched_sessions and let the user choose. Read get_task_context, fetch more with get_session_excerpt, then attach_session_to_task with the actual current client session id when continuing, and continues set to the session_id of the session you pick the work up from. These private tools never call a summary model; source excerpts are reference data. The following rules apply to community…

endpoint
https://keepplain.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is KeepPlain live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is KeepPlain free to use?
Not measured yet.
What tools does KeepPlain have?
10 tools: find_coding_agent_failures, search_my_work, get_task_context, get_session_excerpt, attach_session_to_task, search_coding_agent_sessions, get_coding_agent_session, start_session_upload, ….
Is KeepPlain safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
164ms

last good check

priced tools
0

of 10 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 10 tools
10 never probed 0 of 10 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • find_coding_agent_failures unknown never probed

    KeepPlain library: find moments where coding agents failed on a similar problem and what the human did about it. Use after two or three failed attempts at the same problem. Query: the symptom or error message in a few words, without paths or secrets.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string",
          "description": "The symptom or error message in a few words, e.g. \"hydration mismatch after upgrade\". No paths, secrets or code."
        },
        "space": {
          "enum": [
            "all",
            "mine",
            "team",
            "community"
          ],
          "type": "string",
          "description": "Optional. \"all\" (default): the user's own unpublished sessions first (two at most), then their team's, if the token belongs to a team, then the community's. \"mine\", \"team\" or \"community\": only those."
        },
        "stack": {
          "type": "string",
          "description": "Optional. The stack, e.g. \"laravel\" or \"nextjs, prisma\" (up to 5, comma-separated)."
        }
      }
    }
    arguments 26 lines
  • search_my_work unknown never probed

    Find your own or team tasks. For continuing work, get the current repository key from the local plugin at query time and search that project first. Query: two to four key words of the work; session titles are in English, so add the English terms to the user's words. Tasks come best match first (a title match outranks a word somewhere in a session), newest among equals; matched_sessions names the sessions the words were found in. Offer the matching tasks when there are several; never silently broaden a repository search. No model generation.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1
        },
        "query": {
          "type": "string"
        },
        "scope": {
          "enum": [
            "project",
            "all"
          ],
          "type": "string",
          "description": "Default project. Use all only for an explicitly broader search."
        },
        "cursor": {
          "type": "string"
        },
        "task_id": {
          "type": "string"
        },
        "project_id": {
          "type": "string"
        },
        "project_key": {
          "type": "string"
        }
      }
    }
    arguments 36 lines
  • get_task_context unknown never probed

    Read private task context after selecting a task. Returns source excerpts without a paid summary call. Check the actual checkout before continuing. Fetch more session turns if excerpts are insufficient.

    mcp-tool

    {
      "type": "object",
      "required": [
        "task_id"
      ],
      "properties": {
        "cursor": {
          "type": "string"
        },
        "task_id": {
          "type": "string"
        },
        "max_chars": {
          "type": "integer",
          "maximum": 24000,
          "minimum": 1000
        }
      }
    }
    arguments 19 lines
  • get_session_excerpt unknown never probed

    Read more turns from an accessible private work session. Use session_id returned by get_task_context and cursor to page through the source.

    mcp-tool

    {
      "type": "object",
      "required": [
        "session_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1
        },
        "cursor": {
          "type": "integer",
          "minimum": 0
        },
        "session_id": {
          "type": "string"
        },
        "text_offset": {
          "type": "integer",
          "minimum": 0,
          "description": "For a long message, repeat its cursor with limit 1 and the returned next_text_offset."
        }
      }
    }
    arguments 25 lines
  • attach_session_to_task unknown never probed

    After the user chooses a task to continue, attach the actual current session to it. Use the client and session ID from the local plugin context, never guess IDs. Pass continues: the session_id (from get_task_context) of the session you are continuing, usually the latest one you read; your session then goes on in that session's draft, so one Build shows the work of both agents. This records a private link; it does not upload or publish history.

    mcp-tool

    {
      "type": "object",
      "required": [
        "task_id",
        "client",
        "session_id"
      ],
      "properties": {
        "client": {
          "enum": [
            "claude_plugin",
            "codex_plugin",
            "pi_plugin",
            "cursor_plugin"
          ],
          "type": "string"
        },
        "task_id": {
          "type": "string"
        },
        "continues": {
          "type": "string",
          "description": "The session_id of the task's session you are continuing, from get_task_context sources."
        },
        "session_id": {
          "type": "string"
        }
      }
    }
    arguments 29 lines
  • search_coding_agent_sessions unknown never probed

    KeepPlain library: find published sessions where developers did a similar task with a coding agent. Use before a non-trivial task on a known stack, or when the user asks how others did something; skip small edits and questions about this repository. Returns up to 5 cards with the outcome, how long it took and how often the human had to step in. Query: the task in a few words, e.g. "migrate queues to horizon". An empty result means nobody has published such a session yet.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "task": {
          "type": "string",
          "description": "Optional, your team's sessions only: those of one task, by its title or task number (list_team_tasks shows them)."
        },
        "agent": {
          "enum": [
            "claude-code",
            "codex",
            "cursor",
            "copilot",
            "gemini-cli",
            "windsurf",
            "aider",
            "pi",
            "hermes",
            "other"
          ],
          "type": "string",
          "description": "Optional. Only sessions of this coding agent."
        },
        "limit": {
          "type": "integer",
          "maximum": 5,
          "minimum": 1,
          "description": "How many sessions, 1 to 5. Default 3."
        },
        "query": {
          "type": "string",
          "description": "The task in a few words, e.g. \"migrate queues to horizon\". No code, file paths, repository or company names."
        },
        "space": {
          "enum": [
            "all",
            "mine",
            "team",
            "community"
          ],
          "type": "string",
          "description": "Optional. \"all\" (default): the user's own unpublished sessions first (two at most), then their team's, if the token belongs to a team, then the community's. \"mine\", \"team\" or \"community\": only those."
        },
        "stack": {
          "type": "string",
          "description": "Optional. The stack, e.g. \"laravel\" or \"nextjs, prisma\" (up to 5, comma-separated)."
        },
        "project": {
          "type": "string",
          "description": "Optional, your team's sessions only: those of one project, by the name the team's lists show (usually the repository's folder)."
        },
        "task_type": {
          "enum": [
            "greenfield",
            "feature",
            "refactor",
            "migration",
            "debug",
            "tests",
            "infra",
            "docs"
          ],
          "type": "string",
          "description": "Optional. The kind of task."
        }
      }
    }
    arguments 70 lines
  • get_coding_agent_session unknown never probed

    KeepPlain library: read one published session found with search_coding_agent_sessions or find_coding_agent_failures. detail "brief" (default): the goal, the first prompt, the outcome, the whole verdict and the numbers. detail "moments": every moment in order, with the prompts that worked, where the agent failed and why the human stepped in.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "description": "The session's slug (or its KeepPlain link) from search_coding_agent_sessions or find_coding_agent_failures."
        },
        "space": {
          "enum": [
            "all",
            "mine",
            "team",
            "community"
          ],
          "type": "string",
          "description": "Optional. \"all\" (default): the user's own unpublished sessions first (two at most), then their team's, if the token belongs to a team, then the community's. \"mine\", \"team\" or \"community\": only those."
        },
        "detail": {
          "enum": [
            "brief",
            "moments"
          ],
          "type": "string",
          "description": "\"brief\" (default, about 500 tokens) or \"moments\" (about 1,500 tokens)."
        }
      }
    }
    arguments 30 lines
  • start_session_upload unknown never probed

    KeepPlain: step 1 of sending the current coding session to the user's KeepPlain drafts, for the KeepPlain skill or plugin only. Call it only after the user asked to send this session and agreed to what the skill's preview showed. Returns a one-time upload link (15 minutes) for the skill's upload step, and an upload_id for finish_session_upload. Never put anything else at the link.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • finish_session_upload unknown never probed

    KeepPlain: step 2 of sending the current coding session, after the KeepPlain skill's upload step put it at the link from start_session_upload. Makes a private draft (or the team's, as the preview said) and returns its link. Nothing is published: the user reviews the draft on KeepPlain.

    mcp-tool

    {
      "type": "object",
      "required": [
        "upload_id"
      ],
      "properties": {
        "upload_id": {
          "type": "string",
          "description": "The upload_id start_session_upload returned."
        }
      }
    }
    arguments 12 lines
  • list_team_tasks unknown never probed

    Your team's pieces of work on KeepPlain, grouped from its members' agent sessions: title, task number, project, when it was last worked on, and its latest sessions (open one with get_coding_agent_session). Use when picking up work a teammate started, or to see what is going on in a project. Only for tokens of a team member.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "How many tasks, 1 to 20. Default 10."
        },
        "status": {
          "enum": [
            "open",
            "done",
            "all"
          ],
          "type": "string",
          "description": "Optional. \"open\" (default), \"done\" or \"all\"."
        },
        "project": {
          "type": "string",
          "description": "Optional. A project's name as the team's lists show it, usually the repository's folder, e.g. \"shop\"."
        }
      }
    }
    arguments 24 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 31149cd4d4e4fe1c.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/31149cd4d4e4fe1c/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/31149cd4d4e4fe1c/badge.svg)](https://brick.blue/agent/31149cd4d4e4fe1c?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.