Skip to main content
Glama
bemnetbeshah

Interview Prep MCP Server

by bemnetbeshah

Interview Prep MCP Server

An MCP server that lets Claude and ChatGPT share the same study-progress database for interview prep, coursework, and spaced repetition. The current architecture supports multiple authenticated subjects in one database, with each user's tools scoped to their own study data.

The product source of truth is interview_prep_mcp_prd.md.

What It Implements

  • Study hierarchy: Study -> Topic -> Subtopic.

  • Append-only quiz attempts with score, model notes, and optional question text.

  • Subtopic state snapshots with mastery, ease factor, interval, next review date, and streak.

  • Server-side SM-2 scheduling so LLM clients never calculate intervals.

  • MCP tools for reads, writes, and hierarchy management.

  • Public-safe MCP initialization instructions that guide clients through the review loop and data boundaries.

  • MCP prompts for due reviews, study-plan creation, progress review, and account data requests.

  • Postgres persistence for production and SQLite fallback for local development.

  • Per-user data isolation using the authenticated token subject.

  • Repo-local Codex plugin packaging for development and workspace installs.

Related MCP server: acheron-mcp-server

Local Setup

python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"

Run

interview-prep-mcp

By default the server uses stdio transport and stores data in data/interview_prep.sqlite3.

Useful environment variables:

Variable

Default

Description

INTERVIEW_PREP_DB_PATH

data/interview_prep.sqlite3

SQLite database path.

DATABASE_URL

unset

Postgres connection URL. Takes precedence over SQLite when set.

MCP_TRANSPORT

stdio

FastMCP transport, for example stdio or streamable-http depending on the installed MCP SDK.

MCP_HOST

127.0.0.1

Host for HTTP transports.

MCP_PORT / PORT

8000

Port for HTTP transports. PORT is checked first for platform hosts.

OAUTH_LOGIN_SECRET

unset

Enables approval-secret OAuth for ChatGPT Developer Mode when set.

MCP_BEARER_TOKEN

unset

Enables static bearer-token auth when set and OAuth is unset.

MCP_ALLOW_UNAUTHENTICATED_HTTP

false

Allows unauthenticated HTTP only for non-public development.

OIDC_ISSUER_URL

unset

Enables public OIDC/JWT bearer-token verification when set.

OIDC_JWKS_URL

<issuer>/.well-known/jwks.json

JWKS endpoint for validating OIDC access tokens.

OIDC_AUDIENCE

unset

JWT audience required for public OIDC launch, usually interview-prep-mcp.

OIDC_SUBJECT_CLAIM

sub

JWT claim used as the stable study owner subject.

OIDC_REQUIRED_SCOPES

study:read study:write

Required access-token scopes for MCP tool calls.

PUBLIC_SERVICE_NAME

Interview Prep MCP

Name shown on public informational pages.

PUBLIC_CONTACT_EMAIL

support@example.com

Support/privacy contact shown on public pages.

RATE_LIMIT_PER_MINUTE

120

In-memory per-subject MCP tool-call limit per service instance.

MCP_DEFAULT_SUBJECT

bem

Owner subject used for local unauthenticated runs and simple single-subject auth.

Multi-User Architecture

The public-ready data model scopes all studies by owner_subject, and all topic, subtopic, attempt, and review-state access is validated through that owning study. MCP tools do not accept a user_id; hosted requests derive the subject from the OAuth or bearer token so clients cannot select another account by passing an id.

For public deployments, configure OIDC_ISSUER_URL and related OIDC settings so access tokens are issued by a real identity provider and each user gets a stable owner_subject.

The included OAuth approval-secret flow remains best suited to private or invite-only deployments.

Remote HTTP transports refuse to start without OAuth or bearer auth unless MCP_ALLOW_UNAUTHENTICATED_HTTP=true is explicitly set for non-public development.

Tools

The server exposes the PRD tool surface:

Tool

Purpose

list_studies

Return all active studies.

list_topics

Return topics within a study.

list_subtopics

Return subtopics within a topic with current mastery.

get_due_subtopics

Return due review items, optionally scoped to a study.

get_subtopic_history

Return attempts, trend, and scheduling state for one subtopic.

export_my_data

Export all studies, topics, subtopics, attempts, and review state for the authenticated user.

delete_my_data

Hard-delete all study data for the authenticated user after explicit confirmation.

log_attempt

Record a score and notes, then update SM-2 scheduling.

create_study

Add a study.

create_topic

Add a topic under a study.

create_subtopic

Add a subtopic under a topic.

