Guides Claude through a Freedom-to-Operate (FTO) patent claim analysis using the Espacenet patent tools. Teaches how to identify relevant in-force patents, read and map claims against product features, check legal status as a gatekeeper, and assess jurisdictional coverage via patent families. Produces a structured FTO risk assessment. Triggers on: freedom to operate, FTO analysis, patent infringement risk, claim analysis, patent clearance, design around, patent risk assessment, do we infringe, is this patented.
From patent-search-mcpnpx claudepluginhub navisbio/patent-search-mcp --plugin patent-search-mcpThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
You are conducting a Freedom-to-Operate analysis using the Espacenet patent tools. FTO analysis determines whether a product or process can be commercialized without infringing active patent claims in the target markets.
This is the highest-stakes patent workflow. Be thorough and precise. Every claim element matters — a patent is only infringed if ALL elements of at least one independent claim are met.
Product/process description
--> Identify key features + target markets
--> Search for relevant patents (CQL)
--> Filter by legal status (in force only)
--> Read independent claims of active patents
--> Map claim elements to product features
--> Check family coverage (jurisdictions)
--> Assess risk level per patent
--> FTO risk report
Before searching, extract from the user's description:
Example: "We want to launch a PEGylated interferon-alpha formulation for hepatitis B in the US and EU"
Build targeted CQL queries covering:
For CQL syntax details, see the prior-art-search skill's CQL reference.
search_patents(query='ta="PEGylated" AND ta="interferon" AND ta="hepatitis"', count_only=true)
search_patents(query='pa="ROCHE*" AND ta="pegylated interferon"', count_only=true)
search_patents(query='ic="A61K47/60" AND ta="interferon alpha"', count_only=true)
For FTO, what matters is what's claimed, not what's described. However, CQL full-text fields (claims=, ftxt=) are unreliable for phrase searches and don't support wildcards. Use ta= for CQL queries, then search_in_patent_text to search within claims of specific patents. Note: cl= searches IPC+CPC classification, NOT claims text.
Focus on patents published in the last 20 years (patents expire ~20 years from filing).
This is the critical filter. Before reading claims in detail, check legal status:
get_patent_legal_status(document_number="EP1000000")
Classify each patent into:
| Status | Action | Why |
|---|---|---|
| Granted + In Force | Full claim analysis required | Active legal risk |
| Granted + Lapsed/Expired | Low priority — note but skip deep analysis | No longer enforceable |
| Pending Application | Monitor — check claims but flag as uncertain | May never grant; claims may narrow |
| Withdrawn/Refused | Skip | No legal risk |
Skip expired and withdrawn patents early — they cannot be infringed regardless of claim scope. This saves significant API calls on full-text reading.
For each in-force patent, read the claims:
get_patent_claims(document_number="EP1000000", max_characters=15000)
Important: Granted claims (B1/B2) are often not available via OPS full text. The tool will warn you if no claims are found. In that case:
get_patent_family to find a WO equivalent with full textFocus on independent claims only (typically claims 1, ~10-15, and ~20-25 depending on the patent). Independent claims define the broadest scope of protection.
How to identify independent claims:
For each independent claim, break it into individual elements and map against your product:
| Claim Element | Product Feature | Match? |
|---|---|---|
| "A PEGylated protein" | Our PEGylated interferon-alpha | Yes |
| "wherein the protein is interferon-beta" | Our product uses interferon-alpha | No |
| "for treating hepatitis C" | Our indication is hepatitis B | No |
Key principle: ALL elements must match for infringement. If even one element of an independent claim doesn't match your product, that claim is NOT infringed. This is called the "all-elements rule."
If you need to verify specific technical terms in the description:
search_in_patent_text(
document_number="EP1000000",
search_terms=["interferon-alpha", "interferon-beta", "IFN-alpha", "IFN-beta"]
)
Then read around the matches to understand the patent's intended scope:
get_patent_description(document_number="EP1000000", offset=42, max_characters=8000)
For patents that DO pose a risk (claim elements match), check family coverage:
get_patent_family(document_number="EP1000000")
A patent only blocks you in jurisdictions where it's been filed AND granted:
Cross-reference family members with your target markets.
For each analyzed patent, assign a risk level:
| Risk Level | Criteria |
|---|---|
| HIGH | In force, all independent claim elements match product, covers target market |
| MEDIUM | In force, most claim elements match but one element is arguable, or pending application with broad claims |
| LOW | In force but clear non-matching element in all independent claims, or only covers non-target markets |
| NONE | Expired/withdrawn, or no claim overlap |
Executive Summary
High-Risk Patents (detailed analysis for each)
Medium-Risk Patents (summary analysis)
Low-Risk / Cleared Patents
Search Coverage & Limitations
Recommendations
ta= searches (e.g., ta="hepatitis D" → 0 results; use ta="hepatitis delta" or ta="HDV"). Drug names in patent titles often use research codes (e.g., MK-3475) more than INN names (pembrolizumab), especially in earlier filings.get_patent_details to verify its title, applicant, and dates. For batch efficiency, use the document_numbers array parameter to verify up to 100 patents in one call.get_patent_details before citing it in the report.