lipi-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Each tool maps to a distinct action/resource pair: create, read, update, rename, delete, list, search, and login are clearly separated. The only mild overlap is between lipi_read_note and lipi_read_note_by_name, but their id-vs-name distinction is described well enough to avoid real confusion.
Naming Consistency4/5All tools share the lipi_ prefix and mostly follow a verb_noun pattern like lipi_create_note and lipi_delete_note. lipi_login and lipi_search are verb-only exceptions, but the overall style remains predictable and uniform.
Tool Count5/5Nine tools is a well-scoped set for a note management server: authentication, CRUD, renaming, listing, and search are all covered without unnecessary duplication. Each tool earns its place.
Completeness5/5The tool surface covers the full note lifecycle: create, read by id, read by name, update with optimistic concurrency, rename/move, delete, list, and search. Auth is handled via lipi_login, and no obvious dead-end operations are missing for the stated domain.
Average 4.2/5 across 9 of 9 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose the resource affected and the success return code (204), and 'Delete' clearly implies destructiveness. However, it does not mention irreversibility, error behavior, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the action, then the success response. Every word serves a purpose, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool, the description gives the core information needed to invoke it: the id and the success status. But it omits failure cases, dependency on prior login (given the lipi_login sibling), and any caveats about deletion being permanent, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states that 'id' is the note id. The description's 'by id' adds no new parameter meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Delete'), a specific resource ('a note'), and the identifying mechanism ('by id'). This also naturally distinguishes the tool from siblings like lipi_update_note, lipi_rename_note, and lipi_read_note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: use this when you want to delete a note by its id. However, the description does not explicitly discuss when not to use it or compare it to alternatives such as update or rename.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully discloses that a 409 path_taken is returned when the target path exists, which signals non-overwriting behavior. But it does not mention success response, whether the id remains stable, or whether the move affects references or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence communicates the core action and a key error behavior without wasted words. The critical operational fact is front-loaded and the 409 detail is valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description provides the essentials: what it does and one major error case. It stops short of describing the success return value or any preconditions, leaving moderate ambiguity for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters. The description adds the rename/move context and the 409 error condition, which gives some meaning, but does not materially expand parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Rename/move a note to a new path') with a clear resource and outcome. This distinguishes it from sibling tools like lipi_update_note, which targets content, and lipi_delete_note, which removes notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a note's path needs to change. However, it does not explicitly contrast with alternatives or state when not to use it, leaving the agent to infer the boundary against update_note and create_note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior. It does so by stating the two possible return shapes (NoteMeta[] and NoteTree[]) and including the field list for the flat result. The word 'List' plus the return-type description clearly signals a non-mutating read operation, though it does not mention auth requirements or any potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core action and return type, the second explains the optional mode. Every token earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is quite complete: it names the result types, lists the fields for the flat list, and explains the tree mode's purpose. The only minor gap is the lack of fields for NoteTree[], but the sidebar use case gives enough context for an agent to proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single boolean parameter with a description ('If true, return directory tree instead of flat list'), giving a high baseline. The description adds further meaning by naming the exact return type NoteTree[] and mentioning the intended use case (sidebar), which goes beyond the schema's terse parameter note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, action-oriented statement: "List all notes in the Lipi vault." It clearly names the resource (notes), the operation (list), and the scope (all), and further distinguishes itself from sibling tools like lipi_search, lipi_read_note, and lipi_create_note by describing a full listing plus an optional directory-tree variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context for the optional parameter: "Use tree=true to get a directory tree NoteTree[] for the sidebar." This implies when the tool should be used (flat listing vs. sidebar tree) but does not explicitly explain when to prefer this tool over lipi_search or lipi_read_note. Usage guidance is present but relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the operation is a read and that it returns the full Note with content and ETag (updatedAt), which signals both non-mutating behavior and the response focus. It does not cover error cases, but for a simple read-by-id tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, purposeful sentences. The action and resource are front-loaded, followed by the return payload. There is no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool, the description is largely complete: it names the operation, the lookup key, and the return value highlights. It omits not-found/error behavior, but the low complexity makes that a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the only parameter, id, is 100% and includes 'Note id (UUID)'. The description merely echoes 'by id' without adding new semantic meaning, so the schema already provides the necessary parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read'), a specific resource ('a single note'), and the lookup method ('by id'). This clearly distinguishes it from the sibling lipi_read_note_by_name and from listing/creating/updating tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: use this when you have a note id and want a single note. It does not explicitly mention the alternative lipi_read_note_by_name, but the 'by id' qualifier implies the appropriate selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses the HTTP method (GET /v1/notes-by-name?name=) and the read-only intent via 'Read'. However, it does not cover behavior when the note is missing (e.g., 404) or any response/return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the core action, the backing endpoint, and the primary use case. The information is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and no annotations, the description covers the essential call semantics, endpoint, and a motivating use case. The only notable gap is behavior on non-existent notes, which is minor for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameter. The description adds practical meaning on top by illustrating valid name formats ('2083-05-12' or 'My Note'), which clarifies what 'name' actually looks like in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('a note') with a distinguishing lookup key ('by name/path basename'), and gives concrete examples ('2083-05-12' or 'My Note'). The dedicated GET endpoint and 'Handy for [[wikilink]] resolution' make it distinguishable from the sibling lipi_read_note without requiring the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use this tool—resolving [[wikilink]] references—which strongly implies the by-name use case. However, it does not explicitly state when NOT to use it or name an alternative like lipi_read_note for other read scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It transparently discloses matching semantics (romanized and literal), return type and fields (SearchHit[] with path, name, score, snippet), and the empty-q behavior. It omits auth requirements or sort order, but the core behavior is well documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler: operation and scope first, then concrete examples, then return behavior and edge case. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description is largely complete: it explains query semantics, return shape, and an edge case. It does not mention authentication prerequisites or pagination, but the low complexity and clear sibling context make those omissions minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers q at 100%, so the baseline is a 3. The description adds meaningful extra value through concrete romanization examples ('mero' → 'मेरो') and the empty-query edge case, enriching what the schema alone communicates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('search'), a resource ('the vault'), and a distinctive behavior (romanized Devanagari matching with literal English fallback). It is clearly differentiated from sibling CRUD/list/read tools because it is the only search operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by framing it as search and showing query examples, but it never explicitly contrasts it with alternatives like lipi_list_notes or lipi_read_note_by_name, nor does it state when not to use it. Guidance is present but only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It goes beyond the basic operation by disclosing the optimistic-locking requirement and the 409 update_conflict behavior, including guidance to re-read and retry. It could add more about success response or permissions, but the key behavioral risks are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: it states the action, defines the required header format, and explains the failure mode and retry strategy. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three required parameters and no output schema, the description provides enough to invoke it correctly: the precondition, value format, conflict response, and suggested recovery action. It does not enumerate every possible error, but those are not essential for a tool of this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds meaningful param context by providing an RFC3339Nano example, allowing an ETag as an alternative, and tying ifMatch to the 'last read' state. This clarifies and extends the ifMatch property description in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Update') on a specific resource ('a note's content'), which clearly distinguishes it from sibling tools like lipi_rename_note or lipi_delete_note. The wording is unambiguous about the operation being performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit workflow: read the note first to obtain ifMatch, then update, and on 409 re-read and retry. It doesn't explicitly name alternatives for creation or read, but the precondition and conflict handling make the intended usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses a meaningful side effect—caching tokens for later tools—and the return content. It does not detail token expiry, storage location, or failure behavior, but this is adequate for a straightforward login tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences each earn their place: what it does, what side effect it has, when to call it, and what it returns. The most critical instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple login tool with no output schema, the description is complete: it names the auth method, the caching behavior, the usage order, and the return payload ('user + vault'). The optional apiUrl parameter is fully documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: email, password, and apiUrl all have clear descriptions in the schema. The description merely restates 'email + password' and adds no semantic value beyond what the input schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Log in to Lipi') with a specific method ('email + password'). It distinguishes this tool from its note-manipulation siblings by being the only authentication entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to invoke it: 'Call this first if you have no token.' It also explains that it caches accessToken + refreshToken for subsequent tools, giving an agent a clear prerequisite relationship with sibling note tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It goes beyond a simple 'creates a note' by revealing the idempotency rule and the HTTP status code difference (200 vs 201), which is exactly the kind of behavioral trait that helps an agent anticipate outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action is front-loaded, the idempotency behavior is directly stated, and the path examples are compact and illustrative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description is largely complete: it covers purpose, idempotency, status codes, and path format. It does not describe the response body or edge cases like auto-creating parent directories, but those are minor gaps given the schema already documents both parameters and no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by providing concrete path format examples ('daily/2083-05-12.md' or 'My Note.md') and by referencing the idempotency key (user_id, path), which clarifies how the path parameter behaves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a note at path with content'), which is specific and unambiguous. The idempotency note and path examples further distinguish this create tool from sibling read/update/delete/search tools without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when to use the tool: when creating a note at a specific path. It also clarifies idempotent behavior, signaling that reusing an existing path will not create a duplicate. However, it does not explicitly mention alternatives like an update tool for modifying existing notes, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/birajrai/lipi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server