Skip to main content
Glama

The Research Methods Library is a Model Context Protocol (MCP) server. Given a research question, it recommends candidate designs, states their identifying assumptions, returns runnable R and Python code, and supplies a formatted citation for every source consulted. Its index contains approximately 17,000 sections from 8 books, an R package, and the author's research articles (listed under Sources) covering causal inference, econometrics, experimental design, marketing research, credit scoring, machine learning, and artificial intelligence.

The server works with Claude, ChatGPT, Amazon Bedrock AgentCore, Cursor, Visual Studio Code, and any other MCP-compatible client. Access is free and requires no account or API key.

Installation

Endpoint: https://research-methods-mcp.vercel.app/mcp. Access is free and requires no account or API key.

Add to Cursor Install in VS Code

Client

Configuration

Claude (web, desktop, and mobile)

Settings → Connectors → Add custom connector; enter the endpoint

Claude Code

claude mcp add --transport http research-methods https://research-methods-mcp.vercel.app/mcp

ChatGPT

Settings → enable developer mode → add a custom connector of type MCP server with the endpoint and no authentication

Amazon Bedrock AgentCore

Add the endpoint as an MCP server target of an AgentCore Gateway, with no outbound authorization: agentcore add gateway-target --name research-methods --type mcp-server --endpoint https://research-methods-mcp.vercel.app/mcp --gateway <gateway>, then agentcore deploy

Cursor, Visual Studio Code

Use the buttons above

Windsurf, Cline, Zed, and other clients

Add the following JSON to the client's MCP configuration

{
  "mcpServers": {
    "research-methods": {
      "url": "https://research-methods-mcp.vercel.app/mcp"
    }
  }
}

Related MCP server: Cognitive Canvas

Example queries

States raised the minimum wage in different years. How do I estimate the effect on teen employment?

For this query the assistant calls choose_method, which returns staggered difference-in-differences together with its scope conditions, the reason a conventional two-way fixed-effects regression can be biased when treatment effects are heterogeneous, the assumptions to verify, implementations in R (did, fixest, didimputation, HonestDiD) and Python (csdid, pyfixest, differences), and the relevant readings.

The query above answered in Claude through the connector, followed by a request for BibTeX references

Give me Python code for a probability-of-default model with gradient boosting.

Only California passed the law and I have 30 years of state data. What can I do?

Write the methods section for my regression discontinuity and give me BibTeX for the sources.

Each response links to the specific section consulted and carries the citation of the work from which it is drawn.

Tools

Tool

What it does

choose_method

Matches a research question to methods, with when to use each, key assumptions, R and Python packages, and readings. 62 curated methods.

search

Finds sections across all works, with links, snippets, code languages, and a citation. Compatible with ChatGPT deep research.

fetch

Reads a section in full, with its code, link, and citation. Compatible with ChatGPT deep research.

get_code

Runnable R, Python, or Julia code for a task, with the packages it uses.

cite

References in APA, Chicago, MLA, Harvard, BibTeX, or RIS for the sections consulted, deduplicated by work.

list_sources

The works in the library (textbooks, an R package, and research articles), with topics, languages, licenses, and links.

Prompts (slash commands in clients that support them): plan_analysis, write_methods_section, explain_method. Resources: the library catalog and a table of contents for each work.

All tools are read-only. The server makes no calls to language models and stores no information about its users; see the privacy policy.

Sources

Work

Code

Sections

Served

License

A Guide on Data Analysis

Python, R

1,611

Full text

CC BY-NC-SA 4.0

causalverse: The All-in-One Causal Inference Toolkit

R

1,163

Full text and function reference

GPL-3.0

Credit Scoring: Theory, Methods, and Practice

Python

2,578

Full text

CC BY 4.0 text, MIT code

Marketing Research: A Technical and Academic Treatment

Python, R

1,820

Excerpts and code; full text on the website

All rights reserved text, MIT code

AI in Action: A Reference for Artificial Intelligence

Julia, Python

5,750

Excerpts and code; full text on the website

All rights reserved

Advanced Data Analysis

Python, R

1,844

Full text

