get_tax_procedure
Retrieve official French tax procedure information from service-public.fr to understand required steps and documentation for specific tax processes.
Instructions
Get information about a tax procedure from service-public.fr
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| procedure_name | Yes | ||
| ctx | No |
Implementation Reference
- french_tax_mcp/server.py:403-434 (registration)Registration of the MCP tool 'get_tax_procedure' with wrapper function that delegates to scraper@mcp.tool( name="get_tax_procedure", description="Get information about a tax procedure from service-public.fr", ) async def get_tax_procedure_wrapper( procedure_name: str, ctx: Optional[Context] = None, ) -> Optional[Dict]: """Get information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') ctx: MCP context for logging Returns: Dict: Dictionary containing procedure information """ try: if ctx: await ctx.info(f"Getting tax procedure information for {procedure_name}") from french_tax_mcp.scrapers.service_public_scraper import get_tax_procedure result = await get_tax_procedure(procedure_name) return result except Exception as e: if ctx: await ctx.error(f"Failed to get tax procedure: {e}") return { "status": "error", "message": f"Error getting tax procedure: {str(e)}", }
- Core handler implementation in ServicePublicScraper class that performs web scraping for tax procedure informationasync def get_tax_procedure(self, procedure_name: str) -> Dict: """Scrape information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') Returns: Dictionary containing information about the procedure """ logger.info(f"Scraping information for procedure {procedure_name}") try: # Map procedure name to URL url = self._get_procedure_url(procedure_name) if not url: return self.format_result( status="error", message=f"Unknown procedure: {procedure_name}", data={"procedure": procedure_name}, ) # Get the page response = await self.get_page(url) # Parse HTML soup = self.parse_html(response.text) # Extract procedure information procedure_info = self._extract_procedure_info(soup, procedure_name) return self.format_result( status="success", data=procedure_info, message=f"Successfully retrieved information for procedure {procedure_name}", source_url=f"{BASE_URL}{url}", ) except Exception as e: logger.error(f"Error scraping procedure information: {e}") return self.format_result( status="error", message=f"Failed to retrieve procedure information: {str(e)}", data={"procedure": procedure_name}, error=e, )
- Helper function that provides a standalone interface to the scraper's get_tax_procedure method via singleton instanceasync def get_tax_procedure(procedure_name: str) -> Dict: """Scrape information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') Returns: Dictionary containing information about the procedure """ return await service_public_scraper.get_tax_procedure(procedure_name)