Expert system for searching USPTO MPEP, 35 USC statutes, 37 CFR regulations, and post-Jan 2024 updates.
Expert system for searching USPTO MPEP, 35 USC statutes, 37 CFR regulations, and post-Jan 2024 updates using hybrid RAG with vector, keyword, and cross-encoder reranking. Use when users need patent law references, enablement requirements, fee schedules, or recent AI inventorship updates.
/plugin marketplace add RobThePCGuy/Claude-Patent-Creator/plugin install robthepcguy-claude-patent-creator-standalone@RobThePCGuy/Claude-Patent-CreatorThis skill inherits all available tools. When active, it can use any tool Claude has access to.
mpep_search.pySearch MPEP corpus through hybrid RAG (FAISS vector + BM25 keyword + HyDE + cross-encoder reranking).
Sources:
search_mpepInputs:
query (string, required): Search query (minimum 3 characters)top_k (int, optional): Number of results (default: 5, max: 20)retrieve_k (int | None, optional): Candidates before reranking (default: top_k * 4, max: 100)source_filter (string | None, optional): Filter by source ("MPEP", "35_USC", "37_CFR", "SUBSEQUENT", or None)is_statute (bool | None, optional): Filter for statute contentis_regulation (bool | None, optional): Filter for regulation contentis_update (bool | None, optional): Filter for recent updatesOutputs:
{
"rank": int,
"source": str,
"section": str,
"file": str,
"page": int,
"has_statute": bool,
"has_mpep_ref": bool,
"has_rule_ref": bool,
"is_statute": bool,
"is_regulation": bool,
"is_update": bool,
"relevance_score": float,
"text": str,
# Optional for SUBSEQUENT:
"doc_type": str,
"fr_citation": str,
"effective_date": str
}
Examples:
# Basic search
search_mpep("enablement requirement 35 USC 112", top_k=5)
# Search only statutes
search_mpep("written description", top_k=10, is_statute=True)
# Search recent updates
search_mpep("AI inventorship", is_update=True)
# Filter by source
search_mpep("fee schedule", source_filter="37_CFR")
get_mpep_sectionRetrieve all content from specific MPEP section.
Inputs:
section_number (string, required): MPEP section number (e.g., "2100", "608.01")max_chunks (int, optional): Maximum chunks to return (default: 50)Outputs:
{
"section": str,
"total_chunks": int,
"chunks": [
{
"text": str,
"metadata": {
"source": str,
"file": str,
"page": int,
"section": str,
"has_statute": bool,
"has_mpep_ref": bool,
"has_rule_ref": bool,
"is_statute": bool,
"is_regulation": bool,
"is_update": bool
}
}
]
}
Error Response:
{"error": "No content found for MPEP section {section_number}"}
Examples:
# Get MPEP 2100 (Patentability)
get_mpep_section("2100", max_chunks=50)
# Get subsection
get_mpep_section("608.01")
Query validation:
Section number validation:
Limits:
top_k capped at 20retrieve_k capped at 100Index Location:
mcp_server/index/mpep_index.faissmcp_server/index/mpep_metadata.jsonmcp_server/index/mpep_bm25.jsonSearch Architecture:
Dependencies:
Error Handling: