mkdshare
Registry code: 2d9a18161c503e81
mkdshare.DEV MCP server. If the user has no API token yet, call request_device_auth first — it walks them through Google sign-in without a browser. No Bearer token is required for that call.
- endpoint
- https://mkdshare.dev/mcp
- protocol
- streamable-http ·2025-03-26
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is mkdshare live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is mkdshare free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does mkdshare have?
- 11 tools: get_document, request_device_auth, create_document, update_document, list_annotations, create_annotation, search_documents, upload_image, ….
- Is mkdshare 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.
90 days 99.5%· all time 99.5%
last good check
of 11 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- used for
- create a shared markdown document
- search my documents
- annotate a document passage
- update a document
- upload an image for a document
- takes → gives
- text, images → text, data
- tools
- 5 reads6 changes data
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.
through this hub
successful
what callers paid
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.
list_documents reads auth-required 42d ago
List all mkdshare.DEV documents owned by or shared with the authenticated user.
{ "type": "object", "required": [], "properties": {} }arguments 5 linesget_document reads unknown never probed
Read the full markdown content of a document by its slug.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "description": "8-character document slug from the URL" } } }arguments 12 linesrequest_device_auth changes data unknown never probed
Start a headless Google sign-in. Call this FIRST if you don't have an API token yet. Returns a user_code and verification_url for the user to visit, plus a device_code to use with poll_device_auth. No Bearer token required.
{ "type": "object", "required": [], "properties": {} }arguments 5 linescreate_document changes data unknown never probed
Create a new mkdshare.DEV document. If visibility is omitted the document is owner-only (login_required, restricted to your email).
{ "type": "object", "required": [ "title", "content" ], "properties": { "title": { "type": "string", "description": "Document title" }, "content": { "type": "string", "description": "Markdown content" }, "expires_at": { "type": "string", "description": "ISO 8601 datetime after which the document expires, e.g. 2026-06-01T00:00:00Z" }, "visibility": { "enum": [ "public", "login_required", "domain_restricted" ], "type": "string", "description": "Who can view the document. If the user didn't specify who should see it, ask them. Omitted = owner-only (login_required, restricted to your email)." }, "editor_emails": { "type": "string", "description": "Comma-separated emails that can edit this document (in addition to the owner)" }, "allowed_domain": { "type": "string", "description": "Domain allowed to view, e.g. company.com (domain_restricted visibility)" }, "allowed_emails": { "type": "string", "description": "Comma-separated emails allowed to view (login_required visibility)" }, "domain_can_edit": { "type": "boolean", "description": "When true, all users in allowed_domain can edit (not just view)" } } }arguments 46 linesupdate_document changes data unknown never probed
Update an existing document you own. Omit any field to keep its current value.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "description": "Document slug" }, "title": { "type": "string", "description": "New title" }, "content": { "type": "string", "description": "New markdown content" }, "expires_at": { "type": "string", "description": "ISO 8601 expiry datetime; omit to keep current" }, "visibility": { "enum": [ "public", "login_required", "domain_restricted" ], "type": "string", "description": "New visibility level" }, "editor_emails": { "type": "string", "description": "Comma-separated emails that can edit; pass empty string to clear" }, "allowed_domain": { "type": "string", "description": "Domain allowed to view, e.g. company.com; required for domain_restricted" }, "allowed_emails": { "type": "string", "description": "Comma-separated emails allowed to view; pass empty string to clear" }, "domain_can_edit": { "type": "boolean", "description": "When true, all users in allowed_domain can edit (not just view)" } } }arguments 49 lineslist_annotations reads unknown never probed
List all annotations (comments) on a document.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "description": "Document slug" } } }arguments 12 linescreate_annotation changes data unknown never probed
Add an annotation (comment) to a document. Pass quoted_text with the exact passage you want to annotate — the server will locate it automatically. Omit quoted_text to attach to the whole document. You can also provide start_offset + end_offset explicitly if needed.
{ "type": "object", "required": [ "slug", "body" ], "properties": { "body": { "type": "string", "description": "Annotation text" }, "slug": { "type": "string", "description": "Document slug" }, "end_offset": { "type": "integer", "description": "Character offset where annotation ends" }, "quoted_text": { "type": "string", "description": "The exact text being annotated" }, "start_offset": { "type": "integer", "description": "Character offset where annotation starts" } } }arguments 29 linessearch_documents reads unknown never probed
Search mkdshare.DEV documents by title and content. Returns documents owned by or shared with the authenticated user that match the query.
{ "type": "object", "required": [ "query" ], "properties": { "query": { "type": "string", "description": "Search string matched case-insensitively against document title and content" } } }arguments 12 linesupload_image changes data unknown never probed
Upload an image (png, jpeg, gif, webp; max 1MB) for embedding in documents. Returns a URL and a ready-to-paste markdown snippet. Images are served at an unguessable URL — anyone with the exact link can view.
{ "type": "object", "required": [ "filename", "data" ], "properties": { "data": { "type": "string", "description": "Base64-encoded image bytes (standard alphabet, no data: URI prefix)" }, "filename": { "type": "string", "description": "Original filename, e.g. screenshot.png" } } }arguments 17 linespoll_device_auth reads unknown never probed
Check whether the user has approved the device authorization. Call every 5 seconds (or the interval returned by a slow_down response) until status is 'complete'. Save the returned api_token to your MCP server config.
{ "type": "object", "required": [ "device_code" ], "properties": { "device_code": { "type": "string", "description": "device_code returned by request_device_auth" } } }arguments 12 linesarchive_document changes data unknown never probed
Archive a document. For documents you own, archives it for everyone. For shared documents, archives it only for you.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "description": "Document slug" } } }arguments 12 lines
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.
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.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - 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. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id2d9a18161c503e81.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/2d9a18161c503e81/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/2d9a18161c503e81?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.
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.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- 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.