Spain Legal by Legal Fournier
What this MCP does
Provides Spain-focused visa, residency, NIE/TIE, nationality, tax, Beckham Law, and legal-service routing guidance, including screening tools and consultation availability.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['years_since_last_spanish_residency', 'employment_type', 'move_reason'], 'properties': {'move_reason': {'enum': ['new_spanish_job', 'foreign_remote_work', 'startup_or_innovation', 'intragroup_transfer', 'family_move', 'other'], 'type': 'string', 'description': 'Main reason for relocating to Spain.'}, 'ownership_band': {'enum': ['none', 'under_25', '25_or_more'], 'type': 'string', 'description': 'Optional ownership context for director-style cases.'}, 'employment_type': {'enum': ['spanish_employee', 'foreign_remote_employee', 'director_lt25', 'director_gte25', 'self_employed', 'highly_qualified_professional', 'unknown'], 'type': 'string', 'description': 'Employment structure that will support the move.'}, 'years_since_last_spanish_residency': {'type': 'number', 'minimum': 0, 'description': 'Number of years since the applicant was last a Spanish tax resident.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'summary', 'decision_trace', 'key_rules_applied', 'review_level', 'official_legal_sources', 'current_verification_flags', 'reasons', 'blocking_issues', 'qualifying_paths', 'next_steps', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'status': {'enum': ['eligible', 'not_eligible', 'needs_more_info'], 'type': 'string', 'description': 'High-level Beckham eligibility outcome.'}, 'reasons': {'type': 'array', 'items': {'type': 'string', 'description': 'Positive signal supporting eligibility.'}, 'description': 'Positive signals supporting the result.'}, 'summary': {'type': 'string', 'description': 'One-line explanation of the result.'}, 'next_steps': {'type': 'array', 'items': {'type': 'string', 'description': 'Immediate next action for the applicant or agent.'}, 'description': 'Suggested next steps.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references.'}, 'review_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'How much human review is still advisable before treating the result as filing-ready.'}, 'decision_trace': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'finding', 'impact'], 'properties': {'factor': {'type': 'string', 'description': 'Fact bucket or legal factor that was evaluated.'}, 'impact': {'type': 'string', 'description': 'How the finding changed the legal analysis.'}, 'finding': {'type': 'string', 'description': 'What the tool concluded about that factor.'}}, 'additionalProperties': False}, 'description': 'Structured trace of the main Beckham screening factors.'}, 'blocking_issues': {'type': 'array', 'items': {'type': 'string', 'description': 'Issue currently blocking or weakening eligibility.'}, 'description': 'Blocking or weakening issues.'}, 'qualifying_paths': {'type': 'array', 'items': {'type': 'string', 'description': 'Recognized regime entry path that may apply.'}, 'description': 'Potential qualifying paths.'}, 'key_rules_applied': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable rule that drove the Beckham screen.'}, 'description': 'Stable rules applied by the tool.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'official_legal_sources': {'type': 'array', 'items': {'type': 'object', 'required': ['authority', 'title', 'url', 'relevance'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official source URL.'}, 'title': {'type': 'string', 'description': 'Title or pinpoint label for the legal source.'}, 'authority': {'type': 'string', 'description': 'Official authority publishing the source.'}, 'relevance': {'type': 'string', 'description': 'Why this source matters to the tool or resource output.'}}, 'additionalProperties': False}, 'description': 'Official legal sources anchoring the Beckham analysis.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}, 'current_verification_flags': {'type': 'array', 'items': {'type': 'object', 'required': ['area', 'reason', 'check_when', 'official_source_hint'], 'properties': {'area': {'type': 'string', 'description': 'Area of the answer that may need live verification.'}, 'reason': {'type': 'string', 'description': 'Why the answer cannot safely freeze this point as timeless.'}, 'check_when': {'type': 'string', 'description': 'When the agent should stop and verify the current rule or practice.'}, 'official_source_hint': {'type': 'string', 'description': 'Official-source hint for the verification step.'}}, 'additionalProperties': False}, 'description': 'Live-verification warnings for fact-sensitive or time-sensitive Beckham points.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'employment_type': {'enum': ['spanish_employee', 'foreign_remote_employee', 'director_lt25', 'director_gte25', 'self_employed', 'highly_qualified_professional', 'unknown'], 'type': 'string', 'description': 'Employment structure to test against the conceptual tax comparison.'}, 'has_foreign_income': {'type': 'boolean', 'description': 'Whether foreign-source income is material to the profile.'}, 'prefers_predictability': {'type': 'boolean', 'description': 'Whether the applicant values a simpler, more predictable regime structure.'}, 'has_significant_foreign_assets': {'type': 'boolean', 'description': 'Whether foreign assets are materially relevant to planning.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['recommendation', 'summary', 'decision_trace', 'key_rules_applied', 'review_level', 'official_legal_sources', 'current_verification_flags', 'likely_fit_notes', 'comparison', 'caveats', 'next_actions', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'caveats': {'type': 'array', 'items': {'type': 'string', 'description': 'Important caveat.'}, 'description': 'Caveats that limit the comparison.'}, 'summary': {'type': 'string', 'description': 'Short explanation of the recommendation.'}, 'comparison': {'type': 'array', 'items': {'type': 'object', 'required': ['topic', 'beckham', 'standard_irpf'], 'properties': {'topic': {'type': 'string', 'description': 'Comparison topic.'}, 'beckham': {'type': 'string', 'description': 'How Beckham generally behaves on that topic.'}, 'standard_irpf': {'type': 'string', 'description': 'How the standard resident-tax regime behaves on that topic.'}}, 'additionalProperties': False}, 'description': 'Topic-by-topic conceptual comparison.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string', 'description': 'Immediate next action for the analysis.'}, 'description': 'Next actions that sharpen the tax answer.'}, 'review_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'How much human review is still advisable before treating the result as filing-ready.'}, 'decision_trace': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'finding', 'impact'], 'properties': {'factor': {'type': 'string', 'description': 'Fact bucket or legal factor that was evaluated.'}, 'impact': {'type': 'string', 'description': 'How the finding changed the legal analysis.'}, 'finding': {'type': 'string', 'description': 'What the tool concluded about that factor.'}}, 'additionalProperties': False}, 'description': 'Structured trace of the main tax-comparison factors.'}, 'recommendation': {'enum': ['beckham', 'standard_irpf', 'depends'], 'type': 'string', 'description': 'Conceptual starting recommendation.'}, 'likely_fit_notes': {'type': 'array', 'items': {'type': 'string', 'description': 'Why the recommendation leans this way.'}, 'description': 'Why the profile leans toward a given regime.'}, 'key_rules_applied': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable rule used in the tax comparison.'}, 'description': 'Stable rules applied by the tool.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'official_legal_sources': {'type': 'array', 'items': {'type': 'object', 'required': ['authority', 'title', 'url', 'relevance'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official source URL.'}, 'title': {'type': 'string', 'description': 'Title or pinpoint label for the legal source.'}, 'authority': {'type': 'string', 'description': 'Official authority publishing the source.'}, 'relevance': {'type': 'string', 'description': 'Why this source matters to the tool or resource output.'}}, 'additionalProperties': False}, 'description': 'Official tax and mobility sources anchoring the comparison.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}, 'current_verification_flags': {'type': 'array', 'items': {'type': 'object', 'required': ['area', 'reason', 'check_when', 'official_source_hint'], 'properties': {'area': {'type': 'string', 'description': 'Area of the answer that may need live verification.'}, 'reason': {'type': 'string', 'description': 'Why the answer cannot safely freeze this point as timeless.'}, 'check_when': {'type': 'string', 'description': 'When the agent should stop and verify the current rule or practice.'}, 'official_source_hint': {'type': 'string', 'description': 'Official-source hint for the verification step.'}}, 'additionalProperties': False}, 'description': 'Live-verification warnings for entry-path, timing, or filing issues.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['confirmed_consent', 'consent_to_contact', 'name', 'email', 'legal_area', 'case_summary'], 'properties': {'name': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': "User's name for Legal Fournier follow-up."}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': "User's email address for Legal Fournier follow-up."}, 'phone': {'type': 'string', 'maxLength': 80, 'description': 'Optional phone or WhatsApp number.'}, 'lead_id': {'type': 'string', 'maxLength': 120, 'description': 'Optional upstream lead ID.'}, 'urgency': {'enum': ['normal', 'soon', 'urgent'], 'type': 'string', 'description': 'Requested urgency for Legal Fournier review.'}, 'agent_app': {'type': 'string', 'maxLength': 120, 'description': 'Name of the agent app or connector.'}, 'tool_name': {'type': 'string', 'maxLength': 120, 'description': 'Tool or workflow that generated this contact request.'}, 'legal_area': {'enum': ['visa_planning', 'eu_family_route', 'beckham', 'residency_path', 'nie_tie', 'tax_regimes', 'nationality', 'property', 'business', 'wealth', 'appointments', 'other'], 'type': 'string', 'description': 'Main legal or tax area for the request.'}, 'risk_flags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 220}, 'maxItems': 12, 'description': 'Known risk flags or complexity triggers.'}, 'source_url': {'type': 'string', 'format': 'uri', 'description': 'Optional URL where the agent flow started.'}, 'case_summary': {'type': 'string', 'maxLength': 3000, 'minLength': 20, 'description': 'Non-sensitive summary of the matter to send to Legal Fournier.'}, 'referrer_url': {'type': 'string', 'format': 'uri', 'description': 'Optional referrer URL.'}, 'tool_context': {'type': 'string', 'maxLength': 1600, 'description': 'Short note about the tool flow that produced this lead.'}, 'missing_facts': {'type': 'array', 'items': {'type': 'string', 'maxLength': 220}, 'maxItems': 12, 'description': 'Important facts still missing for lawyer review.'}, 'source_surface': {'enum': ['mcp', 'openapi', 'chatgpt_actions', 'claude_connector', 'zapier', 'make', 'n8n', 'relevance_ai', 'cursor', 'vscode', 'gemini_cli', 'claude_code', 'other'], 'type': 'string', 'description': 'Agent surface sending the request.'}, 'idempotency_key': {'type': 'string', 'maxLength': 160, 'minLength': 8, 'description': 'Stable idempotency key for safe retries.'}, 'confirmed_consent': {'type': 'boolean', 'const': True, 'description': 'Must be true only after the user explicitly asks the agent to contact Legal Fournier.'}, 'consent_to_contact': {'type': 'boolean', 'const': True, 'description': 'Must be true only after the user consents to Legal Fournier contacting them.'}, 'preferred_language': {'enum': ['en', 'es', 'fr'], 'type': 'string', 'description': 'Preferred follow-up language.'}, 'agent_handoff_message': {'type': 'string', 'maxLength': 3000, 'description': 'Agent-prepared handoff summary, ideally from route_to_legal_fournier_help.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'maxLength': 260}, 'maxItems': 12, 'description': 'MCP resource URIs already used in the analysis.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok', 'entry_id', 'lead_id', 'lead_status', 'admin_queue', 'source', 'source_surface', 'message', 'representation_notice', 'booking_url', 'next_actions'], 'properties': {'ok': {'type': 'boolean', 'description': 'Whether the request was accepted by Legal Fournier.'}, 'source': {'type': 'string', 'const': 'agent', 'description': 'Lead source bucket.'}, 'lead_id': {'type': 'string', 'description': 'Public lead identifier recorded in WordPress.'}, 'message': {'type': 'string', 'description': 'Human-readable confirmation message.'}, 'entry_id': {'type': 'number', 'description': 'Internal WordPress lead entry ID.'}, 'admin_queue': {'type': 'string', 'description': 'Where Legal Fournier staff can review the request.'}, 'booking_url': {'type': 'string', 'format': 'uri', 'description': 'Site-controlled consultation booking URL to offer when the user wants to speak with Legal Fournier now.'}, 'lead_status': {'enum': ['created', 'duplicate'], 'type': 'string', 'description': 'Whether this was a new accepted lead or an idempotent duplicate.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Safe follow-up instructions for the calling agent.'}, 'source_surface': {'type': 'string', 'description': 'Agent surface recorded for attribution.'}, 'representation_notice': {'type': 'string', 'description': 'Notice that contact request submission does not create representation.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['summary', 'decision_trace', 'key_rules_applied', 'review_level', 'official_legal_sources', 'current_verification_flags', 'key_distinctions', 'forms', 'steps', 'common_mistakes', 'next_actions', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'forms': {'type': 'array', 'items': {'type': 'string', 'description': 'Relevant form or administrative reference.'}, 'description': 'Relevant forms and administrative references.'}, 'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['step', 'title', 'detail'], 'properties': {'step': {'type': 'number', 'description': 'Step number in the procedure.'}, 'title': {'type': 'string', 'description': 'Short title for the step.'}, 'detail': {'type': 'string', 'description': 'What happens in that step.'}}, 'additionalProperties': False}, 'description': 'Ordered process steps.'}, 'summary': {'type': 'string', 'description': 'Short overview of the NIE/TIE process.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string', 'description': 'Immediate next procedural action.'}, 'description': 'Next actions to progress the procedure.'}, 'review_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'How much human review is still advisable before treating the result as filing-ready.'}, 'decision_trace': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'finding', 'impact'], 'properties': {'factor': {'type': 'string', 'description': 'Fact bucket or legal factor that was evaluated.'}, 'impact': {'type': 'string', 'description': 'How the finding changed the legal analysis.'}, 'finding': {'type': 'string', 'description': 'What the tool concluded about that factor.'}}, 'additionalProperties': False}, 'description': 'Structured trace of the procedural distinctions that matter.'}, 'common_mistakes': {'type': 'array', 'items': {'type': 'string', 'description': 'Common mistake applicants make.'}, 'description': 'Common mistakes in NIE/TIE processing.'}, 'key_distinctions': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable distinction between NIE and TIE handling.'}, 'description': 'Key distinctions that agents should preserve.'}, 'key_rules_applied': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable procedural rule applied by the tool.'}, 'description': 'Stable procedural rules applied by the tool.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'official_legal_sources': {'type': 'array', 'items': {'type': 'object', 'required': ['authority', 'title', 'url', 'relevance'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official source URL.'}, 'title': {'type': 'string', 'description': 'Title or pinpoint label for the legal source.'}, 'authority': {'type': 'string', 'description': 'Official authority publishing the source.'}, 'relevance': {'type': 'string', 'description': 'Why this source matters to the tool or resource output.'}}, 'additionalProperties': False}, 'description': 'Official legal and administrative sources anchoring the procedure.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}, 'current_verification_flags': {'type': 'array', 'items': {'type': 'object', 'required': ['area', 'reason', 'check_when', 'official_source_hint'], 'properties': {'area': {'type': 'string', 'description': 'Area of the answer that may need live verification.'}, 'reason': {'type': 'string', 'description': 'Why the answer cannot safely freeze this point as timeless.'}, 'check_when': {'type': 'string', 'description': 'When the agent should stop and verify the current rule or practice.'}, 'official_source_hint': {'type': 'string', 'description': 'Official-source hint for the verification step.'}}, 'additionalProperties': False}, 'description': 'Live-verification warnings for office-level or fee-level volatility.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'area': {'enum': ['immigration', 'tax', 'property', 'business', 'wealth', 'appointments', 'remote_work', 'unknown'], 'type': 'string', 'description': 'Optional broad area when the agent already knows it.'}, 'query': {'type': 'string', 'description': "Natural-language user goal or case summary, such as 'high-income founder buying property in Spain'."}, 'max_results': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'Maximum number of matched public tools to return when include_all_tools is false.'}, 'include_all_tools': {'type': 'boolean', 'description': 'Return the full Legal Fournier public tool catalog instead of only top matches.'}, 'complexity_signals': {'type': 'array', 'items': {'type': 'string', 'description': 'Specific complexity signal, blocker, or risk fact.'}, 'description': 'Signals that should affect matching and escalation.'}, 'preferred_language': {'enum': ['en', 'es', 'fr', 'unknown'], 'type': 'string', 'description': 'Preferred public-page language when an equivalent translated tool exists.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query_summary', 'catalog_size', 'matched_tools', 'recommended_mcp_sequence', 'next_actions', 'handoff_url', 'catalog_resource_uri', 'agent_use_rules', 'legal_notice'], 'properties': {'handoff_url': {'type': 'string', 'format': 'uri', 'description': 'Site-controlled consultation handoff URL.'}, 'catalog_size': {'type': 'number', 'description': 'Number of public Legal Fournier tools in the MCP catalog.'}, 'legal_notice': {'type': 'string', 'description': 'General legal notice that agents must preserve when using tool results.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Immediate actions for the agent after matching the public tool.'}, 'matched_tools': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'category', 'url', 'selected_url', 'selected_language', 'description', 'fit', 'score', 'why', 'use_when', 'not_for', 'keywords', 'complexity_triggers', 'related_mcp_tools', 'related_resource_uris', 'agent_workflow', 'handoff_trigger', 'language_links'], 'properties': {'id': {'type': 'string', 'description': 'Stable Legal Fournier public tool identifier.'}, 'fit': {'enum': ['strong', 'possible'], 'type': 'string', 'description': 'How strongly this public tool fits the case.'}, 'url': {'type': 'string', 'format': 'uri', 'description': 'Canonical English public tool URL.'}, 'why': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Reasons this public tool matched the case.'}, 'score': {'type': 'number', 'description': 'Internal ranking score used to order tools.'}, 'title': {'type': 'string', 'description': 'Public tool title.'}, 'not_for': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Cases where the tool should not be used alone.'}, 'category': {'enum': ['immigration', 'tax', 'property', 'business', 'wealth', 'appointments', 'remote_work'], 'type': 'string', 'description': 'Primary case area for the tool.'}, 'keywords': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Search and matching terms for the tool.'}, 'use_when': {'type': 'array', 'items': {'type': 'string'}, 'description': 'When agents should send users to this tool.'}, 'description': {'type': 'string', 'description': 'Short description of the public tool.'}, 'selected_url': {'type': 'string', 'format': 'uri', 'description': 'Best public URL after applying the preferred language.'}, 'agent_workflow': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Suggested agent workflow for this tool.'}, 'language_links': {'type': 'array', 'items': {'type': 'object', 'required': ['language', 'url', 'title'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Language-specific public tool URL.'}, 'title': {'type': 'string', 'description': 'Human-readable title for this language URL.'}, 'language': {'enum': ['en', 'es', 'fr'], 'type': 'string', 'description': 'Language for this public tool URL.'}}, 'additionalProperties': False}, 'description': 'Available translated versions of the public tool page.'}, 'handoff_trigger': {'type': 'string', 'description': 'When the agent should escalate this tool flow.'}, 'related_mcp_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string'}, 'description': 'MCP tools that pair with this public tool.'}, 'selected_language': {'enum': ['en', 'es', 'fr'], 'type': 'string', 'description': 'Language used for selected_url.'}, 'complexity_triggers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Signals that should push the case toward human review.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}}, 'additionalProperties': False}, 'description': 'Ranked public tools and their agent workflow guidance.'}, 'query_summary': {'type': 'string', 'description': 'Short summary of the matching inputs and result count.'}, 'agent_use_rules': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Rules for agents using the public tools with MCP outputs.'}, 'catalog_resource_uri': {'type': 'string', 'description': 'Canonical MCP resource URI for the complete public tool catalog.'}, 'recommended_mcp_sequence': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Recommended MCP tool sequence before the public-page or human handoff.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to', 'timezone'], 'properties': {'to': {'type': 'string', 'description': 'End of the availability window as an ISO 8601 date-time.'}, 'from': {'type': 'string', 'description': 'Start of the availability window as an ISO 8601 date-time.'}, 'timezone': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'IANA timezone for the customer, such as Europe/Madrid.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['success', 'openapi_url', 'timezone', 'duration_minutes', 'booking_enabled', 'fulfillment_mode', 'fulfillment_notice', 'slots', 'quote_endpoint', 'payment_endpoint'], 'properties': {'slots': {'type': 'array', 'items': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string'}, 'start': {'type': 'string'}}, 'additionalProperties': False}}, 'success': {'type': 'boolean', 'const': True}, 'timezone': {'type': 'string'}, 'openapi_url': {'type': 'string', 'format': 'uri'}, 'quote_endpoint': {'type': 'string', 'format': 'uri'}, 'booking_enabled': {'type': 'boolean'}, 'duration_minutes': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'fulfillment_mode': {'type': 'string'}, 'payment_endpoint': {'type': 'string', 'format': 'uri'}, 'fulfillment_notice': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['success', 'openapi_url', 'offers', 'settlement_notice', 'agent_instructions'], 'properties': {'offers': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'price_usd', 'amount_atomic', 'currency', 'network', 'payment_protocol', 'availability', 'quote_endpoint', 'payment_endpoint'], 'properties': {'id': {'enum': ['email_consultation', 'call_consultation'], 'type': 'string'}, 'name': {'type': 'string'}, 'network': {'type': 'string'}, 'currency': {'type': 'string', 'const': 'USDC'}, 'price_usd': {'type': 'string'}, 'availability': {'enum': ['asynchronous', 'scheduled'], 'type': 'string'}, 'confirmation': {'type': 'string'}, 'response_sla': {'type': 'string'}, 'amount_atomic': {'type': 'string'}, 'quote_endpoint': {'type': 'string', 'format': 'uri'}, 'duration_minutes': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'payment_endpoint': {'type': 'string', 'format': 'uri'}, 'payment_protocol': {'type': 'string', 'const': 'x402-v2'}, 'availability_endpoint': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}}, 'success': {'type': 'boolean', 'const': True}, 'openapi_url': {'type': 'string', 'format': 'uri'}, 'settlement_notice': {'type': 'string'}, 'agent_instructions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['current_status', 'years_in_spain'], 'properties': {'current_status': {'enum': ['new_arrival', 'temporary_resident', 'digital_nomad', 'eu_citizen_registered', 'eu_family_member_resident', 'student', 'long_term_resident', 'irregular_status', 'citizenship_applicant'], 'type': 'string', 'description': 'Current Spanish immigration or nationality status.'}, 'years_in_spain': {'type': 'number', 'minimum': 0, 'description': 'Years already spent in Spain under the relevant stay or residence history.'}, 'nationality_track': {'enum': ['unknown', 'standard_10_year', 'ibero_2_year', 'one_year_special', 'refugee_5_year'], 'type': 'string', 'description': 'Optional nationality timeline group for a more specific nationality answer.'}, 'has_absence_concerns': {'type': 'boolean', 'description': 'Whether absences or continuity problems may weaken the residence or nationality clock.'}, 'special_nationality_basis': {'enum': ['not_specified', 'born_in_spain', 'married_to_spanish', 'widowed_from_spanish', 'spanish_parent_or_grandparent', 'guardianship_of_spanish_person'], 'type': 'string', 'description': 'Optional basis for the one-year nationality track when that exception is being claimed.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['summary', 'permanent_residency_status', 'nationality_status', 'decision_trace', 'key_rules_applied', 'review_level', 'official_legal_sources', 'current_verification_flags', 'milestones', 'next_steps', 'caution_notes', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'summary': {'type': 'string', 'description': 'Short explanation of where the person sits on the path.'}, 'milestones': {'type': 'array', 'items': {'type': 'string', 'description': 'Milestone that has been reached or remains pending.'}, 'description': 'Key milestones on the path.'}, 'next_steps': {'type': 'array', 'items': {'type': 'string', 'description': 'Immediate next action.'}, 'description': 'Immediate next steps.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references.'}, 'review_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'How much human review is still advisable before treating the result as filing-ready.'}, 'caution_notes': {'type': 'array', 'items': {'type': 'string', 'description': 'Important caution for this path.'}, 'description': 'Important cautions.'}, 'decision_trace': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'finding', 'impact'], 'properties': {'factor': {'type': 'string', 'description': 'Fact bucket or legal factor that was evaluated.'}, 'impact': {'type': 'string', 'description': 'How the finding changed the legal analysis.'}, 'finding': {'type': 'string', 'description': 'What the tool concluded about that factor.'}}, 'additionalProperties': False}, 'description': 'Structured trace of the main timing factors.'}, 'key_rules_applied': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable rule used in the timeline analysis.'}, 'description': 'Stable rules applied by the tool.'}, 'nationality_status': {'enum': ['unknown_track', 'review_needed', 'building_time', 'likely_eligible', 'already_in_process'], 'type': 'string', 'description': 'Nationality stage given the provided track information.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'official_legal_sources': {'type': 'array', 'items': {'type': 'object', 'required': ['authority', 'title', 'url', 'relevance'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official source URL.'}, 'title': {'type': 'string', 'description': 'Title or pinpoint label for the legal source.'}, 'authority': {'type': 'string', 'description': 'Official authority publishing the source.'}, 'relevance': {'type': 'string', 'description': 'Why this source matters to the tool or resource output.'}}, 'additionalProperties': False}, 'description': 'Official legal sources anchoring the residence and nationality timeline analysis.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}, 'current_verification_flags': {'type': 'array', 'items': {'type': 'object', 'required': ['area', 'reason', 'check_when', 'official_source_hint'], 'properties': {'area': {'type': 'string', 'description': 'Area of the answer that may need live verification.'}, 'reason': {'type': 'string', 'description': 'Why the answer cannot safely freeze this point as timeless.'}, 'check_when': {'type': 'string', 'description': 'When the agent should stop and verify the current rule or practice.'}, 'official_source_hint': {'type': 'string', 'description': 'Official-source hint for the verification step.'}}, 'additionalProperties': False}, 'description': 'Live-verification warnings for route, continuity, or timing issues.'}, 'permanent_residency_status': {'enum': ['not_started', 'building_time', 'review_needed', 'likely_eligible', 'already_long_term'], 'type': 'string', 'description': 'Long-term residence stage.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['nationality', 'income_source', 'intent'], 'properties': {'intent': {'enum': ['work', 'retire', 'invest'], 'type': 'string', 'description': 'Main relocation intent.'}, 'nationality': {'type': 'string', 'description': 'Applicant nationality as a country name or ISO-style country code.'}, 'income_source': {'enum': ['employee', 'freelancer', 'passive'], 'type': 'string', 'description': 'Main source of income for the move.'}, 'employer_location': {'enum': ['spain', 'outside_spain', 'mixed', 'unknown'], 'type': 'string', 'description': 'Where the main employer or client base is located, if known.'}, 'has_eu_family_link': {'type': 'boolean', 'description': 'Whether an EU family-member route may need separate review.'}, 'investment_profile': {'enum': ['passive_capital', 'operating_business', 'none'], 'type': 'string', 'description': 'Whether the investment plan is passive or tied to an operating business.'}, 'has_spanish_job_offer': {'type': 'boolean', 'description': 'Whether the applicant already has a Spanish job offer.'}, 'eu_family_relationship': {'enum': ['spouse_or_registered_partner', 'child_or_dependent_parent', 'extended_family_or_other', 'unknown'], 'type': 'string', 'description': 'Optional relationship label when an EU-family route may be relevant.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['profile_summary', 'nationality_classification', 'decision_trace', 'key_rules_applied', 'review_level', 'official_legal_sources', 'current_verification_flags', 'ranked_routes', 'ruled_out_routes', 'general_notes', 'next_actions', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references, demoted behind MCP-native context.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string', 'description': 'Immediate next action for the agent or user.'}, 'description': 'Next actions to progress the analysis.'}, 'review_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'How much human review is still advisable before treating the result as filing-ready.'}, 'general_notes': {'type': 'array', 'items': {'type': 'string', 'description': 'General note about the recommendation set.'}, 'description': 'General notes that apply across the route list.'}, 'ranked_routes': {'type': 'array', 'items': {'type': 'object', 'required': ['route_id', 'title', 'fit', 'score', 'why', 'evergreen_requirements', 'common_use_cases', 'next_step', 'related_resource_uri'], 'properties': {'fit': {'enum': ['strong', 'possible', 'unlikely'], 'type': 'string', 'description': 'How well the route fits the described profile.'}, 'why': {'type': 'array', 'items': {'type': 'string', 'description': 'Profile-specific reason for this route ranking.'}, 'description': 'Reasons the route was ranked here.'}, 'score': {'type': 'number', 'description': 'Internal ranking score used to order the routes.'}, 'title': {'type': 'string', 'description': 'Human-readable route title.'}, 'route_id': {'type': 'string', 'description': 'Stable route identifier.'}, 'next_step': {'type': 'string', 'description': 'Immediate next action to validate or progress the route.'}, 'common_use_cases': {'type': 'array', 'items': {'type': 'string', 'description': 'Typical factual pattern for the route.'}, 'description': 'Typical use cases for the route.'}, 'related_resource_uri': {'type': 'string', 'description': 'Canonical MCP resource URI for the route pack.'}, 'evergreen_requirements': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable, non-volatile requirement logic for the route.'}, 'description': 'Stable requirement summary.'}}, 'additionalProperties': False}, 'description': 'Ranked visa or residence routes.'}, 'decision_trace': {'type': 'array', 'items': {'type': 'object', 'required': ['factor', 'finding', 'impact'], 'properties': {'factor': {'type': 'string', 'description': 'Fact bucket or legal factor that was evaluated.'}, 'impact': {'type': 'string', 'description': 'How the finding changed the legal analysis.'}, 'finding': {'type': 'string', 'description': 'What the tool concluded about that factor.'}}, 'additionalProperties': False}, 'description': 'Structured trace of the main route-selection factors.'}, 'profile_summary': {'type': 'string', 'description': 'One-line summary of the screened profile.'}, 'ruled_out_routes': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'reason'], 'properties': {'title': {'type': 'string', 'description': 'Route that was intentionally ruled out.'}, 'reason': {'type': 'string', 'description': 'Why that route is not being recommended under stable logic.'}}, 'additionalProperties': False}, 'description': 'Common routes ruled out by stable legal logic.'}, 'key_rules_applied': {'type': 'array', 'items': {'type': 'string', 'description': 'Stable legal rule used by the screening logic.'}, 'description': 'Stable rules that drove the recommendation.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'official_legal_sources': {'type': 'array', 'items': {'type': 'object', 'required': ['authority', 'title', 'url', 'relevance'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Official source URL.'}, 'title': {'type': 'string', 'description': 'Title or pinpoint label for the legal source.'}, 'authority': {'type': 'string', 'description': 'Official authority publishing the source.'}, 'relevance': {'type': 'string', 'description': 'Why this source matters to the tool or resource output.'}}, 'additionalProperties': False}, 'description': 'Official legal sources that anchor the recommendation.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}, 'current_verification_flags': {'type': 'array', 'items': {'type': 'object', 'required': ['area', 'reason', 'check_when', 'official_source_hint'], 'properties': {'area': {'type': 'string', 'description': 'Area of the answer that may need live verification.'}, 'reason': {'type': 'string', 'description': 'Why the answer cannot safely freeze this point as timeless.'}, 'check_when': {'type': 'string', 'description': 'When the agent should stop and verify the current rule or practice.'}, 'official_source_hint': {'type': 'string', 'description': 'Official-source hint for the verification step.'}}, 'additionalProperties': False}, 'description': 'Live-verification warnings for volatile or fact-sensitive points.'}, 'nationality_classification': {'enum': ['eu_eea_swiss', 'non_eu'], 'type': 'string', 'description': 'High-level nationality bucket used by the route logic.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['area'], 'properties': {'area': {'enum': ['visa_planning', 'eu_family_route', 'beckham', 'residency_path', 'nie_tie', 'tax_regimes', 'nationality'], 'type': 'string', 'description': 'Area of Spain legal help that needs human escalation.'}, 'urgency': {'enum': ['normal', 'soon', 'urgent'], 'type': 'string', 'description': 'How quickly the user needs human help.'}, 'blockers': {'type': 'array', 'items': {'type': 'string', 'description': 'Specific blocker, uncertainty, or live issue requiring human review.'}, 'description': 'Known blockers that make a self-serve answer less reliable.'}, 'already_filed': {'type': 'boolean', 'description': 'Whether the user already has a live filing, notice, denial, or active procedure.'}, 'preferred_language': {'enum': ['en', 'es', 'fr'], 'type': 'string', 'description': 'Preferred language for the human handoff.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['should_escalate', 'urgency', 'summary', 'representation_notice', 'recommended_service', 'booking_url', 'why_now', 'what_to_prepare', 'intake_fields', 'agent_handoff_message', 'suggested_follow_up_tools', 'related_resource_uris', 'references'], 'properties': {'summary': {'type': 'string', 'description': 'Short explanation of the handoff recommendation.'}, 'urgency': {'enum': ['normal', 'soon', 'urgent'], 'type': 'string', 'description': 'Urgency level used for the handoff recommendation.'}, 'why_now': {'type': 'array', 'items': {'type': 'string', 'description': 'Reason the handoff should happen now.'}, 'description': 'Reasons supporting escalation.'}, 'references': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Secondary follow-up URL for optional human or website context.'}, 'label': {'type': 'string', 'description': 'Short label for the external reference.'}, 'reason': {'type': 'string', 'description': 'Why the external reference may still help after using the MCP result.'}}, 'additionalProperties': False}, 'description': 'Secondary Legal Fournier references for the handoff.'}, 'booking_url': {'type': 'string', 'format': 'uri', 'description': 'Preferred consultation-booking URL when the user wants direct legal advice now.'}, 'intake_fields': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'value', 'required', 'status', 'guidance'], 'properties': {'key': {'type': 'string', 'description': 'Stable intake field key for downstream routing or form mapping.'}, 'label': {'type': 'string', 'description': 'Human-readable intake field label.'}, 'value': {'type': 'string', 'description': 'Current field value or an empty string when the user still needs to supply it.'}, 'status': {'enum': ['filled', 'needs_input'], 'type': 'string', 'description': 'Whether the intake field is already filled or still needs user input.'}, 'guidance': {'type': 'string', 'description': 'Why the field matters or how the agent should fill it.'}, 'required': {'type': 'boolean', 'description': 'Whether the field should be collected before handoff.'}}, 'additionalProperties': False}, 'description': 'Structured intake payload an agent can map into a contact form, CRM, or booking handoff.'}, 'should_escalate': {'type': 'boolean', 'description': 'Whether human escalation is recommended from the supplied facts.'}, 'what_to_prepare': {'type': 'array', 'items': {'type': 'string', 'description': 'Fact or document to prepare before contacting the firm.'}, 'description': 'What the agent should gather for the handoff.'}, 'recommended_service': {'type': 'object', 'required': ['title', 'url', 'reason'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Service or contact URL for the handoff.'}, 'title': {'type': 'string', 'description': 'Best-fit Legal Fournier service line or contact route.'}, 'reason': {'type': 'string', 'description': 'Why this route fits the case.'}}, 'additionalProperties': False}, 'agent_handoff_message': {'type': 'string', 'description': 'Ready-to-send summary an agent can reuse when escalating to Legal Fournier.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'representation_notice': {'type': 'string', 'description': 'Legal notice explaining that contact or booking does not itself create representation.'}, 'suggested_follow_up_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Tool calls that are likely to advance the analysis.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool_id'], 'properties': {'facts': {'type': 'array', 'items': {'type': 'string', 'description': 'Non-sensitive fact supplied by the user.'}, 'description': 'General facts for the direct MCP screening run.'}, 'numbers': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'description': 'Stable key for the number, such as monthly_income, property_price, asset_value, or revenue.'}, 'unit': {'type': 'string', 'description': 'Optional unit when the value is not monetary.'}, 'value': {'type': 'number', 'description': 'Numeric value supplied by the user.'}, 'currency': {'enum': ['EUR', 'USD', 'other'], 'type': 'string', 'description': 'Currency when the number is monetary.'}}}, 'description': 'Optional numeric facts for calculator-style intake.'}, 'tool_id': {'enum': ['best-visa-spain', 'digital-nomad-visa-eligibility', 'digital-nomad-visa-beckham-law', 'beckham-law-savings', 'tax-residency', 'work-remotely-spain', 'property-buyer-cost-risk', 'wealth-tax-inheritance', 'autonomo-sl-entrepreneur', 'permanent-establishment-risk', 'holding-company-risk', 'immigration-appointments'], 'type': 'string', 'description': 'Public Legal Fournier tool to run directly inside MCP.'}, 'user_goal': {'type': 'string', 'description': 'Natural-language user goal or case summary.'}, 'complexity_signals': {'type': 'array', 'items': {'type': 'string', 'description': 'Specific blocker, edge case, or risk signal.'}, 'description': 'Signals that should trigger human review.'}, 'preferred_language': {'enum': ['en', 'es', 'fr', 'unknown'], 'type': 'string', 'description': 'Preferred public page language for selected_url.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool_id', 'title', 'outcome', 'summary', 'selected_url', 'selected_language', 'public_tool_url', 'missing_facts', 'complexity_flags', 'direct_screening_notes', 'numeric_notes', 'handoff_recommended', 'handoff_reason', 'handoff_url', 'related_mcp_tools', 'related_resource_uris', 'next_actions', 'update_policy', 'legal_notice'], 'properties': {'title': {'type': 'string', 'description': 'Public tool title.'}, 'outcome': {'enum': ['possible_fit', 'needs_more_facts', 'needs_human_review'], 'type': 'string', 'description': 'Direct MCP screening outcome.'}, 'summary': {'type': 'string', 'description': 'Short explanation of the direct MCP run.'}, 'tool_id': {'enum': ['best-visa-spain', 'digital-nomad-visa-eligibility', 'digital-nomad-visa-beckham-law', 'beckham-law-savings', 'tax-residency', 'work-remotely-spain', 'property-buyer-cost-risk', 'wealth-tax-inheritance', 'autonomo-sl-entrepreneur', 'permanent-establishment-risk', 'holding-company-risk', 'immigration-appointments'], 'type': 'string', 'description': 'Tool that was run directly in MCP.'}, 'handoff_url': {'type': 'string', 'format': 'uri', 'description': 'Legal Fournier consultation handoff URL.'}, 'legal_notice': {'type': 'string', 'description': 'General legal notice agents must preserve.'}, 'next_actions': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Immediate next actions for the agent.'}, 'selected_url': {'type': 'string', 'format': 'uri', 'description': 'Best public URL after applying preferred language.'}, 'missing_facts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Facts the agent should collect before relying on the screening output.'}, 'numeric_notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Calculator-style numeric notes, with current-law caveats.'}, 'update_policy': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How this direct MCP runner should be updated and verified.'}, 'handoff_reason': {'type': 'string', 'description': 'Reason for the handoff recommendation or caveat.'}, 'public_tool_url': {'type': 'string', 'format': 'uri', 'description': 'Canonical English public tool URL.'}, 'complexity_flags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Signals that make human review advisable.'}, 'related_mcp_tools': {'type': 'array', 'items': {'enum': ['find_legal_fournier_tool', 'run_legal_fournier_tool', 'get_paid_consultation_options', 'get_paid_call_availability', 'get_visa_options', 'check_beckham_eligibility', 'get_residency_path', 'explain_nie_process', 'compare_tax_regimes', 'route_to_legal_fournier_help', 'create_legal_fournier_contact_request'], 'type': 'string', 'description': 'Tool name that would be useful as a next step.'}, 'description': 'Other MCP tools paired with this direct run.'}, 'selected_language': {'enum': ['en', 'es', 'fr'], 'type': 'string', 'description': 'Language used for selected_url.'}, 'handoff_recommended': {'type': 'boolean', 'description': 'Whether the direct MCP run recommends Legal Fournier human review.'}, 'related_resource_uris': {'type': 'array', 'items': {'type': 'string', 'description': 'Canonical `legalfournier://` MCP resource URI for follow-up context.'}, 'description': 'Canonical MCP resources an agent can read next without leaving the server.'}, 'direct_screening_notes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Direct MCP screening notes and usage caveats.'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Court of Common Pleas (Peregrini)
Provides an agent-oriented court system for filing, defending, researching, appealing, and auditing disputes and agreements betwe…
BeeL
Provides Spanish company administration and VeriFactu-compliant invoicing, including customers, products, invoice issuance, corre…
corply
Supports company formation and corporate administration including incorporation documents, signatures, cap tables, corporate acti…
DPX — Institutional Cross-Border Settlement
Provides compliance-gated cross-border crypto settlement, agent registration and spending mandates, stablecoin routing, ESG and s…
FalaZuki Finance BR
Provides Brazil-focused financial calculations and rules for investments, credit, taxes, payroll, labor costs, debt, budgeting, a…
XBOSS
Accesses Korean tax, social insurance, payroll, cash receipt, e-tax invoice, and certificate filing services.
Sirenic
Provides European company registry, financial, procurement, sanctions, regulatory, insolvency, ownership, and ongoing due-diligen…
taxsort-mcp
Classifies personal tax transactions, applies user-defined rules, manages tax-year sessions, and provides account, usage, and cre…