springdocs-mcp
A Spring documentation MCP server that searches, retrieves, and explains Spring ecosystem content through 12 schema-exposed tools.
🔍 Search documentation —
search_spring_docsqueries Spring Boot docs by keyword, withdocType(guides/reference/api/all) and resultlimit.📦 Explore projects —
search_spring_projectsfinds Spring projects;get_spring_projectreturns full details for one (e.g.spring-boot).📘 Guides & tutorials —
get_all_spring_guideslists/filters guides;get_spring_guidefetches a guide (summary/medium/full);get_spring_tutorialgives leveled (beginner→advanced) step-by-step tutorials.📖 Reference & concepts —
get_spring_referencepulls sections from Boot, Spring AI, or Framework reference docs (with optional subsection);search_spring_conceptsexplains concepts by category (core, web, data, security, testing, production).🌐 Ecosystem-wide search —
search_spring_ecosystemspans projects, guides, docs, APIs, and Spring AI (scope: all|projects|guides|docs|api|ai).🔀 Version comparison —
compare_spring_versionsdiffs two Boot versions with focus on breaking changes, new features, or deprecations.🏆 Best practices —
get_spring_best_practicesreturns guidance by category (architecture, performance, security…) and experience level.🩺 Troubleshooting —
diagnose_spring_issuesanalyzes an error message and optional stack trace per component (startup, web, data, security, actuator, configuration).⚠️ Note: the README advertises 17 tools (e.g.
get_migration_guide,get_release_notes,get_spring_initializr,find_spring_dependency,spring_cache_stats, prompts/resources), but the schema exposes only 12 tools, and itssearch_spring_docsdocTypeenum lacks the documentedprojects/contentvalues.
Provides tools to search and retrieve Spring documentation, guides, reference materials, and tutorials for the Spring ecosystem, including Spring Boot, Spring AI, and other Spring projects.
Allows searching and retrieving Spring Boot-specific documentation, guides, version comparison, and migration details.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@springdocs-mcpSearch for Spring Boot security best practices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🍃 Spring Documentation MCP Server
🚀 Enhanced v1.4.1: 17 powerful tools with Spring AI support, intelligent caching, advanced tutorials, and comprehensive Spring ecosystem access
🌐 Universal MCP Compatibility: Works with Claude Code, Gemini CLI, VS Code, JetBrains IDEs, and all MCP-compatible clients!
🎯 Quick Start
🔌 Universal MCP Compatibility
This server works with ALL MCP-compatible clients:
Claude Desktop/Code
{
"mcpServers": {
"spring-docs": {
"command": "npx",
"args": ["@enokdev/springdocs-mcp@latest"],
"description": "Spring Documentation MCP Server with 17 powerful tools"
}
}
}Gemini CLI
mcp_servers:
spring-docs:
command: "npx"
args: ["@enokdev/springdocs-mcp@latest"]
description: "Spring Documentation Server"VS Code MCP Extension
{
"mcp.servers": {
"spring-docs": {
"command": "npx",
"args": ["@enokdev/springdocs-mcp@latest"]
}
}
}Any MCP Client (NPX)
npx @enokdev/springdocs-mcp@latestGlobal Installation (All Clients)
npm install -g @enokdev/springdocs-mcp
# Then use: springdocs-mcpDocker (Coming Soon - Docker MCP Catalog)
# Via Docker MCP CLI (when available in catalog)
docker mcp add springdocs-mcp
# Via Docker directly
docker pull mcp/springdocs-mcp:latest
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | \
docker run -i mcp/springdocs-mcp:latestBenefits of Docker distribution:
Enhanced security with cryptographic signatures and SBOMs
Isolated execution environment
Reduced token usage in Docker Desktop
Automatic security updates
Config file locations:
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) /%APPDATA%\Claude\claude_desktop_config.json(Windows)Claude Code:
~/.claude-code/mcp-config.jsonVS Code:
~/.vscode/mcp-settings.jsonJetBrains IDEs:
.jetbrains/mcp-config.json
Related MCP server: MCP AI POC
✨ Features & Tools
The server exposes 17 tools.
📚 Core Documentation (8 Tools)
Tool | Purpose | Example Usage |
| Search Spring documentation ( | "Search docs for WebClient" |
| Find Spring projects | "Find projects about security" |
| Project page as markdown (paginated with | "Show the Spring Data project" |
| List the getting-started guides | "List the guides" |
| Complete guide content | "Get the rest-service guide" |
| Reference documentation for 11 projects ( | "Boot reference, web section" |
| Spring Boot / Framework / Batch migration guides and upgrade notes | "Migration guide to Boot 3.4" |
| Explore Spring concepts (optional | "Explain auto-configuration" |
🚀 Advanced Features (6 Tools)
Tool | Purpose | Example Usage |
| Search the whole ecosystem, Spring AI included | "Find Spring AI vector stores" |
| Step-by-step tutorials | "Tutorial on Spring Security" |
| Version comparison and migration notes | "Compare 3.3 and 3.4" |
| GitHub release notes with focus filter | "Release notes of Boot 3.5" |
| Expert guidance by category | "Best practices for testing" |
| Offline stack trace and error diagnosis | "Diagnose this DataSource error" |
🧰 Tooling (3 Tools)
Tool | Purpose | Example Usage |
| Spring Initializr metadata: Boot versions, dependencies (start.spring.io) | "Which Boot versions does Initializr offer?" |
| Find starters for a need, with Maven and Gradle snippets (optional | "Which dependency for Redis caching?" |
| In-memory cache statistics and optional purge | "Show cache stats" |
📎 Resources
spring://project/<slug>: Spring project page as complete markdown (e.g.spring://project/spring-boot);resources/listenumerates the 11 projects of the registry, the template accepts any project of spring.iospring://guide/<id>: Spring getting-started guide as complete markdown (e.g.spring://guide/rest-service), available through the resource template
💬 Prompts
migrate-boot-version(to_version, optionalfrom_version): plans a Spring Boot upgrade by chainingget_migration_guide,get_release_notesandget_spring_referenceexplain-error(error_message, optionalstack_trace): explains a Spring error by chainingdiagnose_spring_issuesandget_spring_reference
📖 Usage Examples
Basic Search
"Search for REST API documentation in Spring Boot"search_spring_docs and search_spring_concepts accept an optional version (3.4 or 3.4.2, the patch is ignored; current or omitted = latest) that targets the Spring Boot reference documentation of that version (a version that is not published gives a dedicated error). Guides and projects are not versioned and ignore it; with docType=content, Boot reference pages of other versions are left out of the results.
get_migration_guide accepts project (spring-boot by default, spring-framework, spring-batch): Framework serves the release notes of its minor version (6.2, section "Upgrading From ..."), Batch its migration guide (5.0, 6.0), both read as raw markdown from the project wiki; section and offset work as for Boot. Spring Security and Spring AI (docs.spring.io pages) are not covered yet.
search_spring_docs accepts docType=content: full-text search (BM25 ranking) over the pages the server has already read (get_spring_project, get_spring_reference, get_spring_guide). It is included in docType=all and stays empty until a page has been read.
🆕 Spring AI Support
"Get Spring AI ChatClient reference documentation"
"Search for RAG and embeddings in Spring AI"
"Show me Spring AI vector store documentation"
"Find Spring AI LLM integration examples"Ecosystem Exploration
"Search the Spring ecosystem for microservices patterns"Learning Path
"Get a beginner tutorial for REST API development"Problem Solving
"Diagnose 'Failed to configure DataSource' error"Migration Planning
"Compare Spring Boot 2.7.0 and 3.0.0 breaking changes"Best Practices
"Get architecture best practices for expert developers"🔧 Advanced Configuration
Performance Optimization
{
"mcpServers": {
"spring-docs": {
"command": "npx",
"args": ["@enokdev/springdocs-mcp@latest"],
"env": {
"NODE_OPTIONS": "--max-old-space-size=4096",
"REQUEST_TIMEOUT": "15000",
"MAX_RETRIES": "3"
}
}
}
}Corporate/Proxy Environment
{
"mcpServers": {
"spring-docs": {
"command": "npx",
"args": ["@enokdev/springdocs-mcp@latest"],
"env": {
"HTTP_PROXY": "http://proxy.company.com:8080",
"HTTPS_PROXY": "http://proxy.company.com:8080"
}
}
}
}Transport HTTP (optionnel)
Par défaut le serveur parle stdio. Pour l'héberger en local ou en conteneur :
npx @enokdev/springdocs-mcp --transport http --port 3000 # écoute sur 127.0.0.1Option | Variable | Défaut |
|
|
|
|
|
|
|
|
|
(aucune) |
| vide : liste de |
Endpoint MCP : POST /mcp (mode sans état) ; santé : GET /healthz. Aucune authentification : l'écoute reste sur loopback par défaut, et les en-têtes Host/Origin sont contrôlés contre le DNS rebinding. Pour un conteneur, MCP_TRANSPORT=http MCP_HOST=0.0.0.0 avec le port publié (-p 127.0.0.1:3000:3000) ; si le port publié diffère du port interne, déclarer le Host utilisé par le client, par exemple MCP_ALLOWED_HOSTS=localhost:8080.
Le Host doit être de la forme nom:port : un Host sans port (client sur le port 80 ou 443 derrière un reverse proxy, par exemple Host: mcp.example.com) est refusé en 403. Il faut alors le déclarer tel que le proxy le transmet, via MCP_ALLOWED_HOSTS=mcp.example.com (liste séparée par des virgules, comparaison exacte avec l'en-tête reçu).
Jeton GitHub (optionnel)
get_release_notes et compare_spring_versions interrogent l'API GitHub, limitée à 60 requêtes/heure sans authentification. Définir GITHUB_TOKEN (jeton sans scope particulier suffit) relève cette limite à 5000/heure ; le jeton n'est envoyé qu'à api.github.com (jamais à un autre hôte ni après une redirection) et n'est jamais journalisé. En cas de limite atteinte, l'outil échoue immédiatement avec un message clair (délai de reprise inclus) au lieu d'attendre. get_release_notes accepte version en X.Y (ex. 3.5) pour obtenir la dernière release stable de cette mineure ; compare_spring_versions applique focus (breaking-changes, new-features, deprecations).
{ "mcpServers": { "springdocs": { "command": "npx", "args": ["@enokdev/springdocs-mcp@latest"], "env": { "GITHUB_TOKEN": "ghp_..." } } } }🧪 Testing & Development
Quick Test
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | npx @enokdev/springdocs-mcp@latestDevelopment Setup
git clone https://github.com/tky0065/springdocs-mcp.git
cd springdocs-mcp
npm install
npm run build
npm testLoad Testing
# Test multiple tools quickly
for tool in "search_spring_docs" "search_spring_projects" "search_spring_ecosystem"; do
echo "Testing $tool..."
echo "{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/call\", \"params\": {\"name\": \"$tool\", \"arguments\": {\"query\": \"test\", \"limit\": 2}}}" | npx @enokdev/springdocs-mcp@latest > /dev/null
done🆘 Troubleshooting
Common Issues & Solutions
"Server failed to start"
# Check Node.js version (requires 20.18.1+)
node --version
# Update to latest
npm update -g @enokdev/springdocs-mcp
# Clear cache
npm cache clean --force"Tools not responding"
# Test connectivity
curl -I https://spring.io
# Check Claude Desktop config syntax
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | jq ."Slow performance"
Enable caching (automatic in v1.2.3+)
Use specific queries instead of broad searches
Increase memory:
NODE_OPTIONS="--max-old-space-size=4096"
"Port 8080 already in use" (Spring Boot error)
Solution: Change port in application.properties:
server.port=8081"Failed to configure DataSource"
Solutions:
Add database dependency to
pom.xmlConfigure datasource in
application.propertiesExclude auto-configuration:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
Health Check Script
#!/bin/bash
echo "🔍 Testing Spring MCP Server..."
# Test server startup
timeout 10s echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | npx @enokdev/springdocs-mcp@latest > /dev/null
echo $? -eq 0 && echo "✅ Server: OK" || echo "❌ Server: FAILED"
# Test network
curl -s --max-time 5 https://spring.io > /dev/null
echo $? -eq 0 && echo "✅ Network: OK" || echo "❌ Network: FAILED"📊 What's New in v1.2.3
🆕 Major Enhancements
5 new advanced tools for comprehensive Spring ecosystem access
In-memory caching of repeated requests (30 min TTL, 24 h for stable content)
Auto-retry with exponential backoff and a 5 MiB response size cap
Clean architecture with modular services and optimized code
🎯 New Capabilities
Ecosystem-wide search across projects, guides, docs, and APIs
Progressive tutorials with beginner/intermediate/advanced levels
Smart version comparison with detailed migration guidance
Expert best practices categorized by domain and experience level
Intelligent diagnostics for common Spring Boot issues
⚡ Performance & Resilience
Repeated requests are served from the in-memory cache (30 min TTL, 24 h for stable content) without a new network call
The cache is bounded by an estimated memory budget (64 MiB by default, LRU eviction, a single value larger than the budget is not cached); override with
MCP_CACHE_MAX_MB(e.g.MCP_CACHE_MAX_MB=32).spring_cache_statsreports entries and estimated memory used / budgetRetry with exponential backoff and request timeouts on all external HTTP calls
Responses larger than 5 MiB are rejected
🔮 Roadmap
v1.5.0 (Next)
Interactive Spring Boot project generator (Initializr metadata and dependency lookup are already available)
Custom tutorial creation
v1.6.0 (Future)
AI-powered code suggestions
Performance bottleneck detection
Security vulnerability scanning
Automated testing recommendations
🤝 Contributing & Support
Quick Links
Discussions: https://github.com/tky0065/springdocs-mcp/discussions
NPM Package: https://www.npmjs.com/package/@enokdev/springdocs-mcp
Getting Help
Search existing issues on GitHub
Create detailed issue with error messages and steps to reproduce
Join community discussions for questions and feature requests
Development
# Setup development environment
git clone https://github.com/tky0065/springdocs-mcp.git
cd springdocs-mcp
npm install
npm run build
# Run tests
npm test
./test-enhanced.sh
# Submit PR
git checkout -b feature/your-feature
# Make changes
git commit -m "feat: add your feature"
git push origin feature/your-feature🌐 CLI Integration Examples
Claude Code
# Direct usage
claude-code --mcp-server "npx @enokdev/springdocs-mcp@latest"
# With config file
claude-code --mcp-config claude-mcp-config.jsonGemini CLI
# Direct integration
gemini --mcp-server "npx @enokdev/springdocs-mcp@latest"
# With YAML config
gemini --mcp-config gemini-config.yaml
# Environment variable
export GEMINI_MCP_SERVERS='[{"name":"spring-docs","command":"npx","args":["@enokdev/springdocs-mcp@latest"]}]'
gemini "Search for Spring Boot security documentation"Custom API Integration
// Express.js API Gateway example
const { spawn } = require('child_process');
app.post('/spring-docs/:tool', async (req, res) => {
const mcp = spawn('npx', ['@enokdev/springdocs-mcp@latest']);
const request = {
jsonrpc: "2.0",
id: Date.now(),
method: "tools/call",
params: {
name: req.params.tool,
arguments: req.body
}
};
mcp.stdin.write(JSON.stringify(request));
// Handle response...
});Compatibility Testing
# Test MCP protocol handshake
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}' | npx @enokdev/springdocs-mcp@latest
# Test tools listing
echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}' | npx @enokdev/springdocs-mcp@latest
# Test tool execution
echo '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "search_spring_projects", "arguments": {"query": "boot", "limit": 1}}}' | npx @enokdev/springdocs-mcp@latest📄 License & Acknowledgments
License: MIT - see LICENSE file
Thanks to:
Spring Framework Team for excellent documentation
Anthropic for the Model Context Protocol
Spring Community for continuous support
🚀 Ready to explore the Spring ecosystem with enhanced intelligence and performance!
🌐 Universal MCP Compatibility: Works seamlessly with Claude Code, Gemini CLI, VS Code, JetBrains IDEs, and any MCP-compatible client!
Made with ❤️ by EnokDev
Available Tools
17 toolscompare_spring_versionsC
Compare different Spring Boot versions and their features
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | What aspect to focus on in comparison | all |
| version1 | Yes | First Spring Boot version to compare (e.g., '2.7.0') | |
| version2 | Yes | Second Spring Boot version to compare (e.g., '3.0.0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says 'compare' and does not disclose whether the operation is read-only, what the output format is, whether versions must exist, or any side effects or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero filler and the core verb-resource pairing is front-loaded. It is as concise as possible while still conveying the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain what the comparison returns (e.g., a structured diff, feature list, or breaking-change summary). It also omits any mention of the 'focus' parameter or the distinction from sibling tools like get_release_notes, leaving the agent insufficiently informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters including the enum for 'focus' and example version strings. The description adds no further meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Compare') and resource ('Spring Boot versions and their features'), making the tool's purpose immediately clear. It does not, however, differentiate from siblings like get_release_notes or get_migration_guide, so an agent must infer when this tool is preferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance. The description only restates the purpose, leaving the agent to guess whether to call this tool versus get_release_notes or get_migration_guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_spring_issuesC
Diagnose common Spring Boot issues and provide solutions
| Name | Required | Description | Default |
|---|---|---|---|
| component | No | Spring Boot component related to the issue | |
| stack_trace | No | Stack trace (optional, for more specific diagnosis) | |
| error_message | Yes | Error message or issue description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies an advisory read-only operation but never states whether the diagnosis is static or model-generated, what permissions are needed, or whether any state is modified. The absence of an output schema makes the missing disclosure of the response shape more costly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It could stand to spend one more sentence on usage, but nothing present is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description should explain what a diagnosis/solution result looks like and when it is appropriate. Instead it stops at a one-line purpose, leaving the agent unable to anticipate the return format or the tool's limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented and an enum on 'component', so the schema does the heavy lifting. The description adds no context about how error_message, component, and stack_trace interact (e.g., that stack_trace refines the diagnosis), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Diagnose common Spring Boot issues') plus a secondary action ('provide solutions'). It is clearly distinguishable from sibling tools like search_spring_docs or find_spring_dependency, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many retrieval-oriented siblings (search_spring_docs, get_spring_best_practices, etc.). The word 'common' hints at the scope but no prerequisites, exclusions, or alternative conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_spring_dependencyA
Trouve les starters Spring correspondant à un besoin (mots-clés en anglais, ex. 'jpa', 'postgres', 'oauth2') et renvoie leurs coordonnées avec des snippets Maven et Gradle prêts à coller, d'après Spring Initializr
| Name | Required | Description | Default |
|---|---|---|---|
| need | Yes | Besoin exprimé en mots-clés anglais (ex. 'jpa', 'postgres driver', 'oauth2 client') | |
| build | No | Snippets à produire : Maven, Gradle ou les deux | both |
| bootVersion | No | Version de Spring Boot ciblée au format X.Y.Z (ex. '4.0.8') ; par défaut, celle d'Initializr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the response shape (coordinates + ready-to-paste snippets) and the backing source, which is useful context, but says nothing about no-match behavior, whether results are live from Initializr, or any network/permission characteristics. A lookup tool with zero annotation coverage needs a bit more than this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the action and resource, then the return payload, then the source. Nothing is wasted, though the inline examples partially duplicate the schema and the sentence is long enough that the source attribution trails at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 content (coordinates, Maven and Gradle snippets) and provenance. For a 3-parameter lookup tool with full schema coverage, the only real gap is unstated behavior when no starter matches the keywords.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all three parameters (including the build enum and bootVersion format) are documented in the schema itself. The description's mention of English keywords and examples duplicates the schema's 'need' description rather than adding new meaning. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Trouve les starters Spring') and goes further by naming the return payload (coordinates plus Maven/Gradle snippets) and the data source (Spring Initializr). An agent immediately knows what the tool produces, though it never explicitly distinguishes itself from the closely related sibling get_spring_initializr, which appears to share the same data source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing 'correspondant à un besoin' suggests this is for when you need to add a dependency, but there is no statement of when to prefer it over search_spring_ecosystem, get_spring_initializr, or search_spring_projects, and no exclusions. The English-keyword hint is parameter guidance rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_spring_guidesC
Récupère la liste de tous les guides Spring disponibles, optionnellement filtrés par catégorie
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre maximum de guides à retourner | |
| category | No | Catégorie de guides à filtrer (ex: 'Web', 'Data', 'Security', 'Testing') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says it returns an unfiltered-or-filtered list but discloses nothing about pagination behavior, default page size, result ordering, or whether the list is exhaustive despite 'limit' defaulting to 20.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the verb and resource front-loaded and the optional filter mentioned after. No wasted words, though it is arguably terse to the point of under-specification rather than truly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with 100% schema coverage and no output schema, the description is minimally adequate. However, with no annotations, it should say more about return shape and pagination behavior to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'limit' and 'category' are already documented in the schema, including examples and bounds. The description only alludes to the category filter and adds no syntax or semantics beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Récupère la liste de tous les guides Spring') plus an explicit scope ('tous'), making the plural-list nature clear. It does not explicitly distinguish itself from the singular sibling get_spring_guide, but the 'tous' qualifier does most of that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionnellement filtrés par catégorie' hints at the filtering capability but gives no when-to-use guidance, no prerequisites, and no routing toward alternatives like get_spring_guide or search_spring_docs. An 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.
get_migration_guideA
Récupère le guide de migration ou les notes de version d'upgrade de Spring Boot (par défaut), Spring Framework ou Spring Batch pour une version cible, avec filtre par section (ex: jakarta)
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Décalage en caractères pour lire la suite d'une page paginée | |
| project | No | Projet concerné. spring-boot (défaut) : guide de migration / notes de version Boot ; spring-framework : notes de version (section « Upgrading From ») ; spring-batch : guide de migration (disponible pour 5.0 et 6.0). Pages markdown brutes du wiki du projet. | spring-boot |
| section | No | Mot-clé de titre : ne renvoie que les sections correspondantes (ex. 'jakarta') | |
| version | Yes | Version cible du projet (ex. '3.0', '3.4' ou '3.4.2' pour Boot, '6.2' pour Framework, '5.0' pour Batch ; le patch est ignoré) | |
| document | No | Document à lire : auto (Boot : guide de migration pour les versions x.0, notes de version sinon ; Framework : notes de version ; Batch : guide de migration), guide de migration ou notes de version (Framework n'a que release-notes, Batch que migration-guide) | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds useful context (default project, that Batch guides exist only for 5.0/6.0, section keyword matching) and the schema notes raw wiki markdown, but nothing about rate limits, auth, or result format is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verb and resource, with scope qualifiers kept short. It is efficient, though the three-project enumeration plus section filter makes it slightly packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description plus a fully documented schema cover the resolution logic (auto document selection per project) that an agent needs to call it correctly. Missing only explicit routing against sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters in detail (offset, project, section, version, document). The description adds only the default project and a section example, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (récupère) and resource (guide de migration / notes de version) scoped to three named projects for a target version, plus a section filter. It is clear about what it returns, but it does not distinguish itself from the sibling get_release_notes, which plausibly overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys defaults ('Spring Boot (par défaut)') and the section-filter use case, so usage is implied. However it never says when to choose this over get_release_notes or get_all_spring_guides, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_release_notesB
Récupère les notes de release GitHub d'un projet Spring (version précise ou dernière), avec filtre sur les changements majeurs, nouveautés ou dépréciations
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Aspect à mettre en avant : tout, changements majeurs, nouveautés ou dépréciations | all |
| project | No | Projet Spring dont on veut les notes de release | boot |
| version | No | Version de la release (ex. '3.5.0', 'v3.5.0', '4.2.0-M2' ; '3.5' = dernière release stable de cette mineure). Si omise ou 'latest' : dernière version stable. Jeton GitHub optionnel via la variable d'environnement GITHUB_TOKEN (limite de débit relevée) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, but it does disclose genuinely useful traits: the data comes from GitHub (external network source), it is a retrieval operation, and it supports filtering and version resolution. It stops short of noting read-only nature explicitly, auth requirements, or rate limits (the GITHUB_TOKEN note lives in the schema, not the description).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first, then the scoping variants. No padding or repetition, though the parenthetical could be slightly tighter and the sentence is dense for one line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only fetch with a fully described schema, the essentials are present, but with no annotations and no output schema the description does not characterize the return shape (e.g., structured release objects vs. markdown) or the rate-limit/auth context, leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (focus enum, project enum, version) are already fully documented in the schema, including the version examples and token note. The description merely restates the field meaning (version, filter) without adding syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Récupère), resource (notes de release GitHub), scope (projet Spring, version précise ou dernière) and a filter capability (changements majeurs, nouveautés, dépréciations). The function is unambiguous, though it does not explicitly distinguish itself from siblings like get_migration_guide or compare_spring_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description (fetch notes for a specific or latest version, optionally focusing on breaking changes/features/deprecations), but there is no explicit when-to-use, when-not, or named alternative among the many sibling tools. Nothing guides the agent to prefer this over get_migration_guide or compare_spring_versions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_best_practicesB
Get best practices and recommendations for Spring Boot development
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category of best practices | |
| experience_level | No | Developer experience level | intermediate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits beyond the basic purpose; lacks details on side effects, auth, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no extraneous information; highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool, but lacks description of output format or how results are structured; missing detail given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters, but the description adds no extra meaning beyond what the schema provides; baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves best practices and recommendations for Spring Boot development, distinguishing it from siblings like guides or tutorials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like get_spring_guide or search_spring_docs; no context on prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_guideC
Récupère le contenu d'un guide Spring Boot spécifique avec niveau de détail configurable
| Name | Required | Description | Default |
|---|---|---|---|
| guideId | Yes | L'identifiant du guide Spring Boot (par exemple: 'rest-service', 'accessing-data-jpa') | |
| detail_level | No | Niveau de détail: summary (1500 chars), medium (4000 chars), full (50000 chars) | medium |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read operation and mentions a configurable detail level, but says nothing about the returned format (markdown/sections), whether content is truncated, latency, or any auth requirements. The one substantive behavioral fact – the character caps per level – lives in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the core action is front-loaded. It is arguably too terse for the information an agent needs, but as a conciseness measure it wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-parameter read tool with full schema coverage, the description is adequate. With no output schema, however, it should at least sketch what 'contenu' means (e.g. code samples, prose sections, headings), and the French wording is inconsistent with the English sibling/tool naming.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both guideId and detail_level are already fully documented including examples and character limits. The description only restates 'niveau de détail configurable' without adding format or syntax detail, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Récupère) and a clear resource (le contenu d'un guide Spring Boot spécifique), plus a differentiating qualifier ('spécifique') that separates it from the listing sibling get_all_spring_guides. It stops short of naming an alternative, but the verb+resource pair is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. The word 'spécifique' faintly implies this is for a single known guide rather than browsing, but with siblings like get_all_spring_guides, get_spring_tutorial and search_spring_docs the description never tells the agent which one to pick. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_initializrC
Liste les options de Spring Initializr (start.spring.io : build, Java, langage, versions de Spring Boot) ou ses dépendances, avec filtre texte sur l'id, le nom ou la description
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Filtre texte sur les dépendances (id, nom, description), ex. 'jpa' ou 'security'. Ignoré pour section=options | |
| section | No | Ce qu'il faut lister : les options du projet ou les dépendances disponibles | options |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing ("Liste") and reveals a live dependency on start.spring.io, but says nothing about pagination, result size, caching, network failures, or return format for a tool that fetches remote data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opens with the verb and resource before the parenthetical detail, and every clause carries information. It is dense but not padded, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 fully documented parameters and no output schema, the definition is adequate to call the tool. However, with no annotations and no return-value description, it lacks the behavioral detail an agent needs to anticipate results, leaving the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, including the enum, the default, and the maxLength. The description's mention of text filtering on id/name/description restates what the schema already says, adding no syntax or format detail beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (lists) and resource (Spring Initializr options / dependencies), enumerating the option categories (build, Java, language, Spring Boot versions) and naming the backing service start.spring.io. It clearly conveys the two listing modes. It does not, however, explicitly differentiate itself from the close sibling find_spring_dependency, which also concerns dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives. An agent can infer the tool lists Initializr data, but nothing tells it when this is preferable to find_spring_dependency or get_spring_project, so selection among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_projectC
Récupère les détails complets d'un projet Spring spécifique
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Position (en caractères) pour lire la suite d'un document tronqué, fournie dans le pied de la réponse précédente | |
| projectName | Yes | Le nom du projet Spring (ex: 'spring-boot', 'spring-security', 'spring-data') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Récupère' implies a read, but nothing is said about truncation or the continuation flow – even though the schema's offset parameter reveals that responses can be truncated and continued. It also omits whether the operation is safe/idempotent or what happens when projectName is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though arguably too terse for a tool whose response can be truncated and continued.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-required-parameter read tool with full schema coverage, the description is adequate but thin: it never characterises what 'détails complets' includes, and with no annotations and no output schema the agent gets no picture of the return shape or the truncated-response flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (projectName and offset) are already fully documented in the schema, including examples for projectName and the truncation semantics for offset. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Récupère les détails complets d'un projet Spring spécifique'), so an agent knows this is a single-project lookup rather than a search. It does not, however, contrast itself with closely related siblings like get_spring_reference, get_spring_guide or search_spring_projects, and 'détails complets' leaves the exact payload vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of any alternative tool. The agent must infer from the name alone that this is the right call for fetching one project rather than searching or listing projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_referenceC
Get specific section of Spring reference documentation (supports Spring Boot, Spring AI, Spring Framework, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Position (en caractères) pour lire la suite d'un document tronqué, fournie dans le pied de la réponse précédente | |
| project | No | Spring project to search ('boot' for Spring Boot, 'ai' for Spring AI, 'framework' for Spring Framework, 'security' for Spring Security, 'data-jpa' for Spring Data JPA, 'batch' for Spring Batch, 'integration' for Spring Integration, 'kafka' for Spring for Apache Kafka, 'modulith' for Spring Modulith, 'cloud-gateway' for Spring Cloud Gateway, 'cloud-config' for Spring Cloud Config) | boot |
| section | Yes | Documentation section (e.g., 'web', 'data' for Boot; 'chatclient', 'rag' for AI; 'core', 'web' for Framework) | |
| version | No | Version de la documentation (ex: '3.4' ou '3.4.2' ; le patch est ignoré). Omis ou 'current' = dernière version. Les anciennes versions peuvent ne pas être publiées. | |
| subsection | No | Optional subsection for more precise navigation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about output format, pagination behavior, truncation, or authentication requirements. The `offset` parameter description hints at truncated documents, but that's in the schema, not the description. Significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste. Front-loaded with the verb and resource. Very concise, though perhaps too brief to be truly helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description is minimal. It doesn't explain return format, pagination, or how to handle truncated responses despite the offset parameter implying truncation. The description should do more to prepare an agent for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly, including the enum for `project` and the `offset` truncation behavior. The description adds nothing new about parameters. Baseline 3 is appropriate when the schema does all the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Get specific section of Spring reference documentation'. It enumerates supported projects, but it does not distinguish itself from siblings like search_spring_docs or get_spring_guide. It's clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, no mention of alternatives like search_spring_docs for keyword searching. The description only says what it does, not when to choose it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spring_tutorialC
Get step-by-step tutorials for specific Spring Boot features
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Tutorial difficulty level | beginner |
| topic | Yes | Tutorial topic (e.g., 'rest-api', 'jpa', 'security', 'testing') | |
| detail_level | No | Content detail: summary (1500 chars), medium (4000 chars), full (50000 chars) | medium |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no confirmation this is a read-only lookup, no note on caching, latency, or whether results are complete or truncated at the given detail levels. 'Step-by-step' hints at the content style but not at any operational trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is efficient, though its extreme brevity is part of why other dimensions are thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with a fully documented schema, the essentials are present; the required topic and enum defaults are clear from the schema. With no output schema, though, the description should say more about what a tutorial response contains (and how detail_level affects it), leaving a genuine gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so topic, level, and detail_level are already fully documented (including enum meanings and character budgets) in the schema. The description adds nothing parameter-specific beyond the phrase 'specific Spring Boot features', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get step-by-step tutorials') for a defined domain ('specific Spring Boot features'), which is clearer than a bare 'retrieve content' phrasing. However, it offers no differentiation from near-siblings such as get_spring_guide, get_all_spring_guides, or get_spring_reference, so an agent cannot tell from the text alone which source to prefer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools despite a large sibling set covering guides, references, and concepts. 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.
search_spring_conceptsC
Recherche des concepts Spring Boot dans la documentation de référence (titres de sections correspondants, extraits)
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | Le concept Spring Boot à rechercher (par exemple: 'auto-configuration', 'profiles', 'actuator') | |
| version | No | Version de la documentation Spring Boot (ex. '3.4' ou '3.4.2' ; le patch est ignoré ; 'current' ou absent = dernière) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the return content (matching section titles and excerpts), which is mildly useful, but says nothing about ranking, result limits, whether the search is exact or fuzzy, permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical efficiently conveys what is returned. Dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description partially compensates by naming the return content, and the schema covers both parameters. But it omits any routing guidance against the crowded sibling set, leaving a real gap for an agent choosing between the several spring search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the concept and version parameters (including the 'current'/absent semantics and patch-ignoring) are already fully documented in the schema. The description adds nothing beyond it, which matches the baseline 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (recherche) and resource (concepts Spring Boot dans la documentation de référence) and hints at the return shape (section titles, excerpts). However, 'concepts' is vague and it never distinguishes itself from the many sibling search tools (search_spring_docs, search_spring_projects, search_spring_ecosystem, get_spring_reference), so an agent cannot tell which search surface to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion, and no named alternative, despite 17 sibling tools including several near-identical search tools. The agent must infer routing 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.
search_spring_docsC
Recherche dans la documentation Spring Boot avec des mots-clés
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre maximum de résultats à retourner | |
| query | Yes | Les mots-clés à rechercher dans la documentation | |
| docType | No | Type de documentation à rechercher. `content` = recherche plein texte (classement BM25) dans les pages déjà lues par le serveur (get_spring_project, get_spring_reference, get_spring_guide) ; inclus dans `all`. | all |
| version | No | Version de la documentation de référence Spring Boot (ex. '3.4' ou '3.4.2' ; le patch est ignoré ; 'current' ou absent = dernière). Ne s'applique qu'à la partie référence (et aux pages de référence Boot de la recherche plein texte) : les guides et les projets ne sont pas versionnés et ignorent ce paramètre. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, yet it says nothing about return format, ranking, result limits, or server state. Some behavioral context (BM25 ranking, searching previously read pages, version scoping) lives only in the schema parameter descriptions, not in the tool description itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, but also no structure or front-loaded scoping detail. It is adequately sized yet too thin to convey much, landing at the minimum-viable level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the agent must rely entirely on the description and schema. For a 4-parameter search tool with a version-sensitive docType, the description omits return values, ranking behavior, pagination and sibling selection criteria, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema descriptions are notably rich (docType explains BM25/full-text over already-read pages; version explains patch handling and scope). The description adds nothing 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Recherche dans la documentation Spring Boot avec des mots-clés'), so the agent knows it is a keyword search over Spring Boot docs. However, it gives no differentiation from the many sibling search tools (search_spring_concepts, search_spring_ecosystem, search_spring_projects), which is a real ambiguity given the overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling search tools, nor any prerequisites or exclusions. The docType enum hints that the tool spans guides/reference/projects/content, but the description does not turn that into when-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_spring_ecosystemB
Search across the entire Spring ecosystem including all projects, guides, documentation, and Spring AI
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results per category | |
| query | Yes | Keywords to search across the entire Spring ecosystem | |
| scope | No | Scope of search (use 'ai' for Spring AI specific searches) | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does signal that results span multiple content categories (matching the schema's per-category limit). However, it never states that the operation is read-only, how results are grouped or ordered, or any pagination/limit behavior beyond what the schema already declares.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the scope of coverage is stated before any detail. The phrasing 'entire Spring ecosystem' followed by 'including all projects, guides...' is slightly redundant, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search with three well-documented parameters and no output schema, the description is minimally adequate but omits the key decision an agent faces: choosing between this tool and its four search siblings. It also says nothing about result shape or per-category grouping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, limit, and scope are already fully documented in the schema, establishing the baseline of 3. The description adds only marginal meaning, hinting at the Spring AI category that the 'ai' scope enum already exposes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (the entire Spring ecosystem), then enumerates the covered content types: projects, guides, documentation, and Spring AI. It implicitly positions itself as the broad umbrella versus the narrower search_spring_docs / search_spring_projects / search_spring_concepts siblings, but never names them, so differentiation still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'across the entire Spring ecosystem' implies this is the catch-all search, but there is no explicit when-to-use, when-not-to-use, or named alternative among the four sibling search tools. The only routing hint ('use ai for Spring AI specific searches') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_spring_projectsC
Recherche parmi tous les projets Spring disponibles sur spring.io/projects
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Nombre maximum de projets à retourner | |
| query | Yes | Les mots-clés à rechercher dans les projets Spring (ex: 'security', 'data', 'cloud') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that results come from spring.io/projects; there is no statement about result format, ranking, whether data is cached/live, or how the limit parameter shapes output. For a network-backed search tool this leaves real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the verb and the scope. It is appropriately sized for a simple two-parameter tool, though the brevity comes at the cost of the guidance noted above.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 100% schema coverage and no output schema, the essentials for invocation are present. What is missing is disambiguation from the many sibling search/get tools, which matters given how crowded this tool family is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'query' (keywords, with examples) and 'limit' (1-20, default 10) fully documented in the schema. The description adds no additional parameter meaning (e.g., matching behavior, whether limit truncates or paginates), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Recherche") and resource ("projets Spring") with an explicit source scope (spring.io/projects), so the agent knows this searches the project catalog rather than docs or code. It does not distinguish itself from siblings like search_spring_docs, search_spring_concepts, or search_spring_ecosystem, which are superficially similar search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. With four sibling search_* tools plus get_spring_project and find_spring_dependency, the agent is left to guess which search surface applies to its intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spring_cache_statsA
Affiche les statistiques du cache du serveur (entrées, expirées, capacité) et permet de purger les entrées expirées ou tout le cache
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | Purge à effectuer avant d'afficher les statistiques : aucune (lecture seule), entrées expirées, ou tout le cache | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that the tool can mutate state and specifies what is destroyed ('entrées expirées' or 'tout le cache'), which is genuine behavioral value, but it omits reversibility, permission requirements, and any warning that 'all' is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the read behavior and appends the optional mutation. Nothing is padded, though splitting the destructive capability into its own sentence would improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and full schema coverage, the description supplies enough to call it correctly, including the read/write duality. The main omission is any note on the shape or size of the returned statistics and the destructive nature of 'all'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single enum parameter is fully documented in the schema, including that 'none' is read-only and purge runs before display. The description mirrors this at a high level but adds no syntax or default details beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource pair ('Affiche les statistiques du cache du serveur') plus a secondary action (purge), and lists the concrete data exposed (entrées, expirées, capacité). It is clearly a different resource from every sibling (all docs/search/version tools), though it never explicitly contrasts itself with an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer it should call this to inspect cache health or to clean the cache. There is no explicit when-to-use vs when-not-to-use guidance and no prerequisites (e.g. whether purging requires the server to be running or a specific role).
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.
16 tool updates
v1.4.1- Changed
compare_spring_versions2 fields changed- added
Input schema / properties / version1 / maxLengthAdded value: +50 - added
Input schema / properties / version2 / maxLengthAdded value: +50
- Changed
diagnose_spring_issues2 fields changed- added
Input schema / properties / error_message / maxLengthAdded value: +2000 - added
Input schema / properties / stack_trace / maxLengthAdded value: +10000
- Added
find_spring_dependency - Changed
get_all_spring_guides1 field changed- added
Input schema / properties / category / maxLengthAdded value: +100
- Added
get_migration_guide - Added
get_release_notes - Changed
get_spring_guide3 fields changed- changed
Input schema / properties / detail_level / descriptionPrevious value: -"Niveau de détail: summary (1500 chars), medium (4000 chars), full (8000 chars)"New value: +"Niveau de détail: summary (1500 chars), medium (4000 chars), full (50000 chars)" - changed
Input schema / properties / guideId / descriptionPrevious value: -"L'identifiant du guide Spring Boot (par exemple: 'gs-rest-service', 'gs-accessing-data-jpa')"New value: +"L'identifiant du guide Spring Boot (par exemple: 'rest-service', 'accessing-data-jpa')" - added
Input schema / properties / guideId / maxLengthAdded value: +100
- Added
get_spring_initializr - Changed
get_spring_project2 fields changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Position (en caractères) pour lire la suite d'un document tronqué, fournie dans le pied de la réponse précédente", + "maximum": 10000000, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / projectName / maxLengthAdded value: +100
- Changed
get_spring_reference6 fields changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Position (en caractères) pour lire la suite d'un document tronqué, fournie dans le pied de la réponse précédente", + "maximum": 10000000, + "minimum": 0, + "type": "number" +} - changed
Input schema / properties / project / descriptionPrevious value: -"Spring project to search ('boot' for Spring Boot, 'ai' for Spring AI, 'framework' for Spring Framework)"New value: +"Spring project to search ('boot' for Spring Boot, 'ai' for Spring AI, 'framework' for Spring Framework, 'security' for Spring Security, 'data-jpa' for Spring Data JPA, 'batch' for Spring Batch, 'integration' for Spring Integration, 'kafka' for Spring for Apache Kafka, 'modulith' for Spring Modulith, 'cloud-gateway' for Spring Cloud Gateway, 'cloud-config' for Spring Cloud Config)" - changed
Input schema / properties / project / enumPrevious value: -[ - "boot", - "ai", - "framework" -]New value: +[ + "boot", + "ai", + "framework", + "security", + "data-jpa", + "batch", + "integration", + "kafka", + "modulith", + "cloud-gateway", + "cloud-config" +] - added
Input schema / properties / section / maxLengthAdded value: +100 - added
Input schema / properties / subsection / maxLengthAdded value: +100 - added
Input schema / properties / versionAdded value: +{ + "description": "Version de la documentation (ex: '3.4' ou '3.4.2' ; le patch est ignoré). Omis ou 'current' = dernière version. Les anciennes versions peuvent ne pas être publiées.", + "maxLength": 20, + "type": "string" +}
- Changed
get_spring_tutorial2 fields changed- changed
Input schema / properties / detail_level / descriptionPrevious value: -"Content detail: summary (1500 chars), medium (4000 chars), full (8000 chars)"New value: +"Content detail: summary (1500 chars), medium (4000 chars), full (50000 chars)" - added
Input schema / properties / topic / maxLengthAdded value: +200
- Changed
search_spring_concepts3 fields changed- removed
Input schema / properties / categoryRemoved value: -{ - "description": "Catégorie du concept pour filtrer les résultats", - "enum": [ - "core", - "web", - "data", - "security", - "testing", - "production" - ], - "type": "string" -} - added
Input schema / properties / concept / maxLengthAdded value: +200 - added
Input schema / properties / versionAdded value: +{ + "description": "Version de la documentation Spring Boot (ex. '3.4' ou '3.4.2' ; le patch est ignoré ; 'current' ou absent = dernière)", + "maxLength": 20, + "type": "string" +}
- Changed
search_spring_docs4 fields changed- changed
Input schema / properties / docType / descriptionPrevious value: -"Type de documentation à rechercher"New value: +"Type de documentation à rechercher. `content` = recherche plein texte (classement BM25) dans les pages déjà lues par le serveur (get_spring_project, get_spring_reference, get_spring_guide) ; inclus dans `all`." - changed
Input schema / properties / docType / enumPrevious value: -[ - "guides", - "reference", - "api", - "all" -]New value: +[ + "guides", + "reference", + "projects", + "content", + "all" +] - added
Input schema / properties / query / maxLengthAdded value: +200 - added
Input schema / properties / versionAdded value: +{ + "description": "Version de la documentation de référence Spring Boot (ex. '3.4' ou '3.4.2' ; le patch est ignoré ; 'current' ou absent = dernière). Ne s'applique qu'à la partie référence (et aux pages de référence Boot de la recherche plein texte) : les guides et les projets ne sont pas versionnés et ignorent ce paramètre.", + "maxLength": 20, + "type": "string" +}
- Changed
search_spring_ecosystem1 field changed- added
Input schema / properties / query / maxLengthAdded value: +200
- Changed
search_spring_projects1 field changed- added
Input schema / properties / query / maxLengthAdded value: +200
- Added
spring_cache_stats
12 tool updates
v1.2.8- First observed
compare_spring_versions - First observed
diagnose_spring_issues - First observed
get_all_spring_guides - First observed
get_spring_best_practices - First observed
get_spring_guide - First observed
get_spring_project - First observed
get_spring_reference - First observed
get_spring_tutorial - First observed
search_spring_concepts - First observed
search_spring_docs - First observed
search_spring_ecosystem - First observed
search_spring_projects
TDQS
Scored across 17 tools
The three search tools (search_spring_docs, search_spring_concepts, search_spring_ecosystem) heavily overlap in purpose, and get_spring_reference vs search_spring_concepts both target reference docs, making selection genuinely ambiguous. List-vs-detail pairs (get_all_spring_guides/get_spring_guide, search_spring_projects/get_spring_project) are clearer, but the search cluster drags this down.
Most tools follow a clean snake_case verb_noun pattern (get_*, search_*, compare_*). A few deviations (spring_cache_stats as a noun-first name, find_spring_dependency vs the get_/search_ verbs) are minor but noticeable.
At 17 tools this sits in the borderline-heavy range. The breadth (guides, projects, reference, initializr, dependencies) justifies most, but several search tools likely could be consolidated, and spring_cache_stats feels like an unrelated maintenance add-on.
The surface covers the Spring docs domain well: search, guides, project details, reference sections, version comparison, migration, Initializr, and dependency lookup. No major lifecycle dead ends, though the overlap between search tools suggests some redundancy rather than true gaps.
Maintenance
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Build Spring Boot applications, ready for coding agents, including best practices.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides AI assistants with intelligent access to project documentation and API references through smart search, contextual rules, and Docset integration. Enables AI to understand project-specific conventions, patterns, and official framework documentation without token limits.1163 npm6MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI-powered development tools including code generation, refactoring, debugging, performance optimization, and test generation, along with smart prompts for code analysis and documentation, and a built-in knowledge base of coding best practices.MIT
- FlicenseAqualityDmaintenanceProvides AI models with direct access to documentation for over 600 technologies from DevDocs.io, including popular languages, frameworks, and tools. It enables comprehensive searching, content retrieval, and offline access via an intelligent local caching system.122-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch, index, and perform semantic RAG-based searches on API documentation from various sources. It provides tools for hybrid search and collection management, allowing users to access up-to-date documentation from projects like Gemini and FastMCP.-