update_subtopic

Edit subtopic name or description.

delete_study

Soft-delete a study.

delete_topic

Soft-delete a topic.

delete_subtopic

Soft-delete a subtopic.

Prompts

The server also exposes MCP prompts for common workflows:

Prompt

Purpose

review_due_items

Start a due-review session and log each attempt.

create_study_plan

Create or extend a study hierarchy with approval before writes.

review_progress

Summarize due work, weak spots, and trends using read tools.

account_data_request

Route export and deletion requests through the right account-data tools.

Test

python -m unittest discover -s tests

Before packaging or submitting a public release, run the combined local gate:

python3 scripts/release_check.py

To produce a shareable plugin archive for review or manual distribution:

python3 scripts/package_plugin.py

To produce a machine-readable OpenAI app submission packet:

python3 scripts/build_submission_packet.py

To produce a machine-readable MCP contract snapshot:

python3 scripts/build_mcp_contract_snapshot.py

To compare a previous reviewed snapshot against a new build:

python3 scripts/diff_mcp_contract.py previous-mcp-contract-snapshot.json dist/mcp-contract-snapshot.json

To update plugin distribution metadata when moving to a custom domain:

python3 scripts/manage_public_urls.py --base-url https://interview-prep.example.com --write --check

The same release gate runs in GitHub Actions on pull requests, pushes to main and public-facing-version, and manual workflow dispatch. The workflow uploads the plugin archive, OpenAI submission packet, MCP contract snapshot, and public launch docs as CI artifacts.

Deployment Notes

The PRD calls for one hosted remote MCP server reachable by Claude and ChatGPT. This repo supports that path through FastMCP and uses Postgres when DATABASE_URL is configured.

The included Dockerfile runs the server with MCP_TRANSPORT=streamable-http and binds to 0.0.0.0. SQLite remains available for local development or small single-volume deployments.

railway.json pins Railway deployment settings for the Dockerfile builder, /healthz platform healthcheck, and restart policy.

See docs/deployment.md for remote MCP URLs, OAuth, bearer-token auth, and client connection examples.

See docs/public-launch.md for the recommended public hosting, database, auth, OpenAI app submission, Claude connector, and Codex plugin plan.

See docs/public-auth.md, docs/oidc-provider-setup.md, and docs/production-env.example for the external OIDC provider contract, setup runbook, and production environment template.

The hosted service also serves public review/support pages:

  • / for a product overview and MCP endpoint.

  • /privacy for privacy disclosures.

  • /terms for service terms.

  • /support for contact and troubleshooting.

  • /healthz for non-secret service health metadata.

See docs/openai-submission.md for app review metadata and test prompts.

After deploying, run the public endpoint verifier:

python3 scripts/release_check.py
python3 scripts/check_production_config.py
python3 scripts/verify_public_deployment.py https://your-app.example.com
MCP_AUTH_TOKEN=... python3 scripts/verify_authenticated_mcp.py https://your-app.example.com/mcp

To seed reviewer-safe demo data:

DATABASE_URL=... python3 scripts/seed_demo_data.py --subject reviewer-demo --with-attempts

Codex Plugin

This repo includes a Codex plugin bundle at plugins/interview-prep-mcp and a repo marketplace at .agents/plugins/marketplace.json. The plugin points Codex at the hosted Railway MCP endpoint and bundles a skill that guides study-review workflows.

If Codex does not discover the repo marketplace automatically, add it from the repo root:

codex plugin marketplace add .

For a shareable archive, run python3 scripts/package_plugin.py. The generated dist/interview-prep-mcp-<version>.plugin.zip contains the plugin manifest, MCP server config, skill, assets folder, and folder indexes.

Available Tools

15 tools
create_studyB

Add a new study area.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable study name.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, non-idempotent, non-destructive operation, and the description confirms the creation effect with 'Add a new study area.' However, it adds little beyond this: no details about duplicate-name behavior, permissions, or return value are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler or redundancy. The core action is front-loaded and appropriately sized for a simple one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter create operation, the description is minimally sufficient, but it leaves gaps around the study hierarchy and behavior on success. Since siblings include create_topic and create_subtopic, specifying that a study is the parent-level entity would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single required 'name' parameter with the description 'Human-readable study name.' The tool description adds no additional meaning beyond what the schema provides, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Add') and resource ('study area'), matching the tool name. It clearly refers to creating a study-level entity, but it does not explicitly distinguish itself from the sibling create_topic and create_subtopic tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use create_study versus create_topic or create_subtopic. The description simply states the action and gives no exclusions, prerequisites, or routing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_subtopicA

