{"schemaVersion":"0.1","server":{"name":"rag-decision-mcp","applicationVersion":"0.6.0","knowledgeVersion":"2026.07.15-structural-units-1","purpose":"Infer ordinary-language RAG task intent and design constraint-safe implementations with versioned component-capability requirements."},"startHere":{"instruction":"Call analyze_rag_specification first when requirements may be incomplete; call design_rag_implementation when the minimum workload fields are known.","minimumInformation":["At least one corpus-scale signal: documentCount, totalPageCount, estimatedChunkCount, or totalTokens.","security.aclStrategy, explicitly set to none when no document-level authorization is required."],"requirementSyntax":{"required":{"strength":"required","value":"The architecture must satisfy this value."},"preferred":{"strength":"preferred","value":"Optimize for this value when hard requirements remain satisfied."},"context":{"strength":"context","value":"Use this known value for scoring and configuration."},"unknown":{"strength":"unknown","reason":"State why the value is not yet known."}}},"recommendedWorkflow":[{"step":1,"tool":"rag_mcp_info","purpose":"Learn tool selection and the workload format."},{"step":2,"tool":"analyze_rag_specification","purpose":"Normalize aliases and identify contradictions, missing inputs, and the highest-value follow-up questions."},{"step":3,"tool":"design_rag_implementation","purpose":"Receive the complete recommendation: architecture, alternatives, selection reasoning, and configuration selections (chunking sizes, embedding family, vector-store shortlist, evaluation plan) with recorded derivation assumptions."},{"step":4,"tool":"calling LLM","purpose":"Resolve every provider-neutral selection into a researched, constraint-compliant, pinned concrete implementation and freeze the rationale before evaluation."},{"step":5,"tool":"calling LLM","purpose":"Adversarially review the resolved design against the designReview rubric (returned with design_rag_implementation; full contract via get_rag_section section behavioralContracts) and record a finding or explicit pass per item before freezing."},{"step":6,"tool":"validate_component_artifact","purpose":"Check each researched artifact against its exact component requirement, including task objective and primary-source evidence."},{"step":7,"tool":"visualize_rag_implementation","purpose":"Request system/query/deployment views, walkthroughs, and complete constraint-safe alternative designs."},{"step":8,"tool":"build_rag_evaluation_plan","purpose":"Turn caller-supplied quality and operational targets into release gates and representative test slices."}],"toolSelection":[{"tool":"analyze_rag_specification","useWhen":"You need to discover missing or contradictory requirements before selecting an architecture."},{"tool":"design_rag_implementation","useWhen":"You want the primary end-to-end answer with concrete selections inline; the focused recommend_* selectors are for direct control or overriding derived inputs."},{"tool":"visualize_rag_implementation","useWhen":"You want renderer-neutral architecture views, scenarios, Mermaid, or structural comparisons between complete options."},{"tool":"recommend_chunking_configuration","useWhen":"You need focused chunk sizes, overlaps, boundaries, alternatives, and a validation experiment."},{"tool":"recommend_embedding_configuration","useWhen":"You need provider-neutral embedding-family ranking by modality, language, locality, context, throughput, privacy, licensing, and storage; the calling LLM then resolves the family to an exact model."},{"tool":"recommend_vector_store","useWhen":"You need vector-store hard filtering and ranking from actual vectors, dimensions, traffic, filters, deployment, availability, backup, and cost constraints."},{"tool":"recommend_ingestion_pipeline","useWhen":"You need ingestion DAG, record contracts, versioned indexes, quality gates, and failure behavior."},{"tool":"recommend_retrieval_stack","useWhen":"You need a compact selected retrieval-method list with traceable source components."},{"tool":"build_rag_evaluation_plan","useWhen":"You need explicit release gates, monitors, test slices, experiments, and evaluation cadence."},{"tool":"validate_component_artifact","useWhen":"The calling LLM has researched an exact artifact and must validate its capabilities, objective, evidence, constraints, version, and revision—or record no suitable artifact found."},{"tool":"document_processing_guide","useWhen":"You need format-specific parsing and metadata guidance; canonical file-type IDs and reviewed aliases such as xlsx and .md are accepted."},{"tool":"retrieval_improvement_plan","useWhen":"You need diagnostics and fixes for canonical symptom IDs or natural-language problem descriptions such as low recall, stale answers, table misses, or permission leakage."},{"tool":"ingestion_pipeline_guide","useWhen":"You need the legacy combined processor, chunking, retrieval, and evaluation guide for formats supplied as canonical IDs or reviewed aliases."},{"tool":"search_rag_knowledge","useWhen":"You need to explore curated concepts before supplying a complete workload."}],"implementationResolution":{"schemaVersion":"0.1","responsibility":"calling-llm","rule":"Treat every selected capability, family, pattern, or strategy as an actionable implementation direction. When the MCP does not name an exact deployable artifact, the calling LLM must resolve one rather than silently retaining an existing component.","requiredActions":["Research current models, products, libraries, or services from authoritative primary sources.","Reject candidates whose training objective or primary-source evidence does not establish every required task capability.","Filter candidates against every required workload constraint before comparing preferences.","Choose the best-supported concrete artifact and explain the mapping from the MCP recommendation.","Pin the exact model, version, revision, configuration, preprocessing, and query/document contract needed for reproduction.","Record alternatives considered, evidence, licensing, resource implications, and rejection reasons before evaluation or deployment.","Freeze the concrete selection before observing benchmark or production outcomes; publish losses without post-outcome substitution.","Return no suitable artifact found when every current candidate fails a required capability or constraint; never fill a slot with a generic fallback."],"prohibitedShortcuts":["Do not keep the current implementation solely because the MCP returned a provider-neutral family instead of a product name.","Do not claim that an abstract recommendation was implemented when its concrete artifact or required behavior was omitted.","Do not let external research weaken a required constraint or change the MCP-selected architecture layer."],"appliesTo":["embedding models","rerankers","retrieval and fusion implementations","chunking and parsing libraries","vector stores","generation models","caching, orchestration, evaluation, and operational components"],"resolutionRecord":["abstract recommendation ID and name","selected concrete artifact and immutable version or revision","authoritative sources and retrieval date","hard-constraint checks and preference rationale","runtime configuration and preprocessing contract","alternatives considered and rejection reasons","resource, licensing, privacy, and operational implications"]},"designReview":{"id":"design-review","schemaVersion":"0.1","responsibility":"calling-llm","rule":"Before freezing a resolved design, adversarially review it against this rubric and record a finding or an explicit pass for every item.","rubric":[{"id":"over-prescription","check":"Is any numeric parameter presented as a recommendation when it is actually a default produced by a missing input? Label such numbers as defaults and name the missing input."},{"id":"metric-intent-alignment","check":"Does every success gate measure the failure mode that matters for the inferred intent, rather than a convenient aggregate that can improve while intent-critical evidence regresses?"},{"id":"scope-boundary-failure-behaviour","check":"Is the supported/caution/abstain boundary expressed as runtime-detectable conditions with defined behavior, not as a disclaimer?"},{"id":"authorization-depth","check":"Does the declared access-control strategy survive one level of policy-complexity probing: rules that depend on specific matters, individuals, time windows, or information barriers rather than stable group membership?"},{"id":"sizing-rigor","check":"Is every derived number labeled as a benchmark target with its assumptions stated, never presented as a measured fact?"},{"id":"citation-integrity","check":"Is citation anchoring (a data-model property fixed before the first index) distinguished from citation verification (an iterative evaluation property)?"},{"id":"evidence-scoped-claims","check":"Is every empirical justification scoped to its tested configuration and paired with an independent capability-based argument?"}],"prohibitedShortcuts":["Do not generalize a benchmark result beyond its tested configuration.","Do not reject or select a candidate on empirical evidence alone; pair every empirical rejection with a capability-based reason.","Do not present the review as complete while any rubric item lacks a recorded finding or an explicit pass."]},"capabilityContract":{"schemaVersion":"1.0","instruction":"Describe what a useful result should do in task.description and give representative task.examples. Do not choose model families or technical capability labels.","clarificationPolicy":"When a high-impact relationship is ambiguous, the MCP asks whether a useful result should answer, support, contradict, oppose, match exactly, or simply discuss the query. It never asks the user to choose a model family.","responsePath":"design_rag_implementation.result.capabilitySelection","onDemand":"Pass capabilityComponents: [\"reranker\", …] to design_rag_implementation to fetch a subset of full component requirements; the rest return as summaries under capabilitySelection.omittedComponents. Pass include: [\"architecture\", …] to return only the named result sections; dropped sections are listed in omittedSections and fetchable with another call.","resolution":"The calling LLM must reject candidates without primary-source evidence for every required capability and may return no suitable artifact found."},"workloadFields":{"task":["description","examples"],"corpusScale":["documentCount","totalPageCount","minimumPagesPerDocument","averagePagesPerDocument","p95PagesPerDocument","maximumPagesPerDocument","estimatedChunkCount","totalTokens","averageDocumentTokens","maximumDocumentTokens"],"content":["formats","modalities","languages","contentTraits","contentMix","queryTypes"],"traffic":["averageQps","peakQps","peakConcurrency","dailyQueryCount"],"latency":["p50Ms","p95Ms","p99Ms","timeoutMs","streamingFirstTokenMs"],"ingestion":["createsPerHour","updatesPerHour","deletionsPerHour","freshnessSlaMs","deletionSlaMs"],"security":["tenancyModel","tenantCount","aclStrategy","dataResidency","piiClassification","retentionDays","auditRequired"],"reliability":["availabilityTargetPercent","rpoMs","rtoMs","localOnly","offlineRequired"],"quality":["retrieval","groundedness","citationCoverage","abstentionAccuracy","permissionLeakageRate"],"operational":["existingInfrastructure","deploymentPreference","teamCapabilities","costSensitivity","businessCritical"]},"questionTemplate":["Describe in ordinary language what a useful retrieved result should accomplish and give representative examples.","Describe the corpus scale and page distribution.","List formats, modalities, languages, content traits, and query types.","State authorization, tenancy, residency, PII, retention, and audit requirements.","State update/deletion rates and freshness/deletion SLAs.","State traffic, concurrency, latency, availability, recovery, locality, deployment, and cost constraints.","State measurable retrieval, groundedness, citation, abstention, and leakage targets.","Ask for the recommended implementation, viable alternatives, why the winner was chosen, and how to validate it."],"examples":[{"name":"ordinary-language-counterargument","tool":"design_rag_implementation","arguments":{"workload":{"task":{"description":{"strength":"required","value":"Retrieve the best counterargument addressing the same issue from an opposing stance."},"examples":{"strength":"context","value":["Find the best opposing argument."]}},"corpus":{"documentCount":{"strength":"context","value":5000},"languages":{"strength":"required","value":["en"]}},"security":{"aclStrategy":{"strength":"required","value":"none"}},"reliability":{"localOnly":{"strength":"required","value":true}},"operational":{"existingInfrastructure":{"strength":"context","value":["cpu"]}}}}},{"name":"minimum-valid-workload","tool":"design_rag_implementation","arguments":{"workload":{"corpus":{"documentCount":{"strength":"context","value":5000}},"security":{"aclStrategy":{"strength":"required","value":"none"}}}}},{"name":"page-distribution-and-permissions","tool":"design_rag_implementation","arguments":{"workload":{"corpus":{"documentCount":{"strength":"required","value":25000},"totalPageCount":{"strength":"context","value":500000},"minimumPagesPerDocument":{"strength":"context","value":1},"averagePagesPerDocument":{"strength":"context","value":20},"p95PagesPerDocument":{"strength":"context","value":80},"maximumPagesPerDocument":{"strength":"context","value":1200},"formats":{"strength":"required","value":["pdf"]},"modalities":{"strength":"context","value":["text","table","image"]},"queryTypes":{"strength":"context","value":["fact-lookup","cross-document-synthesis"]}},"ingestion":{"updatesPerHour":{"strength":"required","value":50},"freshnessSlaMs":{"strength":"required","value":300000}},"security":{"aclStrategy":{"strength":"required","value":"metadata-filter"},"auditRequired":{"strength":"required","value":true}},"quality":{"retrieval":{"strength":"required","value":{"metric":"recall-at-k","minimum":0.9,"k":20}},"groundedness":{"strength":"required","value":0.95},"permissionLeakageRate":{"strength":"required","value":0}}}}}],"commonMistakes":["Asking the user to choose a cross-encoder, NLI model, embedding architecture, or another technical family instead of inferring intent from ordinary language.","Treating language, hardware fit, popularity, or generic benchmark strength as evidence of task compatibility.","Sending raw values instead of wrapping them in { strength, value }.","Omitting aclStrategy instead of explicitly declaring none.","Using document count alone when page size or chunk volume varies materially.","Calling a focused selector before architecture analysis and then treating it as an end-to-end design.","Treating qualitative defaults as measured proof instead of running the returned validation experiments.","Requesting concrete provider products without supplying deployment, privacy, availability, traffic, and cost constraints.","Treating a provider-neutral family or capability as non-actionable instead of researching and pinning a concrete implementation."],"operationalLimits":{"mcpToolCalls":"30 tools/call invocations per client per 60 seconds; initialization and discovery are excluded.","analyticsReads":"5 GET /analytics requests per client per 60 seconds.","privacy":"The server is public and read-only. Minimize sensitive workload descriptions; aggregate analytics never persist arguments, IPs, sessions, queries, or documents."}}