Skip to main content
Glama
john-walkoe

USPTO Final Petition Decisions MCP Server

by john-walkoe

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
USPTO_API_KEYYesYour email address (required by USPTO for API access)
USPTO_TIMEOUTNoTimeout in seconds for USPTO API requests (optional, for tuning API request timeouts)
FPD_PROXY_PORTNoLocal proxy port for standalone mode (only used when CENTRALIZED_PROXY_PORT is 'none')8081
MISTRAL_API_KEYNoOptional API key for Mistral OCR capabilities (for extracting text from scanned PDFs)
CENTRALIZED_PROXY_PORTNoPort for centralized proxy when USPTO PFW MCP is installed (set to 8080 when PFW is installed, or 'none' for standalone use)none
USPTO_DOWNLOAD_TIMEOUTNoTimeout in seconds for USPTO document downloads (optional, for tuning download timeouts)

Tools

Functions exposed to the LLM to take actions

NameDescription
Search_petitions_minimal

Ultra-fast discovery search for Final Petition Decisions (50-100 results).

NEW: Minimal tier convenience parameters (9 total) - no query syntax needed!

Use for: High-volume petition discovery, finding petitions by applicant, decision type, or date range. Returns: 8 essential fields - petition ID, application number, patent number, applicant name, decision type, petition mail date, decision date, deciding office.

Convenience Parameters:

  • applicant_name: Company/party name (e.g., 'Apple Inc.')

  • application_number: Application number (e.g., '17896175')

  • patent_number: Patent number if granted (e.g., '11788453')

  • decision_type: Outcome (e.g., 'GRANTED', 'DENIED', 'DISMISSED')

  • deciding_office: Office that decided (e.g., 'OFFICE OF PETITIONS')

  • petition_date_start/end: Filing date range (YYYY-MM-DD)

  • decision_date_start/end: Decision date range (YYYY-MM-DD)

Examples:

# Denied petitions for company fpd_search_petitions_minimal(applicant_name="TechCorp Inc.", decision_type="DENIED", limit=50) # Hybrid: keywords + convenience fpd_search_petitions_minimal(query="machine learning", decision_type="DENIED", limit=50)

Progressive Disclosure Workflow:

  1. Use THIS TOOL for discovery with minimal params (50-100 results)

  2. Present top results to user for selection

  3. Use fpd_search_petitions_balanced for detailed analysis (10-20 selected)

    • Balanced tier adds: petition_type_code, art_unit, technology_center, prosecution_status, entity_status

  4. Use fpd_get_petition_details for complete petition data

Cross-MCP Integration:

  • {QueryFieldNames.APPLICATION_NUMBER} -> Links to Patent File Wrapper MCP

  • {QueryFieldNames.PATENT_NUMBER} -> Links to PTAB MCP for post-grant challenges

  • Use balanced tier to get {QueryFieldNames.ART_UNIT} for PFW cross-reference

Search_petitions_balanced

Balanced search for Final Petition Decisions with comprehensive fields (10-20 results).

Balanced tier convenience parameters (14 total) - adds 5 advanced filters to minimal tier.

Use for: Detailed petition analysis after minimal search, cross-referencing with PFW/PTAB data, analyzing petition types and legal context. Returns: 18 key fields including petition type, art unit, technology center, prosecution status, legal issues, CFR rules cited, statutes cited, entity status, and invention title.

All Minimal Parameters (9) - same as Search_petitions_minimal:

  • applicant_name, application_number, patent_number

  • decision_type, deciding_office

  • petition_date_start/end, decision_date_start/end

Additional Balanced Parameters (5):

  • petition_type_code: Petition type (e.g., '551' = revival, '182' = restriction)

  • art_unit: Art unit number (e.g., '2128') - enables PFW cross-reference

  • technology_center: Tech center (e.g., '21', '2100')

  • prosecution_status: Status (e.g., 'During examination', 'Patented Case')

  • entity_status: Entity type (e.g., 'Small', 'Large', 'Undiscounted')

Examples:

# Revival petitions (type 551) that were denied fpd_search_petitions_balanced(petition_type_code="551", decision_type="DENIED", limit=20) # Complex combination for quality analysis fpd_search_petitions_balanced( art_unit="2128", petition_type_code="551", decision_type="DENIED", prosecution_status="During examination", limit=20 )

Progressive Disclosure Workflow:

  1. Discovery: fpd_search_petitions_minimal(decision_type='DENIED', limit=100)

  2. User selects interesting petitions

  3. Analysis: fpd_search_petitions_balanced with advanced filters (art_unit, petition_type_code)

  4. Cross-reference: Use art_unit with PFW, use patentNumber with PTAB

Cross-MCP Integration:

  • applicationNumberText -> pfw_search_applications_minimal with fields parameter for targeted data

  • patentNumber -> ptab_search_proceedings_minimal(patent_number=X)

  • groupArtUnitNumber -> pfw_search_applications_minimal(art_unit=X, fields=[...])

  • firstApplicantName -> Match parties across PFW/PTAB MCPs

Search_petitions_by_art_unit

Search petitions by art unit number for examiner/art unit quality analysis.