CC BY 4.0

Applying Tidy Finance with Python to Vietnam

Python

1,334

Excerpts and code; full text on the website

All rights reserved

Tài Chính Ứng Dụng với Python

Python

1,309

Excerpts and code; full text on the website

All rights reserved

Machine Learning in Python

Python

361

Full text

CC BY-SA 4.0

Research Articles and Publications

—

7

Abstracts, DOIs, and citations

Publishers' terms

Sections of A Guide on Data Analysis that appear in the Springer print volumes are cited as their published chapter, then the volume. For example, a section on causal inference is cited as Nguyen, M. (2025). Causal inference. In Experimental design (Vol. 4, pp. 7–48). Springer Cham. https://doi.org/10.1007/978-3-032-01839-7_2, in Nguyen, M. (2025). Experimental design (Vol. 4). Springer Cham. https://doi.org/10.1007/978-3-032-01839-7

Method

The source files of each work (.Rmd, .qmd, .Rd) are parsed into a single index of sections, code blocks, and citations. During index construction every link is verified against the published website: a section whose anchor is absent links to its chapter page, and unpublished pages are excluded. Queries are answered from the in-memory index; no database or language model is involved.

Self-hosting

docker build -t research-methods-mcp .
docker run -p 8080:8080 research-methods-mcp     # http://localhost:8080/mcp

Or with Node.js: npm ci && npm run build && npm start (listens on 127.0.0.1:8787; set HOST and PORT to change). The same handler runs on Vercel through api/index.mjs and vercel.json (the hosted endpoint) and on Deno Deploy through src/deno.ts.

Development

npm ci
npm run build:index   # parse the book repositories (sibling folders) into data/index.json.gz
npm run build         # bundle dist/stdio.js and dist/http.js
npm test              # end-to-end tests through real MCP clients
npm run check-links   # audit every link in the index against the live sites

To add a book, add an entry to sources.yml and rebuild the index. To add or tune a method, edit methods.yml; the build fails if a method points at a section that does not exist.

Citation

Users are asked to cite the works they draw on; the cite tool formats the references. To cite the server itself, see CITATION.cff.

License

The server code is MIT licensed. The content it returns keeps each work's own license, listed above and by the list_sources tool.

Available Tools

6 tools
choose_methodRecommend analysis methodsA
Read-onlyIdempotent
Inspect

Recommend statistical, econometric, causal inference, or machine learning methods for a research question or data analysis task: which statistical test or model fits the data, how to estimate a causal or treatment effect, how to analyze an A/B test or experiment, how many observations are needed (power and sample size), how to handle panel, time-series, survey, text, or survival data, and how to build predictive or credit-scoring models. Describe the question, the data (cross-section, panel, time series, experiment), how the treatment or exposure was assigned, and the outcome. Returns candidate methods with when each applies, key assumptions, R and Python packages, and the library sections that teach them.

NameRequiredDescriptionDefault
limitNoNumber of methods (default 3).
languageNoOnly list packages for this language.
questionYesThe research question and setting, e.g. "effect of a minimum wage increase that some states adopted in different years on teen employment".

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds value beyond that by disclosing the return shape: candidate methods with applicability conditions, key assumptions, R/Python packages, and pointers to library sections. It does not discuss limits (e.g., the default of 3 results) beyond what the schema states.

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 definition is a single dense paragraph but is well front-loaded: purpose and task families come first, input requirements next, return contents last. Every clause adds a distinct capability, though the length borders on an enumeration dump rather than tight prose.

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?

With no output schema, the description compensates by describing what is returned (methods, applicability, assumptions, packages, library sections). Inputs are fully documented in the schema, and the annotations carry the safety profile, so nothing an agent needs to invoke this correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by specifying the content the 'question' parameter should carry (data type, assignment mechanism, outcome) rather than only the schema's single example. It also implicitly ties the 'language' parameter to the packages returned.

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 (recommend) and resource (statistical, econometric, causal inference, or ML methods) and enumerates the concrete task families it covers, from test selection to power analysis to predictive modeling. An agent can tell instantly that this tool maps a research question to candidate methods, distinct from the search/fetch/cite siblings.

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?