Add a subtopic under a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable subtopic name.
topic_idYesTopic id returned by list_topics or create_topic; never a user id.
descriptionNoOptional description of what mastery looks like.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a write operation (readOnlyHint=false) and not idempotent or destructive. The description adds only the hierarchical relationship ('under a topic') and does not discuss failure behavior, uniqueness, whether the parent must exist, or what happens on success. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It conveys the core operation and hierarchy relationship in minimal words while remaining unambiguous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter creation tool with full schema coverage and annotations, the description is minimally viable. However, it omits helpful context such as the need for the parent topic to exist, any return behavior, and how duplicates are handled. This is not critical for invocation but leaves several edge-case questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no parameter-specific detail, which is acceptable because the schema already explains topic_id, name, and description sufficiently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Add') and a specific resource ('a subtopic under a topic'), immediately establishing that this creates a child of a parent topic. This clearly differentiates it from sibling create_topic while remaining easy to understand.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'under a topic' implies this should be used only when there is an existing parent topic, but the description gives no explicit when-to-use guidance or mention of alternatives like create_topic for top-level topics. The usage context is inferable, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_topicA

Add a topic under a study.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable topic name.
study_idYesStudy id returned by list_studies or create_study; never a user id.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that this is a mutating, non-idempotent operation, so the description does not need to restate that. It adds the useful constraint that topics are parented to a study. It doesn't mention consequences like duplicate-name behavior or whether the study must already exist, but this is a minor gap for a simple create.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At seven words, the description is tightly scoped and front-loaded with the verb and object. There is no filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter creation tool, the description plus the fully documented schema is nearly sufficient. It supplies the parent relationship, while the schema supplies field semantics. It would be slightly stronger with an explicit note on uniqueness or an alternative-tool pointer, but nothing essential is missing to make the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters, including a helpful clarification on study_id ('never a user id'), so the description does not need to elaborate. It adds no param-level detail beyond the schema, earning the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Add') on a specific resource ('a topic') with an explicit parent scope ('under a study'). It is not a tautology and maps cleanly onto the required study_id parameter. It doesn't explicitly contrast with create_subtopic, but the hierarchical wording is enough to set it apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys only that this tool is for adding topics under a study; it gives no explicit when-to-use or when-not-to-use guidance relative to siblings like create_subtopic or create_study. The correct usage is implied by the hierarchy in the wording, but no alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_my_dataA
DestructiveIdempotent

Hard-delete all study data for the authenticated user after explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmationYesMust be exactly "DELETE MY STUDY DATA" to hard-delete all study data for the authenticated user.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds meaningful context by specifying hard-delete semantics (permanent removal) and requiring explicit confirmation. This goes beyond the structured hints without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence conveys scope, permanence, and the confirmation requirement without wasted wording. Every phrase 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive action with strong annotations and no output schema, the description is sufficiently complete. It explains what happens, to whom, with what permanence, and under what condition, leaving no critical gap for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single confirmation parameter already documents the exact required string. The description only echoes the need for explicit confirmation, adding no new parameter-level detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('hard-delete'), a clear resource ('all study data for the authenticated user'), and a distinct scope that separates it from per-resource siblings like delete_study, delete_topic, and delete_subtopic. The phrase 'all study data' removes ambiguity about what gets removed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is the tool for deleting the entire authenticated user's study data, and the 'after explicit confirmation' qualifier sets the expected precondition. It does not explicitly name alternatives or say when not to use it, but the scope and sibling list make the intended usage inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_studyB
Idempotent

Soft-delete a study while preserving history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the study, topic, or subtopic to soft-delete for the authenticated user.

TDQS

B3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive, idempotent operation. The description adds meaningful behavioral context by specifying that the deletion is a soft-delete and that history is preserved, which clarifies the tool's effect beyond the raw annotation flags. This is useful context for an agent deciding whether calling this tool is safe and what consequences to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. However, it sacrifices important scope information (topics/subtopics) for brevity, so it is concise but not optimally complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description is underspecified. It omits that the id may reference a topic or subtopic, does not differentiate from sibling delete_topic and delete_subtopic, and does not clarify whether soft-deletion means the item disappears from listings or how history is surfaced. The schema covers the parameter, but the tool-level description leaves important selection and behavioral questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter description is already informative: 'Id of the study, topic, or subtopic to soft-delete for the authenticated user.' The tool description adds no additional parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear action and resource: 'Soft-delete a study while preserving history.' However, it understates the actual scope: the input schema says the id can be a study, topic, or subtopic, and sibling tools delete_topic and delete_subtopic exist, so the description does not distinguish which tool applies to which resource type. This creates ambiguity about whether delete_study is only for studies or also for topics/subtopics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus delete_topic, delete_subtopic, or delete_my_data. It does not explain whether topics/subtopics should be deleted through this tool or through their dedicated siblings. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_subtopicA
Idempotent