Use for: Art unit quality assessment, systematic petition patterns, examiner behavior analysis. Returns balanced field set for cross-referencing with PFW examiner data and PTAB challenge rates.

Example:

  • fpd_search_petitions_by_art_unit(art_unit="2128", limit=50)

  • fpd_search_petitions_by_art_unit(art_unit="2128", date_range="2020-01-01:2024-12-31")

Analysis patterns:

  • High petition frequency → Difficult examiners or challenging technology

  • Frequent revival petitions (37 CFR 1.137) → Docketing/procedural issues

  • Examiner disputes (37 CFR 1.181) → Communication/quality problems

  • Denied petitions → Weak prosecution practices

Cross-MCP integration:

  • applicationNumberText → pfw_search_applications_minimal with fields parameter for examiner names

  • Group petitions by examiner to identify individual patterns

  • patentNumber → PTAB MCP to correlate petition history with challenge success

Parameters:

  • art_unit: Art unit number (e.g., "2128", "3600")

  • date_range: Optional date range (format: "YYYY-MM-DD:YYYY-MM-DD")

  • limit: Maximum results (default 50, max 200)

Search_petitions_by_application

Get all petition decisions for a specific application number.

Use for: Complete petition history, red flag identification, cross-referencing with PFW prosecution timeline.

Examples:

  • Basic petition check: fpd_search_petitions_by_application(application_number="17896175")

  • With documents: fpd_search_petitions_by_application(application_number="17896175", include_documents=True)

Red flag analysis:

  • Multiple petitions → Difficult prosecution (missed deadlines, examiner conflicts)

  • Revival petitions (37 CFR 1.137) → Application was abandoned

  • Examiner disputes (37 CFR 1.181) → Contentious relationship with examiner

  • Denied petitions → Unsuccessful arguments, potential prosecution quality issues

Cross-MCP integration:

  1. Use pfw_search_applications_minimal with fields parameter for prosecution context

  2. Compare petition dates with prosecution timeline (office actions, RCEs)

  3. Identify if petitions correlate with examiner changes or specific prosecution events

  4. If patented, check PTAB for post-grant challenges

Parameters:

  • application_number: USPTO application number (e.g., "17896175", "15/123,456")

  • include_documents: Include documentBag in response (default False)

Get_petition_details

Get complete details for a specific petition by petition ID (UUID).

⚠️ CRITICAL: Proxy URLs in documentBag require proxy server to be running! MANDATORY WORKFLOW when include_documents=True:

  1. Call fpd_get_petition_details(petition_id=X, include_documents=True)

  2. Call fpd_get_document_download(petition_id=X, document_identifier=DOC1) - starts proxy

  3. NOW provide all document download links to user - proxy is ready

Use for: Deep dive into specific petition, document metadata access, full legal context review.

Returns:

  • All petition fields (no filtering)

  • Document metadata if include_documents=True (file names, page counts, identifiers)

  • Full legal context (all issues, CFR rules, statutes cited)

  • Complete timeline (petition filed → decision issued)

Document access:

  • Use documentIdentifier from documentBag with fpd_get_document_download for browser access

  • Typical documents: Petition PDF, Decision PDF, supporting exhibits

Parameters:

  • petition_id: Petition decision record identifier (UUID from search results)

  • include_documents: Include documentBag with file metadata (default True)

FPD_get_document_download

Generate browser-accessible download URL for petition documents (PDFs) via secure proxy.

ALWAYS-ON PROXY (DEFAULT): Proxy server starts with MCP - download links work immediately.

Workflow:

  1. fpd_get_petition_details(petition_id='uuid', include_documents=True) → get documentBag

  2. fpd_get_document_download(petition_id='uuid', document_identifier='ABC123') → get download link

  3. Provide download link to user

CRITICAL RESPONSE FORMAT - Always format with BOTH clickable link and raw URL: 📁 | Raw URL: {proxy_url}

Why both formats?

  • Clickable links work in Claude Desktop and most clients

  • Raw URLs enable copy/paste in Msty and other clients where links aren't clickable

Document types:

  • Petition document: Original petition filed with USPTO

  • Decision document: Director's final decision

  • Supporting exhibits: Declarations, prior art, technical documents

Parameters:

  • petition_id: Petition UUID from search results

  • document_identifier: Document identifier from documentBag

  • proxy_port: Optional (defaults to FPD_PROXY_PORT env var or 8081)

  • generate_persistent_link: Generate 7-day persistent link (default: True)

    • True: Attempts persistent link via USPTO PFW MCP (works across MCP restarts)

    • False: Session-based link (works while MCP running, no PFW required)

FPD_get_document_content_with_mistral_ocr

Extract full text from USPTO petition documents with intelligent hybrid extraction (PyPDF2 first, Mistral OCR fallback).

PREREQUISITE: First use fpd_get_petition_details to get document_identifier from documentBag. Auto-optimizes cost: free PyPDF2 for text-based PDFs, ~$0.001/page Mistral OCR only for scanned documents. MISTRAL_API_KEY is optional - without it, only PyPDF2 extraction is available (works well for text-based PDFs).

