Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,533Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:c477e8ad7e4d47b268488d0062ea75475de719b7b2b6aa0b355fe2f7d6918359
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

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