Soft-delete a subtopic while preserving history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the study, topic, or subtopic to soft-delete for the authenticated user.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly discloses that deletion is soft and history is preserved, adding meaningful context beyond the annotations' destructiveHint=false. It is consistent with idempotentHint=true, though it does not explain repeated-call behavior or downstream effects on related data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes: the action, the resource, and the key behavioral qualifier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter soft-delete operation, the description is mostly adequate, especially with annotations covering safety and idempotency. But it leaves unresolved the schema's broader id description and the practical effects of soft deletion, such as visibility in list_subtopics or whether history remains queryable via get_subtopic_history.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the description does not need to repeat parameter details. However, the schema's id description ambiguously mentions study, topic, or subtopic, and the description does not resolve this inconsistency or clarify whether only subtopic ids are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource, 'Soft-delete a subtopic,' and adds a meaningful qualifier, 'while preserving history,' which distinguishes it from hard-delete operations. However, the schema's id description says 'study, topic, or subtopic,' which muddies exactly what resource the tool deletes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus delete_topic, delete_study, or delete_my_data. The description does not state exclusions, prerequisites, or consequences such as whether soft-deleted subtopics disappear from listings or can be restored, so the agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_topicA
Idempotent

Soft-delete a topic while preserving history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesId of the study, topic, or subtopic to soft-delete for the authenticated user.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey non-destructive and idempotent behavior, and the description adds valuable context by explicitly saying 'soft-delete' and 'preserving history.' This explains why destructiveHint is false and clarifies that history is retained, going beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every word adds value, and the key behavioral qualifier 'while preserving history' is included without bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one required parameter, full schema coverage, and annotations, the description is nearly sufficient. The only notable ambiguity is that the id accepts study, topic, or subtopic while the description says 'topic,' but the schema resolves this at call time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents the id parameter. The tool description adds no parameter-level meaning beyond what the schema provides, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation—'Soft-delete a topic while preserving history'—with a specific verb and resource. It does not explicitly differentiate from sibling delete_study/delete_subtopic, and the id schema's 'study, topic, or subtopic' scope introduces minor ambiguity, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool instead of delete_study or delete_subtopic, nor when not to use it. The resource name implies scope, but the broader id description makes the lack of explicit routing a meaningful gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_my_dataA
Read-onlyIdempotent

Export all study data for the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope context ('all study data', 'authenticated user') but does not disclose behavioral details like output format, download behavior, or whether the export is synchronous or asynchronous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence with no filler. It front-loads the key information: the operation, the resource scope, and the user scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only export tool, the description is mostly complete. It could be improved by noting the output format or return behavior, but the annotations and low complexity reduce the need for extensive elaboration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so there is no parameter meaning left to clarify. The baseline for a zero-parameter tool is 4, and the description appropriately focuses on what the tool does rather than parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Export'), a clear resource ('all study data'), and a scoping qualifier ('for the authenticated user'). This distinguishes it from sibling tools like list_studies, which only list a subset, and delete_my_data, which is destructive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as list_studies or get_subtopic_history. The description does not state whether this is for backups, data portability, or bulk retrieval, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_due_subtopicsA
Read-onlyIdempotent

Return the spaced-repetition queue sorted by overdue-ness.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional maximum number of due subtopics to return.
study_idNoOptional study id returned by list_studies or create_study; never a user id.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds the meaningful trait that results are sorted by overdue-ness, but it does not disclose scope behavior when study_id is omitted or what fields the queue items contain. With annotations covering safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word contributes to the core purpose and ordering behavior, making it easy for an agent to process quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with two optional, fully documented parameters and safety annotations, the description covers the essential purpose and ordering. The main omission is behavior when study_id is null (all studies vs. a default scope) and the absence of an output schema, but the low complexity and strong schema/annotation coverage make this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does 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 schema already explains limit and study_id, including the warning that study_id is not a user id. The description adds no parameter-level detail beyond the fact that the returned queue is ordered by overdue-ness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: returning the spaced-repetition queue ordered by overdue-ness. It is understandable, though it relies on the tool name and the phrase 'spaced-repetition queue' to convey that it returns due subtopics, and it does not explicitly contrast with siblings like list_subtopics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving the review queue, so an agent can infer when to call it, but it provides no explicit when-to-use or when-not-to-use guidance and names no alternatives. The sibling tools are visible in context, yet the description does not route the agent to list_subtopics or get_subtopic_history when a different view is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subtopic_historyA
Read-onlyIdempotent

Return attempts, trend, and state for one subtopic.

ParametersJSON Schema
NameRequiredDescriptionDefault
subtopic_idYesSubtopic id returned by list_subtopics or create_subtopic; never a user id.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds context about what data is returned (attempts, trend, state) but discloses no additional behavioral traits such as error conditions, empty result handling, or rate limits. It is consistent with annotations and adds modest value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action ('Return') and the resource ('attempts, trend, and state for one subtopic'). Every word earns its place, with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only tool with one parameter and no output schema. The description names the three kinds of returned information, which is sufficient for an agent to understand the tool's purpose and basic expected output. It could be more detailed about the exact structure or semantics of 'attempts, trend, and state,' but for the low complexity, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with a clear description for subtopic_id: 'Subtopic id returned by list_subtopics or create_subtopic; never a user id.' The tool description adds no new 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/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return attempts, trend, and state for one subtopic.' It is unambiguous about what the tool does and clearly distinguishes itself from sibling list tools like list_subtopics or get_due_subtopics by targeting a single subtopic's history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for one subtopic' gives clear context for when to use this tool: when attempting to retrieve historical data about a specific subtopic. It doesn't explicitly name alternatives or exclusion conditions, but the purpose is specific enough that an agent can infer appropriate usage relative to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_studiesB
Read-onlyIdempotent

Return all active study areas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safely profile. The description adds the 'active' scoping, which is useful, but it does not disclose return shape, ordering, or pagination 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and resource, and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument read-only list operation, the description is minimally sufficient. However, with no output schema it leaves the return-value structure unstated, and it does niot clarify how 'study areas' relate to the topic/subtopic sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so there is no parameter semantics for the description to add. The baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return all active study areas.' It is not a tautology and is clearly about listing studies rather than topics or subtopics, though it does not explicitly name sibling tools to differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided, and no alternative sibling tools are referenced. The intended usage is only implied by the purpose statement, so an agent must infer when this tool is preferred over list_topics or list_subtopics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_subtopicsA
Read-onlyIdempotent

Return active subtopics within a topic with current mastery state.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYesTopic id returned by list_topics or create_topic; never a user id.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish a safe, idempotent, read-only operation. The description adds useful context by restricting to 'active' subtopics and noting 'current mastery state', but it does not disclose additional behavior such as output shape, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every term ('Return', 'active', 'within a topic', 'current mastery state') adds signal and helps scope the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter, read-only list tool, the description plus annotations and schema are mostly sufficient. The only real gap is the lack of an explicit output structure or mention of whether inactive subtopics are excluded beyond the word 'active', but the tool's simplicity keeps this from being a major omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the only parameter, topic_id, including where it comes from and a caution that it is never a user id. Since schema description coverage is 100%, the description does not need to add parameter-level meaning, and the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return'), a specific resource ('active subtopics within a topic'), and the distinguishing output ('current mastery state'). This clearly separates it from siblings like list_topics, get_due_subtopics, and get_subtopic_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames when to call it: when listing active subtopics of a topic and needing current mastery state. It does not explicitly name alternatives like get_due_subtopics or get_subtopic_history, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_topicsA
Read-onlyIdempotent

Return active topics within a study.

ParametersJSON Schema
NameRequiredDescriptionDefault
study_idYesStudy id returned by list_studies or create_study; never a user id.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'active' scoping detail, which is useful, but it does not mention ordering, pagination, or the exact shape of returned topics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence contains the core action, the resource, and the active-topic filter. 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/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, single-parameter tool, the description plus schema and annotations are mostly adequate. It could be more complete by explicitly noting what fields are returned for each topic, but nothing needed to safely invoke the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameter and already describes study_id as returned by list_studies or create_study, and warns it is never a user id. The description adds little beyond the word 'study,' but the schema is sufficient, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') plus a clear resource and scope: 'active topics within a study.' This immediately distinguishes it from siblings like list_studies (studies, not topics) and list_subtopics (subtopics, not topics).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'within a study' implies the tool is for study-scoped topic listing, and the 'active' filter further narrows intent. However, there is no explicit statement about when to prefer this tool over list_subtopics or get_due_subtopics, nor any when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_attemptA