It gives clear when-to-use coverage by enumerating the triggering scenarios ('which statistical test or model fits the data', 'how to estimate a causal or treatment effect', 'how to analyze an A/B test'), and it specifies what the caller must describe (question, data structure, treatment assignment, outcome). It names no exclusions or alternative tools, but the sibling set contains no competing recommender, so context is otherwise unambiguous.

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

citeFormat referencesA
Read-onlyIdempotent
Inspect

Format references for works in the library in APA, Chicago, MLA, Harvard, BibTeX, or RIS. Pass the ids of the sections you used to get a deduplicated reference list plus the section links, or pass source ids to cite whole works. With no ids, returns a reference for every work in the library.

NameRequiredDescriptionDefault
idsNoSection ids, or source ids: data_analysis, causalverse, credit_score, marketing_research, ai_in_action, advanced_data_analysis, tidy_finance_vn, tidy_finance_vn_vi, mlpy, publications.
styleNoCitation style (default apa).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavior: deduplication of overlapping section citations, inclusion of section links, and the default all-works behavior when ids are omitted.

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?

Three sentences, front-loaded with the core action and supported styles, followed by the id semantics and the no-id fallback. Every sentence carries information, though the middle sentence is dense enough to require a second read.

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?

With no output schema, the description still conveys what comes back (a reference list, deduplicated, with section links, or one reference per work). Combined with the fully documented two-parameter schema, an agent has everything needed to invoke it correctly.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: it explains that "ids" can be either section ids (yielding deduped references plus links) or source ids (citing whole works). It also confirms the default style when none is passed, which the schema only parenthetically notes.

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?

States a specific verb and resource ("Format references for works in the library") and enumerates the supported styles, so an agent knows exactly what it produces. It does not explicitly differentiate itself from siblings like list_sources or search, so it falls just 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 Guidelines4/5

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

Clearly lays out the three invocation modes: pass section ids to get a deduplicated list plus links, pass source ids to cite whole works, or pass nothing to get every work. It gives strong context for each mode but names no exclusions or alternative tools for related needs.

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

fetchRead a library sectionA
Read-onlyIdempotent
Inspect

Read one section of the library by its section id. Returns the section in Markdown with its code, the section URL, and the citation of the work it comes from. Long sections come in parts; the text names the id of the next part.

NameRequiredDescriptionDefault
idYesSection id, e.g. "data_analysis:sec-regression-discontinuity".

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral context beyond them: the return is Markdown containing code, a section URL and a citation, and long sections are paginated with the next part's id named in the text. It omits any error behavior for bad ids.

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?

Three short sentences, each doing distinct work: purpose, return shape, pagination. The purpose is front-loaded and there is no filler or repetition of the title.

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?

With no output schema present, the description correctly carries the return-value burden by naming the Markdown payload, URL and citation, and it explains the pagination contract an agent needs to fetch subsequent parts. It is nearly complete for a one-parameter read tool, lacking only failure-mode 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?

There is a single required parameter whose schema description already includes a concrete example id at 100% coverage. The description only restates that the section id is the lookup key, adding no format or syntax detail beyond the schema, so the baseline 3 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?

States a specific verb and resource ("Read one section of the library by its section id") and immediately scopes it, which separates it from broad siblings like search. It does not explicitly contrast itself with get_code or cite, so differentiation is implied rather than stated.

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 "by its section id" implies the precondition for calling it, and the note about long sections arriving in parts with a next-part id is genuinely actionable usage guidance. However, it never says when to use this instead of get_code or search, nor what to do when an id is unknown.

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

get_codeGet runnable R, Python, or Julia codeA
Read-onlyIdempotent
Inspect

Get runnable code from the library for a specific statistical, econometric, causal inference, or machine learning task, in R, Python, or Julia. Suited to requests for code that carries out a named estimator, test, or modeling step; it returns code with brief context, not an explanation of the method. Results can be restricted to one language or one work. Returns code blocks with the section they come from, the packages they use, a link, and a citation.

