diff --git a/fr/index-openapi.json b/fr/index-openapi.json
new file mode 100644
index 0000000000..95917be4ab
--- /dev/null
+++ b/fr/index-openapi.json
@@ -0,0 +1,715 @@
+{
+ "openapi": "3.0.1",
+ "info": {
+ "title": "API Mintlify Index",
+ "description": "Recherchez et récupérez de la documentation technique et du contexte web pour vos applications et agents.",
+ "version": "1.0.0"
+ },
+ "servers": [
+ {
+ "url": "https://leaves.mintlify.com/api/universal-search"
+ }
+ ],
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "paths": {
+ "/v1/context": {
+ "post": {
+ "operationId": "buildIndexContext",
+ "summary": "Construire le contexte d’implémentation",
+ "description": "Recherche dans Mintlify Index et renvoie du contenu accompagné de ses sources, assemblé dans une limite de jetons. Utilisez ce point de terminaison lorsqu’une application ou un agent a besoin d’un contexte prêt à l’emploi en une seule requête.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContextRequest"
+ },
+ "example": {
+ "query": "Comment dois-je configurer la mise en cache dans Next.js 16 ?",
+ "product": "Next.js",
+ "format": "txt",
+ "tokenBudget": 3000
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Contexte assemblé avec succès.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContextResponse"
+ },
+ "example": {
+ "requestId": "7f2ab8d1-3bea-4a29-bc51-c05a8d3a3e3c",
+ "query": "Comment dois-je configurer la mise en cache dans Next.js 16 ?",
+ "response": "### Mise en cache et revalidation\n\nSource: https://nextjs.org/docs/app/getting-started/caching-and-revalidating\n\nUtilisez les API de mise en cache actuelles décrites dans ce guide.\n\n--------------------------------",
+ "resultsCount": 3,
+ "outputTokens": 1842
+ }
+ }
+ }
+ },
+ "400": {
+ "$ref": "#/components/responses/BadRequest"
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ },
+ "/v1/search": {
+ "post": {
+ "operationId": "searchIndex",
+ "summary": "Rechercher des connaissances techniques",
+ "description": "Renvoie des résultats classés issus de la documentation gérée par les éditeurs ou du web. Utilisez les identifiants de résultats Mintlify ou l’URL de n’importe quel résultat avec le point de terminaison contents lorsque vous avez besoin de davantage de contenu.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SearchRequest"
+ },
+ "example": {
+ "query": "Mise en cache et revalidation dans Next.js 16",
+ "numResults": 5,
+ "text": {
+ "maxCharacters": 4000
+ },
+ "includeDomains": [
+ "nextjs.org"
+ ]
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Recherche terminée avec succès.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SearchResponse"
+ },
+ "example": {
+ "requestId": "3d8ed0aa-c21c-4a18-b995-207aa6315ea8",
+ "results": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "url": "https://nextjs.org/docs/app/getting-started/caching-and-revalidating",
+ "title": "Mise en cache et revalidation",
+ "text": "La mise en cache est une technique qui consiste à stocker le résultat de la récupération de données et d’autres calculs.",
+ "truncated": false,
+ "totalCharacters": 92,
+ "score": 0.91,
+ "source": "mintlify",
+ "siteName": "nextjs",
+ "breadcrumbs": [
+ "Routeur App",
+ "Premiers pas"
+ ],
+ "publishedDate": null
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "$ref": "#/components/responses/BadRequest"
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ },
+ "/v1/contents": {
+ "post": {
+ "operationId": "getIndexContents",
+ "summary": "Obtenir le contenu des résultats",
+ "description": "Récupère le contenu correspondant aux identifiants de résultats Mintlify ou aux URL de résultats renvoyés par le point de terminaison search. Une requête peut inclure jusqu’à 20 éléments répartis entre les deux champs.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContentsRequest"
+ },
+ "example": {
+ "ids": [
+ "nextjs:/docs/app/getting-started/caching-and-revalidating"
+ ],
+ "query": "revalider les données mises en cache",
+ "maxCharacters": 12000
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "Le corps de la requête n’est pas valide.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "Une requête peut référencer au maximum 20 éléments entre urls et ids"
+ }
+ }
+ }
+ },
+ "200": {
+ "description": "Récupération du contenu terminée. Vérifiez chaque statut pour déterminer si l’élément correspondant a réussi.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContentsResponse"
+ },
+ "example": {
+ "requestId": "6bf694e4-76cb-4d31-a222-c94b2d9b198a",
+ "results": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "url": "https://nextjs.org/docs/app/getting-started/caching-and-revalidating",
+ "title": "Mise en cache et revalidation",
+ "text": "# Mise en cache et revalidation\n\nUtilisez les API de revalidation pour actualiser les données mises en cache.",
+ "truncated": false,
+ "totalCharacters": 78,
+ "score": 0,
+ "source": "mintlify",
+ "siteName": "nextjs",
+ "breadcrumbs": [
+ "Routeur App",
+ "Premiers pas"
+ ],
+ "publishedDate": null
+ }
+ ],
+ "statuses": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "status": "success"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "securitySchemes": {
+ "bearerAuth": {
+ "type": "http",
+ "scheme": "bearer",
+ "bearerFormat": "Clé d’API Mintlify Index",
+ "description": "Clé d’API Mintlify Index avec le préfixe `mint_us_`."
+ }
+ },
+ "responses": {
+ "BadRequest": {
+ "description": "Le corps de la requête n’est pas valide.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "Corps de requête invalide"
+ }
+ }
+ }
+ },
+ "Unauthorized": {
+ "description": "La clé d’API est absente ou invalide, ou l’organisation n’a pas accès à l’API REST Index.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "Non autorisé"
+ }
+ }
+ }
+ },
+ "Forbidden": {
+ "description": "L’adresse IP de la requête n’est pas autorisée par la clé d’API.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "L’adresse IP n’est pas autorisée pour cette clé d’API"
+ }
+ }
+ }
+ },
+ "RateLimited": {
+ "description": "L’organisation a dépassé une limite de débit.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "Limite de débit dépassée. Veuillez réessayer plus tard"
+ }
+ }
+ }
+ },
+ "InternalError": {
+ "description": "Index n’a pas pu terminer la requête.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ }
+ }
+ }
+ }
+ },
+ "schemas": {
+ "ContextRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "query",
+ "format"
+ ],
+ "properties": {
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Question d’implémentation à étudier."
+ },
+ "product": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Nom du produit ou de l’entreprise à utiliser comme indication de récupération supplémentaire."
+ },
+ "format": {
+ "type": "string",
+ "enum": [
+ "txt",
+ "json"
+ ],
+ "description": "Format de la chaîne `response`. `txt` renvoie des sections Markdown. `json` renvoie un objet JSON sérialisé contenant les éléments de résultat."
+ },
+ "includeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "Domaines à inclure dans la récupération."
+ },
+ "excludeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "Domaines à exclure de la récupération."
+ },
+ "tokenBudget": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 6000,
+ "default": 3000,
+ "description": "Nombre maximal de jetons en sortie."
+ }
+ }
+ },
+ "ContextResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "query",
+ "response",
+ "resultsCount",
+ "outputTokens"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "Identifiant unique de la requête."
+ },
+ "query": {
+ "type": "string",
+ "description": "Requête d’origine."
+ },
+ "response": {
+ "type": "string",
+ "description": "Contenu source assemblé. La valeur est au format Markdown pour les requêtes `txt` et au format JSON sérialisé pour les requêtes `json`. La chaîne peut être vide lorsqu’aucun contenu ne tient dans la limite de jetons."
+ },
+ "resultsCount": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "Nombre d’extraits de sources inclus dans la réponse."
+ },
+ "outputTokens": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "Nombre de jetons dans la réponse assemblée."
+ }
+ }
+ },
+ "SearchRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "query",
+ "numResults"
+ ],
+ "properties": {
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Requête de recherche."
+ },
+ "numResults": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 20,
+ "description": "Nombre maximal de résultats à renvoyer."
+ },
+ "text": {
+ "default": false,
+ "description": "Contrôle le contenu des résultats. Définissez `true` pour inclure le contenu correspondant, `false` pour l’omettre, ou fournissez `maxCharacters` pour inclure du contenu tronqué. En l’absence de valeur, le paramètre vaut `false`.",
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "maxCharacters"
+ ],
+ "properties": {
+ "maxCharacters": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "Nombre maximal de caractères de contenu à inclure par résultat."
+ }
+ }
+ }
+ ]
+ },
+ "includeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "Domaines à inclure dans les résultats de recherche."
+ },
+ "excludeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "Domaines à exclure des résultats de recherche."
+ }
+ }
+ },
+ "SearchResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "results"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "Identifiant unique de la requête."
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SearchResult"
+ },
+ "description": "Résultats de recherche classés."
+ }
+ }
+ },
+ "SearchResult": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "url",
+ "title",
+ "text",
+ "score",
+ "source",
+ "siteName",
+ "breadcrumbs",
+ "publishedDate"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Identifiant du résultat. Transmettez les identifiants des résultats Mintlify dans le champ `ids` de la requête contents. Pour les résultats web, transmettez l’URL du résultat dans `urls`."
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "description": "URL canonique de la source."
+ },
+ "title": {
+ "type": "string",
+ "description": "Titre de la source."
+ },
+ "text": {
+ "type": "string",
+ "description": "Contenu correspondant lorsqu’il est demandé. Sinon, une chaîne vide."
+ },
+ "truncated": {
+ "type": "boolean",
+ "description": "Indique si le contenu renvoyé est plus court que le contenu disponible."
+ },
+ "totalCharacters": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "Nombre de caractères disponibles avant troncature. Présent lorsqu’il est disponible."
+ },
+ "score": {
+ "type": "number",
+ "description": "Score de pertinence relatif. Les réponses contents utilisent `0`, car elles récupèrent des éléments sélectionnés au lieu de classer les résultats."
+ },
+ "source": {
+ "type": "string",
+ "enum": [
+ "mintlify",
+ "web"
+ ],
+ "description": "Source de récupération."
+ },
+ "siteName": {
+ "type": "string",
+ "description": "Site de documentation ou nom d’hôte web."
+ },
+ "breadcrumbs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Hiérarchie documentaire du résultat."
+ },
+ "publishedDate": {
+ "type": "string",
+ "nullable": true,
+ "description": "Date de publication lorsque la source en fournit une, sinon `null`. Les résultats `search` la normalisent en horodatage ISO 8601 complet. Les résultats `contents` récupérés via `urls` transmettent la chaîne de date originale de la source sans normalisation ; il peut s’agir d’un horodatage complet ou d’une date seule."
+ }
+ }
+ },
+ "ContentsRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "description": "Fournissez au moins un identifiant de résultat Mintlify ou une URL de résultat. Vous pouvez combiner les deux champs, dans la limite de 20 éléments au total.",
+ "anyOf": [
+ {
+ "required": [
+ "urls"
+ ]
+ },
+ {
+ "required": [
+ "ids"
+ ]
+ }
+ ],
+ "properties": {
+ "urls": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "string",
+ "format": "uri"
+ },
+ "description": "URL de résultats à récupérer. Utilisez ce champ pour les résultats web."
+ },
+ "ids": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "Identifiants de résultats Mintlify à récupérer."
+ },
+ "maxCharacters": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "Nombre maximal de caractères de contenu à renvoyer par résultat."
+ },
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "Requête utilisée pour sélectionner les sections les plus pertinentes lorsque le contenu dépasse `maxCharacters`."
+ }
+ }
+ },
+ "ContentsResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "results",
+ "statuses"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "Identifiant unique de la requête."
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SearchResult"
+ },
+ "description": "Résultats récupérés avec succès."
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ContentStatus"
+ },
+ "description": "Statut de récupération de chaque élément demandé."
+ }
+ }
+ },
+ "ContentStatus": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "status"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Identifiant ou URL demandé."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "success"
+ ],
+ "description": "Statut de récupération."
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "status",
+ "error"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Identifiant ou URL demandé."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "error"
+ ],
+ "description": "Statut de récupération."
+ },
+ "error": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "httpStatusCode"
+ ],
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "Catégorie d’erreur lisible par machine."
+ },
+ "httpStatusCode": {
+ "type": "integer",
+ "nullable": true,
+ "description": "Code de statut HTTP amont lorsqu’il est disponible."
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "error"
+ ],
+ "properties": {
+ "error": {
+ "type": "string",
+ "description": "Message d’erreur."
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/fr/search-index/connect.mdx b/fr/search-index/connect.mdx
new file mode 100644
index 0000000000..75686c1462
--- /dev/null
+++ b/fr/search-index/connect.mdx
@@ -0,0 +1,141 @@
+---
+title: "Connecter Mintlify Index à votre agent de programmation"
+sidebarTitle: "Connexion"
+description: "Configurez le serveur MCP Mintlify Index dans Claude Code, Cursor, VS Code, Codex, OpenCode, Windsurf ou Zed avec la CLI ou une configuration manuelle."
+keywords: ["Mintlify Index", "CLI", "Claude Code", "Cursor", "MCP", "technical documentation"]
+---
+
+import { PreviewButton } from "/snippets/fr/previewbutton.jsx"
+
+Connectez votre agent de programmation à Mintlify Index afin qu’il puisse récupérer de la documentation technique actuelle et du contexte web pendant qu’il planifie et écrit du code. Index prend en charge Claude Code, Cursor, VS Code, Codex, OpenCode, Windsurf et Zed.
+
+
+ Vous n’avez besoin ni d’un compte Mintlify ni d’une clé d’API pour vous connecter au serveur MCP Index public.
+
+
+
+ ## Configurer avec la CLI
+
+
+Exécutez la commande de configuration Index pour configurer un ou plusieurs agents de programmation en une seule étape :
+
+```bash
+npx mint index
+```
+
+La commande détecte les agents de programmation pris en charge que vous avez installés et vous invite à choisir ceux à configurer. Pour chaque agent sélectionné, elle ajoute le serveur MCP Index à sa configuration et installe une règle indiquant à l’agent quand utiliser l’outil `context`.
+
+Pour ignorer le sélecteur, transmettez directement un ou plusieurs indicateurs d’agent :
+
+```bash
+npx mint index --claude --cursor
+```
+
+| Indicateur | Agent de programmation |
+| --- | --- |
+| `--claude` | Claude Code |
+| `--cursor` | Cursor |
+| `--vscode` | VS Code |
+| `--codex` | Codex |
+| `--opencode` | OpenCode |
+| `--windsurf` | Windsurf |
+| `--zed` | Zed |
+
+
+ Ajoutez `--yes` pour configurer tous les agents détectés sans invite, ou `--project` pour écrire la configuration dans le projet actuel plutôt que dans vos paramètres d’agent globaux. Tous les agents ne prennent pas en charge la configuration au niveau du projet. Ces agents reçoivent toujours la configuration globale.
+
+
+Exécutez à nouveau la commande pour mettre à jour une configuration existante ou ajouter un autre agent.
+
+
+ ## Configurer manuellement
+
+
+Pour configurer manuellement Claude Code ou Cursor, ou vérifier les modifications effectuées par la CLI, suivez les étapes correspondant à votre agent.
+
+
+
+
+
+ Exécutez la commande suivante :
+
+ ```bash
+ claude mcp add --transport http mintlify-index https://index.mintlify.com
+ ```
+
+
+ Listez vos serveurs MCP configurés :
+
+ ```bash
+ claude mcp list
+ ```
+
+ La sortie doit inclure `mintlify-index` avec un statut connecté.
+
+
+
+
+ Sélectionnez **Installer dans Cursor**, vérifiez la configuration MCP et approuvez l’installation.
+
+ Installer dans Cursor
+
+ Pour configurer Cursor manuellement :
+
+
+
+ 1. Ouvrez la palette de commandes avec Command + Shift + P (Ctrl + Shift + P sous Windows).
+ 2. Recherchez **Ouvrir les paramètres MCP**.
+ 3. Sélectionnez **Ajouter un MCP personnalisé** pour ouvrir `mcp.json`.
+
+
+ Ajoutez le serveur suivant :
+
+ ```json
+ {
+ "mcpServers": {
+ "mintlify-index": {
+ "url": "https://index.mintlify.com"
+ }
+ }
+ }
+ ```
+
+
+ Rechargez Cursor, puis ouvrez **Paramètres → Outils et MCP**. Le serveur `mintlify-index` doit apparaître comme connecté, avec l’outil `context` disponible.
+
+
+
+
+
+
+ ## Utiliser Index dans une session
+
+
+Posez une question d’implémentation et demandez à votre agent d’utiliser Index lorsque vous voulez vous assurer qu’il récupère des sources actuelles. Par exemple :
+
+```text
+Use Mintlify Index to find the current recommended way to configure caching in Next.js 16. Cite the sources you use.
+```
+
+L’agent appelle l’outil Index `context` lorsqu’il a besoin de contexte technique et inclut les liens vers les sources renvoyées dans son travail.
+
+
+ ## Supprimer la connexion
+
+
+
+
+ Exécutez la commande suivante :
+
+ ```bash
+ claude mcp remove mintlify-index
+ ```
+
+
+ Ouvrez **Paramètres → Outils et MCP**, puis supprimez l’entrée `mintlify-index` de `mcp.json`.
+
+
+
+Pour VS Code, Codex, OpenCode, Windsurf ou Zed, supprimez l’entrée `mintlify-index` de la configuration des serveurs MCP de l’agent concerné.
+
+Consultez la [référence MCP Index](/fr/search-index/mcp) pour connaître les paramètres des outils et les limites de débit.
diff --git a/fr/search-index/index.mdx b/fr/search-index/index.mdx
new file mode 100644
index 0000000000..59f1ea86d4
--- /dev/null
+++ b/fr/search-index/index.mdx
@@ -0,0 +1,53 @@
+---
+title: "Mintlify Index"
+sidebarTitle: "Vue d’ensemble"
+description: "Donnez aux agents de programmation un contexte technique actuel provenant de documentation gérée par les éditeurs et du web via un serveur MCP ou une API REST uniques."
+keywords: ["Mintlify Index", "technical search", "coding agents", "MCP", "REST API"]
+---
+
+Mintlify Index fournit aux agents de programmation une couche de recherche unique pour les connaissances techniques. Il oriente les questions sur les produits indexés vers la documentation gérée par les éditeurs et hébergée sur Mintlify, et utilise la recherche web pour les questions qui sortent de ce corpus.
+
+Utilisez Index via le serveur MCP public ou l’API REST soumise à un contrôle d’accès.
+
+- **Serveur MCP** : Connectez un outil d’IA et laissez-le récupérer du contexte accompagné de ses sources pendant votre travail. Disponible publiquement. Ne nécessite pas de clé d’API.
+- **API REST** : Recherchez des sources classées, assemblez un contexte dans une limite de jetons ou récupérez le contenu de résultats sélectionnés. Soumise à un contrôle d’accès. Nécessite une clé d’API Index.
+
+
+ ## Commencer
+
+
+
+
+ Ajoutez Index à Claude Code, Codex, Cursor et à d’autres agents de programmation.
+
+
+ Consultez l’outil `context`, ses champs d’entrée, sa sortie et ses limites de débit.
+
+
+ Utilisez `search`, `context` et `contents` dans une application ou un agent.
+
+
+
+
+ ## Comment Index récupère le contexte
+
+
+
+
+ Index détermine si la question concerne un produit présent dans son corpus documentaire ou si elle nécessite des résultats web plus larges.
+
+
+ Les questions propres à un produit interrogent la documentation actuelle de l’éditeur. Les autres questions interrogent le web.
+
+
+ Index classe les résultats et renvoie les URL des sources avec le contenu pertinent. L’outil MCP `context` et le point de terminaison REST `context` assemblent ce contenu dans une limite de jetons.
+
+
+
+
+ ## Choisir une opération de récupération
+
+
+- **[`context`](/fr/api/search-index/context)** : Utilisez cette opération pour la plupart des tâches d’agent. Elle renvoie en une requête un ensemble compact de sources citées.
+- **[`search`](/fr/api/search-index/search)** : Utilisez-la lorsque votre application a besoin de résultats classés et contrôle les sources à lire. Disponible via l’API REST.
+- **[`contents`](/fr/api/search-index/contents)** : Utilisez-la après `search` pour récupérer le contenu correspondant aux identifiants de résultats Mintlify ou aux URL de résultats sélectionnés. Disponible via l’API REST.
diff --git a/fr/search-index/mcp.mdx b/fr/search-index/mcp.mdx
new file mode 100644
index 0000000000..4757fe2890
--- /dev/null
+++ b/fr/search-index/mcp.mdx
@@ -0,0 +1,85 @@
+---
+title: "Serveur MCP Mintlify Index"
+sidebarTitle: "Référence MCP"
+description: "Référence du serveur MCP public Mintlify Index, notamment son outil context, ses paramètres, sa sortie et ses limites de débit."
+keywords: ["Mintlify Index", "MCP server", "context tool", "rate limits"]
+---
+
+Le serveur MCP Mintlify Index donne aux outils d’IA un accès en lecture seule à la documentation technique et au contexte web. Connectez-vous à l’adresse suivante :
+
+```text
+https://index.mintlify.com
+```
+
+Vous n’avez pas besoin de vous authentifier auprès du serveur public. Consultez [Connexion](/fr/search-index/connect) pour configurer Claude Code et Cursor.
+
+
+ Le MCP Index recherche dans la documentation des produits couverts et sur le web technique. Pour rechercher uniquement dans le contenu d’un site hébergé sur Mintlify, utilisez le [serveur MCP de recherche](/fr/ai/model-context-protocol) de ce site.
+
+
+
+ ## Outil `context`
+
+
+Utilisez `context` pour étudier une tâche d’implémentation et renvoyer en un appel un contexte compact accompagné de ses sources. L’outil est en lecture seule et peut accéder au web ouvert.
+
+
+ Question d’implémentation à étudier.
+
+
+
+ Nom du produit ou de l’entreprise à utiliser comme indication de récupération supplémentaire.
+
+
+
+ Domaines à inclure dans la récupération. Lorsque ce champ est défini, la récupération limite les résultats à ces domaines.
+
+
+
+ Domaines à exclure de la récupération.
+
+
+
+ Nombre maximal de jetons à renvoyer. La valeur maximale est `6000`. Utilisez la valeur par défaut pour les questions ciblées et une limite plus élevée pour les tâches complexes comportant plusieurs parties.
+
+
+
+ ### Sortie
+
+
+L’outil renvoie un contexte au format Markdown assemblé à partir de sources classées. Chaque section comprend un titre, une URL source et le contenu pertinent de la source.
+
+```text
+### Configure caching
+
+Source: https://nextjs.org/docs/app/getting-started/caching-and-revalidating
+
+Relevant source content appears here.
+
+--------------------------------
+```
+
+Le serveur MCP renvoie des sources que l’agent connecté peut utiliser. L’agent décide comment appliquer ce contexte à votre tâche.
+
+
+ ## Limites de débit
+
+
+Index applique les limites par adresse IP suivantes au serveur MCP public :
+
+| Fenêtre | Limite |
+| --- | ---: |
+| Par seconde | 10 requêtes |
+| Par jour | 1 000 requêtes |
+
+Les requêtes dépassant l’une ou l’autre limite renvoient `429 Too Many Requests`. Attendez avant de réessayer et utilisez un back-off exponentiel pour les clients automatisés.
+
+
+ ## Comportement du protocole
+
+
+Le MCP Index utilise Streamable HTTP sans état :
+
+- Envoyez chaque requête JSON-RPC avec un `POST` HTTP.
+- Envoyez une seule requête JSON-RPC par requête HTTP. Les lots ne sont pas pris en charge.
+- Ne conservez pas et n’envoyez pas d’identifiant de session MCP entre les requêtes.
diff --git a/snippets/es/previewbutton.jsx b/snippets/es/previewbutton.jsx
new file mode 100644
index 0000000000..2c10604b0c
--- /dev/null
+++ b/snippets/es/previewbutton.jsx
@@ -0,0 +1,7 @@
+export const PreviewButton = ({ children, href }) => {
+ return (
+
+ {children}
+
+ )
+ }
\ No newline at end of file
diff --git a/snippets/fr/previewbutton.jsx b/snippets/fr/previewbutton.jsx
new file mode 100644
index 0000000000..2c10604b0c
--- /dev/null
+++ b/snippets/fr/previewbutton.jsx
@@ -0,0 +1,7 @@
+export const PreviewButton = ({ children, href }) => {
+ return (
+
+ {children}
+
+ )
+ }
\ No newline at end of file
diff --git a/snippets/zh/previewbutton.jsx b/snippets/zh/previewbutton.jsx
new file mode 100644
index 0000000000..2c10604b0c
--- /dev/null
+++ b/snippets/zh/previewbutton.jsx
@@ -0,0 +1,7 @@
+export const PreviewButton = ({ children, href }) => {
+ return (
+
+ {children}
+
+ )
+ }
\ No newline at end of file
diff --git a/zh.json b/zh.json
index f7864cdb5e..5b4e6cb318 100644
--- a/zh.json
+++ b/zh.json
@@ -223,6 +223,14 @@
"zh/ai/skillmd",
"zh/ai/model-context-protocol",
"zh/optimize/search-boost",
+ {
+ "group": "Mintlify Index",
+ "pages": [
+ "zh/search-index/index",
+ "zh/search-index/connect",
+ "zh/search-index/mcp"
+ ]
+ },
"zh/optimize/seo",
"zh/ai/markdown-export",
"zh/optimize/pdf-exports",
@@ -324,6 +332,16 @@
"zh/api/assistant/get-page-content"
]
},
+ {
+ "group": "Mintlify Index",
+ "icon": "library",
+ "pages": [
+ "zh/api/search-index/introduction",
+ "zh/api/search-index/context",
+ "zh/api/search-index/search",
+ "zh/api/search-index/contents"
+ ]
+ },
{
"group": "数据分析",
"icon": "chart-line",
diff --git a/zh/ai-native.mdx b/zh/ai-native.mdx
index 5dbe10ef0a..a868542cce 100644
--- a/zh/ai-native.mdx
+++ b/zh/ai-native.mdx
@@ -47,6 +47,8 @@ Mintlify 会为你的文档托管 `llms.txt` 和 `skill.md` 文件。这些行
你的文档站点还会托管一个 MCP 服务器,使用户能够将你的文档直接连接到他们的 AI 工具,在他们需要的地方获取关于你产品的最新信息。
+对于涉及多个产品或需要 Web 搜索的实现问题,[Mintlify Index](/zh/search-index) 为编码代理提供一个 MCP 服务器和 REST API,用于从发布者维护的文档和 Web 中检索上下文。
+
全文搜索和语义理解帮助用户和 AI 工具快速找到相关信息。搜索能够理解用户意图,而不仅仅是匹配关键词。如果用户遇到 404 错误,你的网站会推荐相关页面,帮助他们找到所需内容。无需任何配置。
diff --git a/zh/ai/mintlify-mcp.mdx b/zh/ai/mintlify-mcp.mdx
index d3b860ab12..1b943dff35 100644
--- a/zh/ai/mintlify-mcp.mdx
+++ b/zh/ai/mintlify-mcp.mdx
@@ -17,18 +17,20 @@ keywords: ["MCP", "写入权限", "AI", "编辑", "Claude", "ChatGPT", "Cursor",
管理员 MCP 服务器允许 AI 工具访问你的 Mintlify 控制台。请将其视为拥有写入权限的同事。仅从受信任的 AI 工具连接它,并在合并前审查每一个拉取请求。
-管理员 MCP 是由 Mintlify 托管的服务,地址为 `https://mcp.mintlify.com`。没有自托管版本——每个客户端都连接到同一个端点,并使用你的 Mintlify 账户进行身份认证。
+管理员 MCP 是由 Mintlify 托管的服务,地址为 `https://mcp.mintlify.com`。每个客户端都连接到同一个端点,并使用你的 Mintlify 账户进行身份认证。
-
- ### 管理员 MCP 与搜索 MCP 的区别
+
+ ### 管理员 MCP 与其他 Mintlify MCP 服务器的区别
-| | 管理员 MCP | 搜索 MCP |
-| :-- | :-- | :-- |
-| **受众** | 你的团队 | 你的终端用户 |
-| **权限** | 读取、编辑、调整结构、保存、创建工作流、管理设置 | 读取并搜索已发布的页面 |
-| **端点** | 由 Mintlify 托管,仅限于你的项目 | 位于你的站点域名上的 `/mcp` |
-| **输出** | 内容编辑、导航更改、拉取请求、工作流运行 | 搜索结果和页面内容 |
+| | 管理员 MCP | 搜索 MCP | Index MCP |
+| :-- | :-- | :-- | :-- |
+| **受众** | 你的团队 | 你的终端用户 | 所有开发者和代理 |
+| **权限** | 读取、编辑、调整结构、保存、创建工作流、管理设置 | 读取并搜索某个站点的已发布页面 | 读取并搜索所有 Mintlify 站点 |
+| **端点** | `https://mcp.mintlify.com` | 位于你的站点域名上的 `/mcp` | `https://index.mintlify.com` |
+| **输出** | 内容编辑、导航更改、拉取请求、工作流运行 | 你站点的搜索结果和页面内容 | 所有 Mintlify 站点的搜索结果和页面内容 |
+
+请参阅 [Mintlify Index MCP 参考](/zh/search-index/mcp),了解其工具输入和速率限制。
## 前置条件
diff --git a/zh/ai/model-context-protocol.mdx b/zh/ai/model-context-protocol.mdx
index acb485d655..5788226216 100644
--- a/zh/ai/model-context-protocol.mdx
+++ b/zh/ai/model-context-protocol.mdx
@@ -15,7 +15,7 @@ Model Context Protocol (MCP,模型上下文协议) 是一个开放协议,用
你的 MCP 服务器会向 AI 应用提供搜索文档和获取完整页面内容的工具。你的用户必须将你的 MCP 服务器连接到他们的工具中。
- 想要让代理编辑你的内容,而不只是读取?请参阅 [Mintlify MCP 服务器](/ai/mintlify-mcp),这是一个已认证的 MCP 服务器,会向受信任的代理公开 branching、页面编辑、导航和 `docs.json` 工具。
+ 如需让受信任的代理编辑你的内容,请使用 [管理员 MCP 服务器](/zh/ai/mintlify-mcp)。如需为编码代理提供覆盖所有 Mintlify 站点的单一检索来源,请使用 [Mintlify Index](/zh/search-index)。
diff --git a/zh/api/introduction.mdx b/zh/api/introduction.mdx
index 9d21848e8a..4d385a9a99 100644
--- a/zh/api/introduction.mdx
+++ b/zh/api/introduction.mdx
@@ -6,7 +6,9 @@ boost: 3
---
- REST API 需要 [Pro 或 Enterprise 方案](https://mintlify.com/pricing?ref=api)。
+ 平台 REST API 需要 [Pro 或 Enterprise 方案](https://mintlify.com/pricing?ref=api)。
+
+ [Mintlify Index REST API](/zh/api/search-index/introduction) 使用单独的 API key 和基础 URL。
Mintlify 的 REST(Representational State Transfer)API 让你可以以编程方式与文档交互、触发更新、嵌入 AI 驱动的聊天体验,并导出 Analytics 数据。
@@ -58,12 +60,20 @@ https://api.mintlify.com
## 认证
-在控制台的 [API keys 页面](https://dashboard.mintlify.com/settings/organization/api-keys)生成 API key。每个 API key 都属于一个组织,你可以在同一组织内的多个部署中使用这些 API key。
+在控制台的 [API keys 页面](https://dashboard.mintlify.com/settings/organization/api-keys)生成 API key。管理员和 Index API key 属于组织。你可以在同一组织内的多个部署中使用相同的 key。Assistant API key 属于创建它的部署。
每个组织每小时最多可创建 10 个 API key。
创建 API key 时,你可以将其设置为在 7、30、60 或 90 天后过期,或选择**永不过期**。新的 API key 默认在 90 天后过期。API keys 页面会为将在 7 天内过期的 API key 显示**将在 … 后过期**徽章,为已过期的 API key 显示**已过期**徽章。已过期的 API key 将停止工作,请在过期日期之前轮换或更换它们。
+Mintlify 使用三种 API key,每种 key 对应不同的端点集合:
+
+| key 类型 | 前缀 | 用途 |
+| ----------------- | ----------- | -------------------------------------------------------- |
+| 管理员 API key | `mint_` | 更新、代理任务和 Analytics 导出。仅限服务器端。 |
+| Assistant API key | `mint_dsc_` | 助手消息、文档搜索和页面内容。生产环境使用代理。 |
+| Index API key | `mint_us_` | Index 搜索、上下文组装和内容检索。仅限服务器端。 |
+
### 管理员 API key
@@ -86,11 +96,19 @@ assistant API key 以 `mint_dsc_` 前缀开头。
Search documentation 和 Get page content 请求不消耗额度。Create assistant message 请求会消耗额度,并可能产生超额费用。
+
+ ### Index API key
+
+
+使用 Index API key 对 [Mintlify Index REST API](/zh/search-index) 的请求进行认证。Index API key 以 `mint_us_` 前缀开头。
+
+Index API key 是一个服务器端密钥。不要在客户端代码中暴露它。
+
### 按 IP 地址限制 key
-你可以选择将 API key 限制为一组允许的 IP 地址或 CIDR 范围。当 key 设置了允许列表时,来自任何其他 IP 地址的请求都会以 `403` 响应被拒绝。管理员 API key 和 assistant API key 都支持允许列表。
+你可以选择将 API key 限制为一组允许的 IP 地址或 CIDR 范围。当 key 设置了允许列表时,来自任何其他 IP 地址的请求都会以 `403` 响应被拒绝。管理员、Assistant 和 Index API key 都支持允许列表。
在控制台的 [API keys 页面](https://dashboard.mintlify.com/settings/organization/api-keys) 创建 key 时设置允许列表。允许列表在 key 的生命周期内固定不变——要更改它,请删除该 key 并创建一个新的。如果不设置允许列表,key 会接受来自任何 IP 地址的请求。
@@ -126,7 +144,7 @@ Mintlify 根据请求的 HTTP 方法推导所需的 scope:
### 设置过期日期
-你可以在创建任何 API key 时选择性地设置过期日期。过期时间戳过后,使用该 key 的请求将被拒绝。管理员 API key 和 assistant API key 都支持过期设置。
+你可以在创建任何 API key 时选择性地设置过期日期。过期时间戳过后,使用该 key 的请求会以 `401` 响应被拒绝。所有 API key 都支持过期设置。
在控制台的 [API keys 页面](https://dashboard.mintlify.com/settings/organization/api-keys) 设置过期时间。过期时间在 key 的生命周期内固定不变——要更改它,请删除该 key 并创建一个新的。如果不设置过期时间,该 key 永不过期。
diff --git a/zh/api/search-index/contents.mdx b/zh/api/search-index/contents.mdx
new file mode 100644
index 0000000000..0a24537b00
--- /dev/null
+++ b/zh/api/search-index/contents.mdx
@@ -0,0 +1,7 @@
+---
+title: "获取结果内容"
+sidebarTitle: "内容"
+description: "搜索后,通过结果 ID 或结果 URL 从 Mintlify Index 获取内容。"
+keywords: ["Mintlify Index", "contents API", "结果 ID", "URL"]
+openapi: "/zh/index-openapi.json POST /v1/contents"
+---
diff --git a/zh/api/search-index/context.mdx b/zh/api/search-index/context.mdx
new file mode 100644
index 0000000000..8dd622e998
--- /dev/null
+++ b/zh/api/search-index/context.mdx
@@ -0,0 +1,7 @@
+---
+title: "构建实现上下文"
+sidebarTitle: "上下文"
+description: "在 token 预算内为应用或代理组装带有来源引用的技术上下文。"
+keywords: ["Mintlify Index", "上下文", "引用", "token 预算"]
+openapi: "/zh/index-openapi.json POST /v1/context"
+---
diff --git a/zh/api/search-index/introduction.mdx b/zh/api/search-index/introduction.mdx
new file mode 100644
index 0000000000..a10d7b1069
--- /dev/null
+++ b/zh/api/search-index/introduction.mdx
@@ -0,0 +1,101 @@
+---
+title: "Mintlify Index REST API"
+sidebarTitle: "概览"
+description: "使用 Mintlify Index REST API 搜索文档和 Web,组装带有来源引用的上下文,并为应用和代理获取页面内容。"
+keywords: ["Mintlify Index API", "REST API", "认证", "API key"]
+---
+
+使用 Mintlify Index REST API 为应用和代理检索技术知识。该 API 支持三种检索模式:
+
+- [`context`](/zh/api/search-index/context) 在 token 预算内组装带有来源引用的内容。
+- [`search`](/zh/api/search-index/search) 返回排名后的文档和 Web 结果。
+- [`contents`](/zh/api/search-index/contents) 获取所选 Mintlify 结果 ID 或结果 URL 对应的内容。
+
+
+ REST API 需要组织的 API key。公开的 [Index MCP 服务器](/zh/search-index/mcp) 不需要 API key。
+
+
+
+ ## 基础 URL
+
+
+向以下地址发送 REST API 请求:
+
+```text
+https://leaves.mintlify.com/api/universal-search/v1
+```
+
+在此基础 URL 后追加端点路径,例如 `/context`、`/search` 或 `/contents`。
+
+
+ ## 认证
+
+
+在 `Authorization` 请求头中使用 Index API key 对每个请求进行认证:
+
+```http
+Authorization: Bearer mint_us_...
+```
+
+Index API key 以 `mint_us_` 开头。
+
+
+
+ 打开控制台的 [API keys 页面](https://app.mintlify.com/settings/organization/api-keys),创建一个 Index API key。
+
+ 如果没有此 key 类型,则表示你的组织无权访问 Index REST API。
+
+
+ 将 key 保存到服务端环境变量中。Mintlify 只会在你首次创建 key 时显示完整 key,请妥善保存。
+
+ ```bash
+ export MINTLIFY_INDEX_API_KEY="mint_us_..."
+ ```
+
+
+ 不要在客户端代码中暴露 Index API key,也不要将其提交到版本控制系统。
+
+
+
+ 向 `context` 端点发送第一个请求:
+
+ ```bash
+ curl -X POST "https://leaves.mintlify.com/api/universal-search/v1/context" \
+ -H "Authorization: Bearer $MINTLIFY_INDEX_API_KEY" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "query": "How should I configure caching in Next.js 16?",
+ "product": "Next.js",
+ "format": "txt",
+ "tokenBudget": 3000
+ }'
+ ```
+
+ 成功响应包含组装后的上下文、所用结果数量以及输出 token 数量。
+
+
+
+
+ ## 速率限制
+
+
+REST API 限制按 Mintlify 组织计算。一个组织中的所有 API key 共享同一限制:
+
+| 时间窗口 | 限制 |
+| --- | ---: |
+| 每秒 | 10 个请求 |
+| 每天 | 1,000 个请求 |
+
+超过任一限制的请求会返回 `429 Too Many Requests`。重试前请使用指数退避。
+
+
+ ## 错误
+
+
+| 状态 | 含义 |
+| --- | --- |
+| `400` | 请求正文无效。 |
+| `401` | API key 缺失或无效,或组织无权访问 Index REST API。 |
+| `403` | API key 不允许该请求 IP。 |
+| `429` | 组织超出速率限制。 |
+| `500` | Index 无法完成请求。 |
diff --git a/zh/api/search-index/search.mdx b/zh/api/search-index/search.mdx
new file mode 100644
index 0000000000..9d8e62d616
--- /dev/null
+++ b/zh/api/search-index/search.mdx
@@ -0,0 +1,7 @@
+---
+title: "搜索技术知识"
+sidebarTitle: "搜索"
+description: "在 Mintlify Index 中搜索排名后的技术文档和 Web 结果。"
+keywords: ["Mintlify Index", "搜索 API", "技术文档", "排名结果"]
+openapi: "/zh/index-openapi.json POST /v1/search"
+---
diff --git a/zh/changelog.mdx b/zh/changelog.mdx
index 7c26b7c7e3..4293ec8969 100644
--- a/zh/changelog.mdx
+++ b/zh/changelog.mdx
@@ -5,6 +5,19 @@ rss: true
noindex: true
---
+
+
+
+ ## Mintlify Index
+
+
+ [Mintlify Index](/zh/search-index) 为编程代理提供统一的检索层,用于访问由发布者维护的技术文档和互联网内容。
+
+ - **公共 MCP 服务器:** 无需 API key 即可[连接](/zh/search-index/connect)编程代理。`context` 工具会为实现任务返回带有来源引用的资料。
+ - **访问受控的 REST API:** 搜索排名靠前的来源,在 token 预算内组装上下文,并通过单独的 API 端点检索选定内容。需要 Index API key。
+
+
+
diff --git a/zh/index-openapi.json b/zh/index-openapi.json
new file mode 100644
index 0000000000..c024d2fb40
--- /dev/null
+++ b/zh/index-openapi.json
@@ -0,0 +1,715 @@
+{
+ "openapi": "3.0.1",
+ "info": {
+ "title": "Mintlify Index API",
+ "description": "为应用和代理搜索并获取技术文档与 Web 上下文。",
+ "version": "1.0.0"
+ },
+ "servers": [
+ {
+ "url": "https://leaves.mintlify.com/api/universal-search"
+ }
+ ],
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "paths": {
+ "/v1/context": {
+ "post": {
+ "operationId": "buildIndexContext",
+ "summary": "构建实现上下文",
+ "description": "搜索 Mintlify Index,并在 token 预算内组装带有来源引用的内容。当应用或代理需要通过一次请求获取可直接使用的上下文时,请使用此端点。",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContextRequest"
+ },
+ "example": {
+ "query": "我应该如何在 Next.js 16 中配置缓存?",
+ "product": "Next.js",
+ "format": "txt",
+ "tokenBudget": 3000
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "上下文组装成功。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContextResponse"
+ },
+ "example": {
+ "requestId": "7f2ab8d1-3bea-4a29-bc51-c05a8d3a3e3c",
+ "query": "我应该如何在 Next.js 16 中配置缓存?",
+ "response": "### 缓存与重新验证\n\n来源:https://nextjs.org/docs/app/getting-started/caching-and-revalidating\n\n使用本指南中介绍的当前缓存 API。\n\n--------------------------------",
+ "resultsCount": 3,
+ "outputTokens": 1842
+ }
+ }
+ }
+ },
+ "400": {
+ "$ref": "#/components/responses/BadRequest"
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ },
+ "/v1/search": {
+ "post": {
+ "operationId": "searchIndex",
+ "summary": "搜索技术知识",
+ "description": "返回发布者维护的文档或 Web 中的排名结果。需要更多内容时,请将 Mintlify 结果 ID 或任意结果 URL 与 contents 端点搭配使用。",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SearchRequest"
+ },
+ "example": {
+ "query": "Next.js 16 缓存与重新验证",
+ "numResults": 5,
+ "text": {
+ "maxCharacters": 4000
+ },
+ "includeDomains": [
+ "nextjs.org"
+ ]
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "搜索成功完成。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SearchResponse"
+ },
+ "example": {
+ "requestId": "3d8ed0aa-c21c-4a18-b995-207aa6315ea8",
+ "results": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "url": "https://nextjs.org/docs/app/getting-started/caching-and-revalidating",
+ "title": "缓存与重新验证",
+ "text": "缓存是一种存储数据获取和其他计算结果的技术。",
+ "truncated": false,
+ "totalCharacters": 92,
+ "score": 0.91,
+ "source": "mintlify",
+ "siteName": "nextjs",
+ "breadcrumbs": [
+ "应用路由",
+ "开始使用"
+ ],
+ "publishedDate": null
+ }
+ ]
+ }
+ }
+ }
+ },
+ "400": {
+ "$ref": "#/components/responses/BadRequest"
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ },
+ "/v1/contents": {
+ "post": {
+ "operationId": "getIndexContents",
+ "summary": "获取结果内容",
+ "description": "获取搜索端点返回的 Mintlify 结果 ID 或结果 URL 对应的内容。一次请求最多可以在两个字段中包含 20 项。",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContentsRequest"
+ },
+ "example": {
+ "ids": [
+ "nextjs:/docs/app/getting-started/caching-and-revalidating"
+ ],
+ "query": "重新验证缓存的数据",
+ "maxCharacters": 12000
+ }
+ }
+ }
+ },
+ "responses": {
+ "400": {
+ "description": "请求正文无效。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "一个请求最多可以在 urls 和 ids 中引用 20 项"
+ }
+ }
+ }
+ },
+ "200": {
+ "description": "内容获取完成。请检查每个状态,以确定对应项目是否成功。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContentsResponse"
+ },
+ "example": {
+ "requestId": "6bf694e4-76cb-4d31-a222-c94b2d9b198a",
+ "results": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "url": "https://nextjs.org/docs/app/getting-started/caching-and-revalidating",
+ "title": "缓存与重新验证",
+ "text": "# 缓存与重新验证\n\n使用重新验证 API 刷新缓存的数据。",
+ "truncated": false,
+ "totalCharacters": 78,
+ "score": 0,
+ "source": "mintlify",
+ "siteName": "nextjs",
+ "breadcrumbs": [
+ "应用路由",
+ "开始使用"
+ ],
+ "publishedDate": null
+ }
+ ],
+ "statuses": [
+ {
+ "id": "nextjs:/docs/app/getting-started/caching-and-revalidating",
+ "status": "success"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "401": {
+ "$ref": "#/components/responses/Unauthorized"
+ },
+ "403": {
+ "$ref": "#/components/responses/Forbidden"
+ },
+ "429": {
+ "$ref": "#/components/responses/RateLimited"
+ },
+ "500": {
+ "$ref": "#/components/responses/InternalError"
+ }
+ }
+ }
+ }
+ },
+ "components": {
+ "securitySchemes": {
+ "bearerAuth": {
+ "type": "http",
+ "scheme": "bearer",
+ "bearerFormat": "Mintlify Index API 密钥",
+ "description": "带有 `mint_us_` 前缀的 Mintlify Index API 密钥。"
+ }
+ },
+ "responses": {
+ "BadRequest": {
+ "description": "请求正文无效。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "请求正文无效"
+ }
+ }
+ }
+ },
+ "Unauthorized": {
+ "description": "API key 缺失或无效,或组织无权访问 Index REST API。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "未授权"
+ }
+ }
+ }
+ },
+ "Forbidden": {
+ "description": "API key 不允许该请求 IP。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "该 API key 不允许此 IP 地址"
+ }
+ }
+ }
+ },
+ "RateLimited": {
+ "description": "组织超出速率限制。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ },
+ "example": {
+ "error": "超出速率限制。请稍后重试"
+ }
+ }
+ }
+ },
+ "InternalError": {
+ "description": "Index 无法完成请求。",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Error"
+ }
+ }
+ }
+ }
+ },
+ "schemas": {
+ "ContextRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "query",
+ "format"
+ ],
+ "properties": {
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "要研究的实现问题。"
+ },
+ "product": {
+ "type": "string",
+ "minLength": 1,
+ "description": "用作额外检索提示的产品或公司名称。"
+ },
+ "format": {
+ "type": "string",
+ "enum": [
+ "txt",
+ "json"
+ ],
+ "description": "`response` 字符串的格式。`txt` 返回 Markdown 部分,`json` 返回包含结果项目的序列化 JSON 对象。"
+ },
+ "includeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "要纳入检索的域名。"
+ },
+ "excludeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "要从检索中排除的域名。"
+ },
+ "tokenBudget": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 6000,
+ "default": 3000,
+ "description": "输出 token 的最大数量。"
+ }
+ }
+ },
+ "ContextResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "query",
+ "response",
+ "resultsCount",
+ "outputTokens"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "请求的唯一标识符。"
+ },
+ "query": {
+ "type": "string",
+ "description": "请求中的原始查询。"
+ },
+ "response": {
+ "type": "string",
+ "description": "组装后的来源内容。对于 `txt` 请求,该值为 Markdown;对于 `json` 请求,该值为序列化 JSON。当没有内容适合 token 预算时,该字符串可以为空。"
+ },
+ "resultsCount": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "响应中包含的来源片段数量。"
+ },
+ "outputTokens": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "组装后响应中的 token 数量。"
+ }
+ }
+ },
+ "SearchRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "query",
+ "numResults"
+ ],
+ "properties": {
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "搜索查询。"
+ },
+ "numResults": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 20,
+ "description": "要返回的最大结果数。"
+ },
+ "text": {
+ "default": false,
+ "description": "控制结果内容。设置为 `true` 可包含匹配的内容,设置为 `false` 可省略内容,或提供 `maxCharacters` 以包含截断后的内容。省略时默认为 `false`。",
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "maxCharacters"
+ ],
+ "properties": {
+ "maxCharacters": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "每个结果要包含的最大内容字符数。"
+ }
+ }
+ }
+ ]
+ },
+ "includeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "要包含在搜索结果中的域名。"
+ },
+ "excludeDomains": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "要从搜索结果中排除的域名。"
+ }
+ }
+ },
+ "SearchResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "results"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "请求的唯一标识符。"
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SearchResult"
+ },
+ "description": "排名后的搜索结果。"
+ }
+ }
+ },
+ "SearchResult": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "url",
+ "title",
+ "text",
+ "score",
+ "source",
+ "siteName",
+ "breadcrumbs",
+ "publishedDate"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "结果标识符。将 Mintlify 结果中的 ID 传入 contents 请求的 `ids` 字段。对于 Web 结果,请将结果 URL 传入 `urls`。"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri",
+ "description": "规范来源 URL。"
+ },
+ "title": {
+ "type": "string",
+ "description": "来源标题。"
+ },
+ "text": {
+ "type": "string",
+ "description": "请求时返回的匹配内容。否则为空字符串。"
+ },
+ "truncated": {
+ "type": "boolean",
+ "description": "返回的内容是否短于可用内容。"
+ },
+ "totalCharacters": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "截断前的可用字符数(如果有)。"
+ },
+ "score": {
+ "type": "number",
+ "description": "相对相关性分数。contents 响应使用 `0`,因为它获取的是所选项目,而不是对结果进行排名。"
+ },
+ "source": {
+ "type": "string",
+ "enum": [
+ "mintlify",
+ "web"
+ ],
+ "description": "检索来源。"
+ },
+ "siteName": {
+ "type": "string",
+ "description": "文档站点或 Web 主机名。"
+ },
+ "breadcrumbs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "结果的文档层级。"
+ },
+ "publishedDate": {
+ "type": "string",
+ "nullable": true,
+ "description": "来源提供时的发布日期,否则为 `null`。`search` 结果会将其规范化为完整的 ISO 8601 时间戳。通过 `urls` 获取的 `contents` 结果会原样传递来源的日期字符串,不进行规范化;该字符串可以是完整时间戳,也可以只是日期。"
+ }
+ }
+ },
+ "ContentsRequest": {
+ "type": "object",
+ "additionalProperties": false,
+ "description": "至少提供一个 Mintlify 结果 ID 或结果 URL。你可以同时使用两个字段,总计最多 20 项。",
+ "anyOf": [
+ {
+ "required": [
+ "urls"
+ ]
+ },
+ {
+ "required": [
+ "ids"
+ ]
+ }
+ ],
+ "properties": {
+ "urls": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "string",
+ "format": "uri"
+ },
+ "description": "要获取的结果 URL。对于 Web 结果,请使用此字段。"
+ },
+ "ids": {
+ "type": "array",
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": "要获取的 Mintlify 结果 ID。"
+ },
+ "maxCharacters": {
+ "type": "integer",
+ "minimum": 1,
+ "description": "每个结果要返回的最大内容字符数。"
+ },
+ "query": {
+ "type": "string",
+ "minLength": 1,
+ "description": "当内容超过 `maxCharacters` 时,用于选择最相关部分的查询。"
+ }
+ }
+ },
+ "ContentsResponse": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "requestId",
+ "results",
+ "statuses"
+ ],
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "请求的唯一标识符。"
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SearchResult"
+ },
+ "description": "成功获取的结果。"
+ },
+ "statuses": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ContentStatus"
+ },
+ "description": "每个请求项目的获取状态。"
+ }
+ }
+ },
+ "ContentStatus": {
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "status"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "请求的 ID 或 URL。"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "success"
+ ],
+ "description": "获取状态。"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "status",
+ "error"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "请求的 ID 或 URL。"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "error"
+ ],
+ "description": "获取状态。"
+ },
+ "error": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "tag",
+ "httpStatusCode"
+ ],
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "机器可读的错误类别。"
+ },
+ "httpStatusCode": {
+ "type": "integer",
+ "nullable": true,
+ "description": "上游 HTTP 状态码(如果有)。"
+ }
+ }
+ }
+ }
+ }
+ ]
+ },
+ "Error": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "error"
+ ],
+ "properties": {
+ "error": {
+ "type": "string",
+ "description": "错误消息。"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/zh/search-index/connect.mdx b/zh/search-index/connect.mdx
new file mode 100644
index 0000000000..b49fb63fd7
--- /dev/null
+++ b/zh/search-index/connect.mdx
@@ -0,0 +1,141 @@
+---
+title: "将 Mintlify Index 连接到你的编码代理"
+sidebarTitle: "连接"
+description: "通过 CLI 或手动配置,在 Claude Code、Cursor、VS Code、Codex、OpenCode、Windsurf 或 Zed 中设置 Mintlify Index MCP 服务器。"
+keywords: ["Mintlify Index", "CLI", "Claude Code", "Cursor", "MCP", "技术文档"]
+---
+
+import { PreviewButton } from "/snippets/zh/previewbutton.jsx"
+
+将你的编码代理连接到 Mintlify Index,使其可以在规划和编写代码时检索最新的技术文档和 Web 上下文。Index 支持 Claude Code、Cursor、VS Code、Codex、OpenCode、Windsurf 和 Zed。
+
+
+ 连接公开的 Index MCP 服务器不需要 Mintlify 账户或 API key。
+
+
+
+ ## 使用 CLI 设置
+
+
+运行 Index 设置命令,即可在一个步骤中配置一个或多个编码代理:
+
+```bash
+npx mint index
+```
+
+该命令会检测已安装的受支持编码代理,并提示你选择要配置的代理。对于每个选中的代理,它会将 Index MCP 服务器添加到该代理的配置中,并安装一条规则,告诉代理何时使用 `context` 工具。
+
+要跳过选择器,请改为传入一个或多个代理标志:
+
+```bash
+npx mint index --claude --cursor
+```
+
+| 标志 | 编码代理 |
+| --- | --- |
+| `--claude` | Claude Code |
+| `--cursor` | Cursor |
+| `--vscode` | VS Code |
+| `--codex` | Codex |
+| `--opencode` | OpenCode |
+| `--windsurf` | Windsurf |
+| `--zed` | Zed |
+
+
+ 添加 `--yes` 可在不提示的情况下配置检测到的所有代理,或添加 `--project` 将配置写入当前项目,而不是全局代理设置。并非所有代理都支持项目级配置;这些代理始终会接收全局配置。
+
+
+再次运行该命令即可更新现有设置或添加其他代理。
+
+
+ ## 手动设置
+
+
+要手动配置 Claude Code 或 Cursor,或确认 CLI 所做的更改,请按照对应代理的步骤操作。
+
+
+
+
+
+ 运行以下命令:
+
+ ```bash
+ claude mcp add --transport http mintlify-index https://index.mintlify.com
+ ```
+
+
+ 列出已配置的 MCP 服务器:
+
+ ```bash
+ claude mcp list
+ ```
+
+ 输出应包含状态为已连接的 `mintlify-index`。
+
+
+
+
+ 选择**在 Cursor 中安装**,检查 MCP 配置,然后批准安装。
+
+ 在 Cursor 中安装
+
+ 也可以手动配置 Cursor:
+
+
+
+ 1. 使用 Command + Shift + P(Windows 上为 Ctrl + Shift + P)打开命令面板。
+ 2. 搜索**打开 MCP 设置**。
+ 3. 选择**添加自定义 MCP**,打开 `mcp.json`。
+
+
+ 添加以下服务器:
+
+ ```json
+ {
+ "mcpServers": {
+ "mintlify-index": {
+ "url": "https://index.mintlify.com"
+ }
+ }
+ }
+ ```
+
+
+ 重新加载 Cursor,然后打开 **Settings → Tools & MCP**(设置 → 工具和 MCP)。`mintlify-index` 服务器应显示为已连接,并且可以使用 `context` 工具。
+
+
+
+
+
+
+ ## 在会话中使用 Index
+
+
+提出实现问题,并告诉代理在你希望确保它检索最新来源时使用 Index。例如:
+
+```text
+Use Mintlify Index to find the current recommended way to configure caching in Next.js 16. Cite the sources you use.
+```
+
+代理在需要技术上下文时会调用 Index 的 `context` 工具,并在工作中包含返回的来源链接。
+
+
+ ## 移除连接
+
+
+
+
+ 运行以下命令:
+
+ ```bash
+ claude mcp remove mintlify-index
+ ```
+
+
+ 打开 **Settings → Tools & MCP**(设置 → 工具和 MCP),然后从 `mcp.json` 中删除 `mintlify-index` 条目。
+
+
+
+对于 VS Code、Codex、OpenCode、Windsurf 或 Zed,请从该代理的 MCP 服务器配置中删除 `mintlify-index` 条目。
+
+有关工具输入和速率限制,请参阅 [Index MCP 参考](/zh/search-index/mcp)。
diff --git a/zh/search-index/index.mdx b/zh/search-index/index.mdx
new file mode 100644
index 0000000000..9248a6a17c
--- /dev/null
+++ b/zh/search-index/index.mdx
@@ -0,0 +1,53 @@
+---
+title: "Mintlify Index"
+sidebarTitle: "概览"
+description: "通过一个 MCP 服务器或 REST API,为编码代理提供来自发布者维护的文档和 Web 的最新技术上下文。"
+keywords: ["Mintlify Index", "技术搜索", "编码代理", "MCP", "REST API"]
+---
+
+Mintlify Index 为编码代理提供一个统一的技术知识搜索层。它会将关于已索引产品的问题路由到托管在 Mintlify 上、由发布者维护的文档,并使用 Web 搜索处理不属于该语料库的问题。
+
+你可以通过公开 MCP 服务器或受访问控制的 REST API 使用 Index。
+
+- **MCP 服务器**:连接 AI 工具,让它在你工作时检索带有来源引用的上下文。公开提供,无需 API key。
+- **REST API**:搜索排名后的来源,在 token 预算内组装上下文,或获取所选结果的内容。受访问控制,需要 Index API key。
+
+
+ ## 开始使用
+
+
+
+
+ 将 Index 添加到 Claude Code、Codex、Cursor 和其他编码代理。
+
+
+ 查看 `context` 工具、输入字段、输出和速率限制。
+
+
+ 在应用或代理中使用 `search`、`context` 和 `contents`。
+
+
+
+
+ ## Index 如何检索上下文
+
+
+
+
+ Index 会判断问题涉及其文档语料库中的产品,还是需要更广泛的 Web 结果。
+
+
+ 针对特定产品的问题会搜索发布者的最新文档,其他问题则会搜索 Web。
+
+
+ Index 会为结果排序,并返回带有相关内容的来源 URL。MCP 的 `context` 工具和 REST 的 `context` 端点会在 token 预算内组装这些内容。
+
+
+
+
+ ## 选择检索操作
+
+
+- **[`context`](/zh/api/search-index/context)**:适用于大多数代理任务。在一次请求中返回一组紧凑的带引用来源材料。
+- **[`search`](/zh/api/search-index/search)**:当应用需要排名后的结果并自行决定读取哪些来源时使用。可通过 REST API 使用。
+- **[`contents`](/zh/api/search-index/contents)**:在 `search` 之后使用,获取所选 Mintlify 结果 ID 或结果 URL 对应的内容。可通过 REST API 使用。
diff --git a/zh/search-index/mcp.mdx b/zh/search-index/mcp.mdx
new file mode 100644
index 0000000000..f8b24f6cfb
--- /dev/null
+++ b/zh/search-index/mcp.mdx
@@ -0,0 +1,85 @@
+---
+title: "Mintlify Index MCP 服务器"
+sidebarTitle: "MCP 参考"
+description: "公开 Mintlify Index MCP 服务器参考,包括其 context 工具、参数、输出和速率限制。"
+keywords: ["Mintlify Index", "MCP 服务器", "context 工具", "速率限制"]
+---
+
+Mintlify Index MCP 服务器为 AI 工具提供对技术文档和 Web 上下文的只读访问。连接地址为:
+
+```text
+https://index.mintlify.com
+```
+
+公开服务器无需认证。有关 Claude Code 和 Cursor 的设置说明,请参阅[连接](/zh/search-index/connect)。
+
+
+ Index MCP 会搜索所覆盖产品的文档和技术 Web。若只想搜索特定 Mintlify 托管站点中的内容,请使用该站点的[搜索 MCP 服务器](/zh/ai/model-context-protocol)。
+
+
+
+ ## `context` 工具
+
+
+使用 `context` 研究实现任务,并在一次调用中返回紧凑且带有来源引用的上下文。该工具为只读工具,可以访问开放 Web。
+
+
+ 要研究的实现问题。
+
+
+
+ 用作额外检索提示的产品或公司名称。
+
+
+
+ 要纳入检索的域名。设置后,检索结果会限制在这些域名内。
+
+
+
+ 要从检索中排除的域名。
+
+
+
+ 要返回的最大 token 数。最大值为 `6000`。对于聚焦的问题使用默认值,对于复杂的多部分任务使用更大的预算。
+
+
+
+ ### 输出
+
+
+该工具返回由排名后的来源组装而成的 Markdown 格式上下文。每个部分都包含标题、来源 URL 和相关来源内容。
+
+```text
+### Configure caching
+
+Source: https://nextjs.org/docs/app/getting-started/caching-and-revalidating
+
+Relevant source content appears here.
+
+--------------------------------
+```
+
+MCP 服务器会返回供已连接代理使用的来源材料。代理决定如何将这些上下文应用到任务中。
+
+
+ ## 速率限制
+
+
+Index 对公开 MCP 服务器实施以下按 IP 计算的限制:
+
+| 时间窗口 | 限制 |
+| --- | ---: |
+| 每秒 | 10 个请求 |
+| 每天 | 1,000 个请求 |
+
+超过任一限制的请求会返回 `429 Too Many Requests`。请等待后重试,自动化客户端应使用指数退避。
+
+
+ ## 协议行为
+
+
+Index MCP 使用无状态的 Streamable HTTP:
+
+- 将每个 JSON-RPC 请求作为 HTTP `POST` 发送。
+- 每个 HTTP 请求发送一个 JSON-RPC 请求。不支持批处理。
+- 不要在请求之间持久化或发送 MCP 会话 ID。