Record a quiz attempt and update SM-2 scheduling state.

ParametersJSON Schema
NameRequiredDescriptionDefault
scoreYesSM-2 recall score: 1 blackout, 2 incorrect/familiar, 3 effortful correct, 4 mostly correct, 5 fluent.
model_notesYesConcise grading notes from the reviewing assistant.
subtopic_idYesSubtopic id returned by list_subtopics or create_subtopic; never a user id.
question_askedNoOptional exact question or prompt used for the attempt.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so the description carries the burden of behavioral disclosure. It does disclose that the tool records data and mutates SM-2 state, which is useful. However, it does not say whether multiple attempts accumulate, whether prior attempts are overwritten, or what scheduling fields are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It states the primary action and the key side effect efficiently, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with four fully documented parameters, the description plus schema is largely sufficient for an agent to invoke it correctly. It does not detail the return value or exact scheduling changes, but those are secondary given the clear action and complete schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents each parameter, including the score rubric and subtopic_id clarification. The description adds no parameter-specific meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Record') and resource ('quiz attempt') and also names the side effect ('update SM-2 scheduling state'). This clearly differentiates it from sibling list/get/update tools and leaves no doubt about the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies clear usage context: call it when a quiz attempt has been graded and SM-2 scheduling state should be updated. It does not explicitly name alternatives or exclusions, but no sibling tool competes for this action, so the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_subtopicC

Edit a subtopic's name or description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional replacement subtopic name.
descriptionNoOptional description of what mastery looks like.
subtopic_idYesSubtopic id returned by list_subtopics or create_subtopic; never a user id.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and not explicitly destructive; the description's 'Edit' is consistent but adds no behavioral context beyond that. It does not disclose merge semantics for null fields, return value, permissions, or side effects, so it provides little transparency beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is concise, though slightly repetitive of the tool name and parameter names, so it does not reach the exceptional level of fully optimized descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with a fully documented schema and annotations, the description is minimally adequate. However, it omits useful context like partial-update behavior, whether null clears or preserves fields, and what the tool returns, so an agent would benefit from more guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description only restates the field names 'name' and 'description' without adding new semantic meaning such as what omission or null means for each field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Edit') and resource ('subtopic') and names the editable fields ('name or description'). It is clear enough to be distinguished from create_subtopic, delete_subtopic, and list_subtopics, though it does not explicitly call out alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus siblings such as create_subtopic, delete_subtopic, or list_subtopics. There are no prerequisites, exclusions, or alternative routing, so an agent must infer usage solely from the verb 'Edit'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.1.0
    • First observedcreate_study
    • First observedcreate_subtopic
    • First observedcreate_topic
    • First observeddelete_my_data
    • First observeddelete_study
    • First observeddelete_subtopic
    • First observeddelete_topic
    • First observedexport_my_data
    • First observedget_due_subtopics
    • First observedget_subtopic_history
    • First observedlist_studies
    • First observedlist_subtopics
    • First observedlist_topics
    • First observedlog_attempt
    • First observedupdate_subtopic

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource or action: study hierarchy reads/creates/deletes, attempt logging, due queue, history, and data privacy. list_subtopics and get_due_subtopics are clearly different because one returns all subtopics while the other returns the spaced-repetition queue.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern with hierarchical nouns: list_*, create_*, delete_*, and get_*. Pluralization is predictable, and no mixed casing or vague verbs are present.

Tool Count5/5

15 tools is at the upper bound of the ideal range, but each tool earns its place by covering study hierarchy management, spaced-repetition workflow, history inspection, and user data controls. The scope matches the server's stated purpose without unnecessary redundancy.

Completeness3/5

The core hierarchy and spaced-repetition workflow are well covered, but update_study and update_topic are missing while update_subtopic exists. This creates an incomplete CRUD surface for higher-level resources; agents cannot rename or edit a study or topic without deleting and recreating it.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables conversation history sharing between ChatGPT and Claude with secure multi-user support. Allows users to save, load, search, and manage conversations across different AI platforms with cloud deployment options.
    5
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Personal RAG database and semantic search built from inside your AI chat. Store knowledge, voice, and skills; Claude and ChatGPT create work that sounds like you.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables Claude to remember conversations and learn over time by storing and recalling messages, memory abstracts, and recent history using a local SQLite database.
    4
    21
    72
    MIT

Latest Blog Posts

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/bemnetbeshah/interview-and-learning-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server