NameRequiredDescriptionDefault
limitNoNumber of sections to return code from (default 4).
topicYesThe task, e.g. "Callaway and Sant'Anna group-time ATT", "rdrobust bandwidth", "WoE binning scorecard".
sourceNoLimit to one work: data_analysis (A Guide on Data Analysis); causalverse (causalverse: The All-in-One Causal Inference Toolkit); credit_score (Credit Scoring: Theory, Methods, and Practice); marketing_research (Marketing Research: A Technical and Academic Treatment); ai_in_action (AI in Action: A Reference for Artificial Intelligence); advanced_data_analysis (Advanced Data Analysis); tidy_finance_vn (Applying Tidy Finance with Python to Vietnam); tidy_finance_vn_vi (Tài Chính Ứng Dụng với Python); mlpy (Machine Learning in Python); publications (Research Articles and Publications).
languageNoProgramming language of the code: r, python, or julia.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results can be restricted to one language or one work, and the return payload includes the originating section, packages, a link, and a citation — valuable since no output schema exists.

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?

Three dense sentences, front-loaded with the core action and scope, then the usage boundary, then the return shape. No filler, though the middle clause is slightly run-on and could be tightened.

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?

With no output schema, the description correctly compensates by describing the return payload (code blocks plus section, packages, link, citation) and the restriction options. Together with the 100%-covered schema and clarifying annotations, an agent has everything needed to call it 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%, including detailed enum labels for every source work, so the schema already carries the parameter meaning. The description only restates the language/work restriction at a high level and adds no syntax or format detail beyond the schema; baseline 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?

States a specific verb+resource ('Get runnable code from the library') with an explicit scope (statistical, econometric, causal inference, or ML tasks) and language range. It also draws the boundary against an explanation-style sibling by saying it 'returns code with brief context, not an explanation of the method,' which lets an agent separate it from choose_method.

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?

Gives a clear positive trigger: 'Suited to requests for code that carries out a named estimator, test, or modeling step.' It also states a negative condition (not an explanation of the method), but never names the alternative tool (e.g., choose_method) or when to prefer it, stopping short of a full when/when-not/alternatives statement.

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

list_sourcesList the works in the libraryA
Read-onlyIdempotent
Inspect

List the works in the library (textbooks, an R package, and research articles) with their topics, code languages, section counts, licenses, links, and how to cite each one. Suited to questions about what the library covers or which work to consult. Takes no parameters and returns one entry per work.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered structurally. The description still adds real behavior beyond that: no parameters are required and the call returns one entry per work, which tells the agent the result granularity in the absence of an output schema.

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?

Three sentences, zero filler: the field enumeration, the usage context, and the calling/return behavior each carry weight. The purpose and scope are front-loaded in the first clause.

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 no-parameter, read-only list tool with no output schema, the description compensates by naming the returned fields and the return granularity (one entry per work). Nothing an agent needs to decide whether and how to call it is missing.

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?

There are zero parameters, so the baseline is 4. The description correctly states 'takes no parameters,' which is consistent with the empty schema and prevents an agent from hunting for filter arguments.

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?

States a specific verb and resource (list the works in the library) and enumerates exactly what each entry contains — topics, code languages, section counts, licenses, links, citation info — so an agent knows the shape of the result. It does not explicitly name a sibling (search, fetch, get_code) to contrast against, so differentiation is implied rather than stated.

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?

