Skip to content

Docstar

io.github.swayammaheshwari/docstar-mcpswayammaheshwaristreamable-httpv1.0.0Scanned

Publish your API docs so AI assistants can look up endpoints and call your API correctly.

15 tools: 7 can delete or cancel things, 3 change things and 5 only read.

Tools: 7 delete, 0 irreversible, 3 write, 5 read.
  • Reads private data · 4
  • Reads text others write · 7
  • Can send data out · 3
  • 5 findings

Anlyon alternative

10 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

15 tools

Deletes or cancels 7Claude Code: deny
  • call_any_api_of_docstarSend a POST, PUT, PATCH or DELETE request to any DocStar API endpoint for the signed-in user and return { status, ok, headers, data }.Reads text others writeNo findings

    Why it is in this group

    • The name "call_any_api_of_docstar" says "call": a word for a change.
    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Send a POST, PUT, PATCH or DELETE request to any DocStar API endpoint for the signed-in user and return { status, ok, headers, data }. Use it for changes no dedicated tool covers, once you know the exact endpoint: from the quickstart-docstar skill's recipes, or looked up with get_docstar_api_docs. For GET requests use call_any_read_api_of_docstar. Never guess a URL. Pass the full url with path variables filled in, the method, the headers the endpoint's docs list, query params in `query` (not in the url) and the JSON body in `body`. Send the endpoint's auth header with an empty value "": the user's token is filled in automatically. Never put a token there yourself. Show the user what you're about to send and get a yes before any call that creates, changes, publishes or deletes something.

    Annotations the server declares

    • title: Call the Docstar API
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • create_collectionCreates a new documentation collection in the organization together with its invisible root page (type 0), auto-assigns collection permissions to all org users based on their roles…1 finding

    Why it is in this group

    • The name "create_collection" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,682 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ling tab; agents can omit it. POST https://api.docstar.io/orgs/:orgId/collections"

      What this check looks for
    Description, as the server wrote it
    Creates a new documentation collection in the organization together with its invisible root page (type 0), auto-assigns collection permissions to all org users based on their roles, and auto-provisions an MCP server for it in the background. The returned rootParentId is the page id under which top-level pages are created (via Create Page). SSO read-only organizations that already have a collection get 403. Slug is permanent; if omitted it is derived from the name, and a chosen slug that is taken returns 409. A body that fails validation returns 400 with the Joi message. Body fields: name (string, required) - Collection name, 3-55 characters. If the organization already has a collection with the same name (or a name like "name_N"), a numeric suffix is appended to the stored name (for example "Docs_2") instead of an error. slug (string, optional) - Permanent URL-safe identifier: lowercase letters, numbers and underscores only (no hyphens or spaces; 2-50 chars). Cannot be changed later. If omitted it is derived from the name (every run of other characters becomes an underscore), with a random suffix added when that slug is already taken. description (string, optional) - Collection description (null or empty allowed). isPublic (boolean, optional) - Accepted but ignored on create: a new collection is always created with isPublic true. Use Update Collection to change it. type (string, optional) - Collection type: 'page' (default, documentation pages), 'api' (API reference), 'blog', or 'embed'. customDomain (string, optional) - Custom domain to serve the public docs on, e.g. docs.example.com. Must be unique. path (string, optional) - Path prefix under the custom domain, e.g. 'api'. theme (string, optional) - Theme/brand color hex string, default '#f2994a'. favicon (string, optional) - Favicon URL. gtmId (string, optional) - Google Tag Manager ID. docProperties (object, optional) - Free-form doc settings object, e.g. {"languages":["hi","fr"]} for AI translations. environment (object, optional) - Accepted but ignored on create: the stored environment is always null. Set it with Update Collection. meta (object, optional) - Free-form metadata object. orgDetails (object, optional) - Organization display details object (overwritten with the organization name on create). runCollection (object, optional) - Landing page (run collection) data object. uniqueTabId (string, optional) - Optional browser tab id used only to suppress the realtime socket echo to the calling tab; agents can omit it. POST https://api.docstar.io/orgs/:orgId/collections

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • create_endpointCreates a new API endpoint doc (page type 4, draft) as the last child of the given page.1 finding

    Why it is in this group

    • The name "create_endpoint" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,424 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...ents can omit it. POST https://api.docstar.io/orgs/:orgId/pages/:pageId/endpoints"

      What this check looks for
    Description, as the server wrote it
    Creates a new API endpoint doc (page type 4, draft) as the last child of the given page. Requires READ_WRITE permission. Publish it afterwards with Update Endpoint State (parent page must be published). Body fields: name (string, optional) - Endpoint title shown in docs. urlName (string, optional) - URL slug; derived from name if omitted and made unique. requestType (string, optional) - HTTP method: GET, POST, PUT, PATCH, DELETE, etc. URL (string, optional) - Request URL (may contain {{variables}}). description (string, optional) - Endpoint description (HTML/text). body (object, optional) - Request body definition, e.g. {"type":"JSON","raw":{"rawType":"JSON","value":"{...}"}}; type can be none, JSON, TEXT, XML, HTML, multipart/form-data, application/x-www-form-urlencoded. headers (object, optional) - Headers keyed by name: {"Authorization":{"checked":"true","value":"Bearer {{token}}","description":""}}. params (object, optional) - Query params keyed by name, same shape as headers. pathVariables (object, optional) - Path variables keyed by index: {"0":{"checked":"notApplicable","key":"id","value":"","description":"Payment id"}}. bodyDescription (object, optional) - Per-field body docs: {"amount":{"value":100,"type":"number","description":"Amount in cents"}}. sampleResponse (array, optional) - Sample responses: [{"title":"Success","status":200,"description":"","data":{...}}]. authorizationData (object, optional) - Auth config object (or null). preScript (string, optional) - Pre-request JavaScript. postScript (string, optional) - Post-response test JavaScript. docViewData (array, optional) - Order of doc sections, e.g. [{"type":"host"},{"type":"body"},...]; default set if omitted. state (number, optional) - 0 pending, 1 draft (default), 2 approved, 3 rejected. Use Update Endpoint State to publish. uniqueTabId (string, optional) - Optional browser tab id used only to suppress the realtime socket echo to the calling tab; agents can omit it. POST https://api.docstar.io/orgs/:orgId/pages/:pageId/endpoints

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • create_pageCreates a new page as the last child of the page given in the path.No findings

    Why it is in this group

    • The name "create_page" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a new page as the last child of the page given in the path. Pass the collection's rootParentId (invisible root, from List Collections) to create a top-level page (type 1, parent page/module); pass any other page id to create a subpage (type 3). The type is decided by the parent, not the body. New pages start as draft (state 1); passing state 2 publishes immediately (parent must already be published) and returns publicUrl. Requires READ_WRITE permission. To write the page body afterwards use Update Page Content. Body fields: name (string, required) - Page title (min 1 char). urlName (string, optional) - URL slug (min 3 chars); made unique among siblings. Derived from name if omitted. contents (string, optional) - Legacy initial HTML/text contents column (editor content is stored in doc-rtc; prefer Update Page Content). state (number, optional) - 0 pending, 1 draft (default), 2 approved/published (publishes right away; parent must be published), 3 rejected. meta (object, optional) - Page metadata object (e.g. {"description":"...","tags":["setup"]}); may include editable boolean. sharingMeta (object, optional) - Sharing settings object, e.g. {"editable":true}. pageType (number, optional) - Accepted (1 or 3) but ignored; the type is derived from the parent page. uniqueTabId (string, optional) - Optional browser tab id used only to suppress the realtime socket echo to the calling tab; agents can omit it. POST https://api.docstar.io/orgs/:orgId/pages/:pageId

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • publish_pagesPublishes many pages/endpoints at once: each page in pageIds gets a new default published version and state 2 (approved/published).Can send data outNo findings

    Why it is in this group

    • The name "publish_pages" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "publish_pages" says "publish": it sends or publishes something to other people.
    Description, as the server wrote it
    Publishes many pages/endpoints at once: each page in pageIds gets a new default published version and state 2 (approved/published). rootParentId (the collection's invisible root page) must also be supplied so it is marked published. Requires READ_WRITE permission. Triggers background search indexing, translation and AI SEO/meta generation, and clears the docs cache. Get ids from List Collections (rootParentId) and List Collection Pages. Body fields: rootParentId (string, required) - 12-char id of the collection's invisible root page (type 0). pageIds (array<string>, required) - Non-empty array of 12-char page/endpoint ids to publish. PATCH https://api.docstar.io/orgs/:orgId/collections/:collectionId/bulkPublish

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • send_feedback_to_docstarSends feedback straight to the DocStar team.Can send data outNo findings

    Why it is in this group

    • The name "send_feedback_to_docstar" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • outboundThe name "send_feedback_to_docstar" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Sends feedback straight to the DocStar team. Use it when the user wants to report a bug, request a feature, flag wrong or missing docs, or share praise about DocStar or this MCP server. Write the message in the user's words and add any useful context, such as the tool or endpoint involved and what went wrong. Who sent it (user and organization) is taken from the signed-in user's token, never from the body. Returns 200 once delivered; 400 for an invalid body; 502 if it couldn't be delivered, in which case tell the user and try again later. Authenticate with the proxy_auth_token header (an `Authorization: Bearer hm_...` DocStar API token or a DocStar JWT is also accepted). Body fields: message (string, required) - The feedback, 1 to 5000 characters.type (string, optional) - One of bug, feature_request, docs, praise, other; default other.collectionId (string, optional) - The collection the feedback is about, if any.context (object, optional) - Extra details, e.g. the tool or endpoint used, the request and the error. POST https://api.docstar.io/feedback/ai

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • update_endpointPartially updates an API endpoint doc; send only fields to change (same fields as Create Endpoint).1 finding

    Why it is in this group

    • The name "update_endpoint" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    Findings

    • Info

      The description is 2,302 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...agents can omit it. PUT https://api.docstar.io/orgs/:orgId/endpoints/:endpointId"

      What this check looks for
    Description, as the server wrote it
    Partially updates an API endpoint doc; send only fields to change (same fields as Create Endpoint). Any update moves a non-pending endpoint back to draft (state 1), so republish with Update Endpoint State. Requires READ_WRITE permission. Only works for type 4/5 items (otherwise 400 "Wrong Route"). Invalid fields return 400 with the validation message. Body fields: name (string, optional) - Endpoint title shown in docs. urlName (string, optional) - New URL slug; made unique among siblings. Left unchanged if omitted (it is not re-derived from name). requestType (string, optional) - HTTP method: GET, POST, PUT, PATCH, DELETE, etc. URL (string, optional) - Request URL (may contain {{variables}}). description (string, optional) - Endpoint description (HTML/text). body (object, optional) - Request body definition, e.g. {"type":"JSON","raw":{"rawType":"JSON","value":"{...}"}}; type can be none, JSON, TEXT, XML, HTML, multipart/form-data, application/x-www-form-urlencoded. headers (object, optional) - Headers keyed by name: {"Authorization":{"checked":"true","value":"Bearer {{token}}","description":""}}. params (object, optional) - Query params keyed by name, same shape as headers. pathVariables (object, optional) - Path variables keyed by index: {"0":{"checked":"notApplicable","key":"id","value":"","description":"Payment id"}}. bodyDescription (object, optional) - Per-field body docs: {"amount":{"value":100,"type":"number","description":"Amount in cents"}}. sampleResponse (array, optional) - Sample responses: [{"title":"Success","status":200,"description":"","data":{...}}]. authorizationData (object, optional) - Auth config object (or null). preScript (string, optional) - Pre-request JavaScript. postScript (string, optional) - Post-response test JavaScript. docViewData (array, optional) - Order of doc sections, e.g. [{"type":"host"},{"type":"body"},...]. state (number, optional) - 0 pending, 1 draft, 2 approved, 3 rejected. Accepted, but the server sets state 1 (draft) on every update unless the endpoint is currently pending (0). Use Update Endpoint State to publish. uniqueTabId (string, optional) - Optional browser tab id used only to suppress the realtime socket echo to the calling tab; agents can omit it. PUT https://api.docstar.io/orgs/:orgId/endpoints/:endpointId

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 3Claude Code: ask
  • call_any_read_api_of_docstarRead from any DocStar API endpoint with a GET request for the signed-in user and return { status, ok, headers, data }.Reads text others writeCan send data out1 finding

    Why it is in this group

    • The name "call_any_read_api_of_docstar" says "call": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.

    Findings

    • Warn

      The server marks "call_any_read_api_of_docstar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "call_any_read_api_of_docstar" says "call": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Read from any DocStar API endpoint with a GET request for the signed-in user and return { status, ok, headers, data }. Use it for lookups no dedicated tool covers, once you know the exact endpoint: from the quickstart-docstar skill's recipes, or looked up with get_docstar_api_docs. Never guess a URL. Pass the full url with path variables filled in, the headers the endpoint's docs list, and query params in `query` (not in the url). Send the endpoint's auth header with an empty value "": the user's token is filled in automatically. Never put a token there yourself.

    Annotations the server declares

    • title: Read from the Docstar API
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_mcp_serverGet a collection's MCP server: the url end users connect to, ready-to-paste snippets (a Claude Code command and a JSON config), callbackUrls for the OAuth app, the sign-in setup an…Reads text others write1 finding

    Why it is in this group

    • The name "get_mcp_server" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "get" and "url": it reads web pages, which anyone can write.

    Findings

    • Warn

      The server marks "get_mcp_server" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_mcp_server" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Get a collection's MCP server: the url end users connect to, ready-to-paste snippets (a Claude Code command and a JSON config), callbackUrls for the OAuth app, the sign-in setup and any custom domain. Creates the server if it's missing and syncs its tools with the published endpoints. Call it after publishing to hand the user their MCP URL.

    Annotations the server declares

    • title: Get MCP server
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • quickstart-docstarQuickstart for the Docstar API: find any endpoint in the Docstar docs and call it for the signed-in user.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Quickstart for the Docstar API: find any endpoint in the Docstar docs and call it for the signed-in user. Load this before any Docstar task. Call this to load the full instructions for this skill before doing the task.

    Annotations the server declares

    • title: Quickstart Docstar
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
Only reads 5Show 5 read-only tools
  • get_docstar_api_docsBrowse the DocStar API reference one level at a time, when no dedicated tool on this server does what the user needs.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_docstar_api_docs" says "get": a word for reading.

    What it can reach

    • private-dataThe name "get_docstar_api_docs" says "get" and "doc": it reads documents.
    • private-dataThe description's first sentence says "browse" and "doc": it reads documents.
    • untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Browse the DocStar API reference one level at a time, when no dedicated tool on this server does what the user needs. Call it with {} for the top level: the modules (Collections, Pages, Endpoints, Published Versions, MCP Server, FAQs, Changelogs, Webhooks, URL Mappings, ...) with a short description and the endpoints they hold. Call it with `path` set to a module's link to see inside it, and with an endpoint's link ending in ".openapi.yml" to get that endpoint as an OpenAPI file: method, url, headers, query params, path variables, a body example and sample responses. Fetch only the level you need, and reuse what you already fetched.

    Annotations the server declares

    • title: Browse the Docstar API docs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_collection_pagesReturns all non-deleted pages of a collection (the full sidebar tree, flat) with id, name, urlName, type, parentId, child (ordered child ids), state, isPublished, meta, sharingMeta…Reads text others writeNo findings

    Why it is in this group

    • The name "list_collection_pages" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns all non-deleted pages of a collection (the full sidebar tree, flat) with id, name, urlName, type, parentId, child (ordered child ids), state, isPublished, meta, sharingMeta and the endpoint requestType for endpoint pages. Page types: 0 invisible root, 1 parent page/module (top-level), 3 subpage, 4 API endpoint, 5 example/sample request of an endpoint. States: 0 pending, 1 draft, 2 approved/published, 3 rejected. Use it to find pageIds and the hierarchy. Collection must belong to the caller's org. GET https://api.docstar.io/orgs/:orgId/collection/:collectionId/pages

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_collectionsList the collections (docs sites) in an organization, with each one's id, name, type and the caller's permission (1 read, 2 read-write).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_collections" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "doc": it reads documents.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the collections (docs sites) in an organization, with each one's id, name, type and the caller's permission (1 read, 2 read-write). Each collection also has rootParentId: the parent pageId to use with create_page for a top-level page. Get orgId from list_organizations. Pass exclude=runCollection,environment to keep the response small. Ask the user which collection to work in.

    Annotations the server declares

    • title: List collections
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_organizationsList the DocStar organizations (workspaces) the signed-in user belongs to, with each one's id and name (the list is at data.data).Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_organizations" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "doc": it reads documents.
    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List the DocStar organizations (workspaces) the signed-in user belongs to, with each one's id and name (the list is at data.data). Start every DocStar task here: show the user the organizations and ask which one to use, unless there is only one. The chosen id is the orgId every other DocStar tool needs.

    Annotations the server declares

    • title: List organizations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_docstar_docsSearch DocStar's documentation and guides with a natural-language question, e.g.Reads private dataNo findings

    Why it is in this group

    • The name "search_docstar_docs" says "search": a word for reading.

    What it can reach

    • private-dataThe name "search_docstar_docs" says "search" and "doc": it reads documents.
    • private-dataThe description's first sentence says "search" and "doc": it reads documents.
    Description, as the server wrote it
    Search DocStar's documentation and guides with a natural-language question, e.g. "how do I add a custom domain to my docs?" or "how does sign-in work on my MCP server?". Returns the most relevant passages with their page URLs. Use it for how-to and concept questions about DocStar. To find an API endpoint to call, use get_docstar_api_docs instead.

    Annotations the server declares

    • title: Search the Docstar docs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

84 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 3 outbound tools breaks every one.

Reads private data4
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write7
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out3
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__docstar__call_any_read_api_of_docstar",
      "mcp__docstar__publish_pages",
      "mcp__docstar__send_feedback_to_docstar"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

2 warn3 info
  • The server marks "call_any_read_api_of_docstar" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "call_any_read_api_of_docstar" says "call": a word for a change.

    What this check looks for
  • The server marks "get_mcp_server" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_mcp_server" says "get": a word for reading.

    What this check looks for
  • The description is 2,682 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ling tab; agents can omit it. POST https://api.docstar.io/orgs/:orgId/collections"

    What this check looks for
  • The description is 2,424 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...ents can omit it. POST https://api.docstar.io/orgs/:orgId/pages/:pageId/endpoints"

    What this check looks for
  • The description is 2,302 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...agents can omit it. PUT https://api.docstar.io/orgs/:orgId/endpoints/:endpointId"

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http docstar https://mcp.docstar.io/mcp
claude mcp add --transport http docstar https://mcp.docstar.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__docstar__search_docstar_docs",
      "mcp__docstar__get_docstar_api_docs",
      "mcp__docstar__list_organizations",
      "mcp__docstar__list_collections",
      "mcp__docstar__list_collection_pages"
    ],
    "ask": [
      "mcp__docstar__call_any_read_api_of_docstar",
      "mcp__docstar__get_mcp_server",
      "mcp__docstar__quickstart-docstar"
    ],
    "deny": [
      "mcp__docstar__call_any_api_of_docstar",
      "mcp__docstar__create_collection",
      "mcp__docstar__create_endpoint",
      "mcp__docstar__update_endpoint",
      "mcp__docstar__create_page",
      "mcp__docstar__publish_pages",
      "mcp__docstar__send_feedback_to_docstar"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as docstar. Review it before you use it.

Capability tags behind 10 rules
  • mcp__docstar__search_docstar_docs private-data
  • mcp__docstar__get_docstar_api_docs private-data, untrusted-input
  • mcp__docstar__call_any_api_of_docstar untrusted-input
  • mcp__docstar__call_any_read_api_of_docstar untrusted-input, outbound
  • mcp__docstar__list_organizations private-data, untrusted-input
  • mcp__docstar__list_collections private-data, untrusted-input
  • mcp__docstar__get_mcp_server untrusted-input
  • mcp__docstar__publish_pages outbound
  • mcp__docstar__list_collection_pages untrusted-input
  • mcp__docstar__send_feedback_to_docstar outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.swayammaheshwari/docstar-mcp/verify?hash=7668a790871b135f2d34d717541e78fb42758fcdb8686116c3f5b9176f214088" | jq -e '.changed == false'

Pinned hash 7668a790871b, from Oct 26, 2026, 11:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.swayammaheshwari/docstar-mcp/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.swayammaheshwari/docstar-mcp
[![anlyon.dev](https://anlyon.dev/badge/io.github.swayammaheshwari/docstar-mcp.svg)](https://anlyon.dev/servers/io.github.swayammaheshwari/docstar-mcp)

Source: MCP Registry. Synced Oct 26, 2026, 11:18 UTC.