USE CASES:

  • Analyze petition legal arguments and Director's reasoning

  • Extract petition issues, CFR rules cited, statutory references

  • Detect patterns across multiple petitions (e.g., common denial reasons)

  • Correlate petition text with PTAB challenge strategies

  • Profile examiner behavior from supervisory review petitions

COST OPTIMIZATION:

  • auto_optimize=True (default): Try free PyPDF2 first, fallback to Mistral OCR if needed (70% cost savings)

  • auto_optimize=False: Use Mistral OCR directly (~$0.001/page)

Returns: extracted_content, extraction_method, processing_cost_usd, page_count

Example workflow:

  1. fpd_get_petition_details(petition_id='0b71b685-...', include_documents=True)

  2. fpd_get_document_content(petition_id='0b71b685-...', document_identifier='DSEN5APWPHOENIX')

  3. Analyze extracted text for legal arguments, issues, and patterns

For document selection strategies and cost optimization, use FPD_get_guidance('cost').

FPD_get_guidance

Get selective USPTO FPD guidance sections for context-efficient workflows.

🎯 QUICK REFERENCE - What section for your question?

🔍 "Find petitions by company/art unit" → tools 🚩 "Identify petition red flags" → red_flags 📄 "Download petition documents" → documents 🤝 "Correlate petitions with prosecution" → workflows_pfw ⚖️ "Analyze petition + PTAB patterns" → workflows_ptab 📊 "Citation quality + petition correlation" → workflows_citations 🏢 "Complete portfolio due diligence" → workflows_complete 📚 "Research CFR rules with Assistant" → workflows_assistant 🎯 "Ultra-minimal PFW + FPD workflows" → ultra_context 💰 "Reduce extraction costs" → cost

Available sections:

  • overview: Available sections and MCP overview (default)

  • workflows_pfw: FPD + PFW integration workflows

  • workflows_ptab: FPD + PTAB integration workflows

  • workflows_citations: FPD + Citations integration workflows

  • workflows_complete: Four-MCP complete lifecycle analysis

  • workflows_assistant: Pinecone Assistant + FPD research workflows

  • tools: Tool catalog, progressive disclosure, parameters

  • red_flags: Petition red flag indicators and CFR rules

  • documents: Document extraction, downloads, proxy configuration

  • ultra_context: PFW fields parameter + ultra-minimal workflows

  • cost: Cost optimization for document extraction

Context Efficiency Benefits:

  • 80-95% token reduction (2-8KB per section vs 62KB total)

  • Targeted guidance for specific workflows

  • Same comprehensive content organized for efficiency

  • Consistent pattern with PFW MCP

Prompts

Interactive templates invoked by user choice

NameDescription
company_petition_risk_assessment_PFWAnalyze company petition track record for due diligence. At least ONE identifier required (company_name, application_number, or patent_number). include_details: true/false for detailed analysis. Requires PFW MCP.
art_unit_quality_assessmentEvaluate art unit prosecution quality via petition patterns. art_unit* (required). comparison_analysis: true/false for technology center comparison.
revival_petition_analysisFind abandonment patterns and revival success rates. At least ONE required (company_name or art_unit). include_reasoning: true/false for Director's reasoning. outcome_focus: all/granted/denied/dismissed.
petition_document_research_packageCollect comprehensive petition documents. At least ONE required (petition_identifier or application_number). extract_text: true/false for text extraction. document_priority: high/medium/all for filtering.
complete_portfolio_due_diligence_pfw_ptabComplete patent lifecycle risk assessment. company_name* (required). portfolio_size_limit: max applications to analyze (default 50). risk_scoring: true/false for risk scores. Requires PFW + PTAB MCPs.
litigation_research_setup_pfwPrepare litigation research with prosecution + petition history. At least ONE required (patent_number or application_number). include_prosecution: true/false for prosecution history. priority_documents: litigation/due_diligence/all. Requires PFW MCP.
prosecution_quality_correlation_pfwCorrelate examiner patterns with petition frequency. At least ONE required (art_unit or examiner_name). statistical_analysis: true/false for correlation metrics. Requires PFW MCP.
patent_vulnerability_assessment_ptabCorrelate petition red flags with PTAB challenge outcomes. At least ONE required (company_name or patent_numbers). vulnerability_threshold: low/medium/high for risk sensitivity. predictive_analysis: true/false for vulnerability modeling. Requires PTAB MCP.
petition_quality_with_citation_intelligence_PFW_FPD_CITATIONSArt unit petition quality assessment enhanced with citation intelligence. art_unit* (required). include_citation_analysis: true/false for citation analysis. analysis_depth: basic/standard/comprehensive for thoroughness. Requires PFW + FPD + Enhanced Citations MCPs.
examiner_dispute_citation_analysis_PFW_FPD_CITATIONSAnalyze citation patterns in examiner dispute petitions. At least ONE required (examiner_name or art_unit). petition_type: 37 CFR 1.137 (revival)/37 CFR 1.181 (examiner disputes)/37 CFR 1.182 (restriction). include_comparison: true/false for comparing disputed vs non-disputed apps. Requires PFW + FPD + Enhanced Citations MCPs.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/john-walkoe/uspto_fpd_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server