"Suited to questions about what the library covers or which work to consult" gives a clear use context and implicitly rules out the lookup-oriented siblings like get_code or cite. There is no explicit when-not-to-use statement or named alternative, so it stops short of a 5.

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.

  1. 3 tool updatesv0.1.1
    • Changedcite1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Section ids from other tools, or source ids: data_analysis, causalverse, credit_score, marketing_research, ai_in_action."New value: +"Section ids, or source ids: data_analysis, causalverse, credit_score, marketing_research, ai_in_action, advanced_data_analysis, tidy_finance_vn, tidy_finance_vn_vi, mlpy, publications."
    • Changedget_code2 fields changed
      • changedInput schema / properties / source / description
        Previous value: -"Limit to one work: data_analysis (A Guide on Data Analysis); causalverse (causalverse: The All-in-One Causal Inference Toolkit); credit_score (Credit Scoring: Theory, Methods, and Practice); marketing_research (Marketing Research: A Technical and Academic Treatment); ai_in_action (AI in Action: A Reference for Artificial Intelligence)."New value: +"Limit to one work: data_analysis (A Guide on Data Analysis); causalverse (causalverse: The All-in-One Causal Inference Toolkit); credit_score (Credit Scoring: Theory, Methods, and Practice); marketing_research (Marketing Research: A Technical and Academic Treatment); ai_in_action (AI in Action: A Reference for Artificial Intelligence); advanced_data_analysis (Advanced Data Analysis); tidy_finance_vn (Applying Tidy Finance with Python to Vietnam); tidy_finance_vn_vi (Tài Chính Ứng Dụng với Python); mlpy (Machine Learning in Python); publications (Research Articles and Publications)."
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "data_analysis",
        -  "causalverse",
        -  "credit_score",
        -  "marketing_research",
        -  "ai_in_action"
        -]New value: +[
        +  "data_analysis",
        +  "causalverse",
        +  "credit_score",
        +  "marketing_research",
        +  "ai_in_action",
        +  "advanced_data_analysis",
        +  "tidy_finance_vn",
        +  "tidy_finance_vn_vi",
        +  "mlpy",
        +  "publications"
        +]
    • Changedsearch2 fields changed
      • changedInput schema / properties / source / description
        Previous value: -"Limit to one work: data_analysis (A Guide on Data Analysis); causalverse (causalverse: The All-in-One Causal Inference Toolkit); credit_score (Credit Scoring: Theory, Methods, and Practice); marketing_research (Marketing Research: A Technical and Academic Treatment); ai_in_action (AI in Action: A Reference for Artificial Intelligence)."New value: +"Limit to one work: data_analysis (A Guide on Data Analysis); causalverse (causalverse: The All-in-One Causal Inference Toolkit); credit_score (Credit Scoring: Theory, Methods, and Practice); marketing_research (Marketing Research: A Technical and Academic Treatment); ai_in_action (AI in Action: A Reference for Artificial Intelligence); advanced_data_analysis (Advanced Data Analysis); tidy_finance_vn (Applying Tidy Finance with Python to Vietnam); tidy_finance_vn_vi (Tài Chính Ứng Dụng với Python); mlpy (Machine Learning in Python); publications (Research Articles and Publications)."
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "data_analysis",
        -  "causalverse",
        -  "credit_score",
        -  "marketing_research",
        -  "ai_in_action"
        -]New value: +[
        +  "data_analysis",
        +  "causalverse",
        +  "credit_score",
        +  "marketing_research",
        +  "ai_in_action",
        +  "advanced_data_analysis",
        +  "tidy_finance_vn",
        +  "tidy_finance_vn_vi",
        +  "mlpy",
        +  "publications"
        +]
  2. 6 tool updatesv0.1.0
    • First observedchoose_method
    • First observedcite
    • First observedfetch
    • First observedget_code
    • First observedlist_sources
    • First observedsearch

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct role: list_sources enumerates works, search finds sections, fetch reads a section, choose_method recommends methods, get_code returns runnable code, and cite formats references. The potential overlap between search, choose_method, and get_code is well separated by description (finding vs. recommending vs. code retrieval). No two tools appear to do the same thing.

Naming Consistency4/5

All names are snake_case and verb-led, which is predictable and readable. However, some follow a strict verb_noun pattern (list_sources, choose_method, get_code) while others are bare verbs (search, fetch, cite), a minor deviation from the stated convention.

Tool Count5/5

Six tools cleanly cover the library's consultation workflow—discovery, retrieval, method recommendation, code access, and citation. Each tool earns its place with no redundancy or padding.

Completeness5/5

As a read-only reference library, the surface covers discovery (list_sources, search), retrieval (fetch), guidance (choose_method), code (get_code), and citation (cite) with no dead ends. The lifecycle for consulting a research methods library is fully covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers