MCP-Server

Frasma

io.github.francemazzi/frasma
Business & Betrieb Wissen & Dokumentation Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Searches a consulting service knowledge base and prepares validated diagnostic or process-brief handoffs without sending them.

get_diagnostic_framework
Get diagnostic framework
Returns the diagnostic method, evidence to collect, fit criteria, and commercial limits.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'locale': {'enum': ['it', 'en'], 'type': 'string', 'description': 'Response language: it or en. Defaults to it.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'introduction', 'steps', 'fitCriteria', 'poorFitCriteria', 'commercialLimits'], 'properties': {'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'description', 'evidence'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'evidence': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': False}}, 'title': {'type': 'string'}, 'fitCriteria': {'type': 'array', 'items': {'type': 'string'}}, 'introduction': {'type': 'string'}, 'poorFitCriteria': {'type': 'array', 'items': {'type': 'string'}}, 'commercialLimits': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
get_frasma_profile
Get Frasma profile
Returns the verified public profile, focus areas, sectors, commercial boundaries, and discovery URLs for Frasma.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'locale': {'enum': ['it', 'en'], 'type': 'string', 'description': 'Response language: it or en. Defaults to it.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'founder', 'location', 'languages', 'kind', 'description', 'focus', 'sectors', 'commercialLimits', 'discovery'], 'properties': {'kind': {'type': 'string'}, 'name': {'type': 'string', 'const': 'Frasma'}, 'focus': {'type': 'array', 'items': {'type': 'string'}}, 'founder': {'type': 'string', 'const': 'Francesco Saverio Mazzi'}, 'sectors': {'type': 'array', 'items': {'type': 'string'}}, 'location': {'type': 'string', 'const': 'Mantova, Italy'}, 'discovery': {'type': 'object', 'required': ['forAgents', 'llmsTxt', 'mcp', 'apiCatalog', 'openapi', 'agentSkills', 'status', 'chat'], 'properties': {'mcp': {'type': 'string'}, 'chat': {'type': 'string'}, 'status': {'type': 'string'}, 'llmsTxt': {'type': 'string'}, 'openapi': {'type': 'string'}, 'forAgents': {'type': 'string'}, 'apiCatalog': {'type': 'string'}, 'agentSkills': {'type': 'string'}}, 'additionalProperties': False}, 'languages': {'type': 'array', 'items': [{'type': 'string', 'const': 'it'}, {'type': 'string', 'const': 'en'}]}, 'description': {'type': 'string'}, 'commercialLimits': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
prepare_diagnostic_summary
Prepare diagnostic summary handoff
Validates a complete diagnostic summary and returns a handoff payload. Does not send email. Map the diagnosis to a process brief; the user must confirm before POST /api/request-process-assessment.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['clientName', 'clientEmail', 'sector', 'process', 'currentWorkflow', 'bottlenecks', 'currentSystems', 'volumesAndFrequency', 'baselineMetrics', 'dataAvailable', 'constraints', 'desiredOutcomes', 'needCategories', 'opportunities', 'recommendations', 'openQuestions', 'nextSteps', 'language'], 'properties': {'sector': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Business sector, e.g. manufacturing or food quality.'}, 'process': {'type': 'string', 'maxLength': 240, 'minLength': 1, 'description': 'Short name of the process under diagnosis, e.g. delivery notes into ERP.'}, 'honeypot': {'type': 'string', 'maxLength': 0, 'description': 'Anti-spam trap. Must be empty or omitted.'}, 'language': {'enum': ['it', 'en'], 'type': 'string', 'description': 'Language of the diagnostic summary: it or en.'}, 'nextSteps': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Agreed next steps after reviewing this summary.'}, 'clientName': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Client full name.'}, 'bottlenecks': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Observed bottlenecks, one item per string.'}, 'clientEmail': {'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': 'Client work email.'}, 'constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Hard constraints, e.g. human validation before ERP import.'}, 'clientCompany': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Client company name, if known.'}, 'dataAvailable': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Data that can be shared for a prototype, preferably anonymized samples.'}, 'openQuestions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'description': 'Open questions still to confirm with the client.'}, 'opportunities': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Concrete opportunities that follow from the evidence.'}, 'currentSystems': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Systems already in use, e.g. email, PDF, Mago Zucchetti.'}, 'needCategories': {'type': 'array', 'items': {'enum': ['document_erp', 'workflow', 'ticketing', 'dataset_benchmark', 'ai_optimization', 'company_wiki', 'ai_presence'], 'type': 'string', 'description': 'Frasma need category: document_erp, workflow, ticketing, dataset_benchmark, ai_optimization, company_wiki, or ai_presence.'}, 'maxItems': 7, 'minItems': 1, 'description': 'One or more Frasma need categories that fit the diagnosis.'}, 'baselineMetrics': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Baseline metrics before any Frasma work, e.g. minutes per document.'}, 'currentWorkflow': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'How the process is done today, including people, tools, and handoffs.'}, 'desiredOutcomes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Desired outcomes without invented savings or guarantees.'}, 'recommendations': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Recommended next steps for a limited prototype or discovery.'}, 'volumesAndFrequency': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Volumes and frequency, e.g. about 40 DDT per day.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok', 'summary', 'completeness', 'handoff'], 'properties': {'ok': {'type': 'boolean', 'const': True}, 'handoff': {'type': 'object', 'required': ['chatUrl', 'emailEndpoint', 'instructions'], 'properties': {'chatUrl': {'type': 'string'}, 'instructions': {'type': 'string'}, 'emailEndpoint': {'type': 'string'}}, 'additionalProperties': False}, 'summary': {'type': 'object', 'required': ['clientName', 'clientEmail', 'sector', 'process', 'currentWorkflow', 'bottlenecks', 'currentSystems', 'volumesAndFrequency', 'baselineMetrics', 'dataAvailable', 'constraints', 'desiredOutcomes', 'needCategories', 'opportunities', 'recommendations', 'openQuestions', 'nextSteps', 'language'], 'properties': {'sector': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Business sector, e.g. manufacturing or food quality.'}, 'process': {'type': 'string', 'maxLength': 240, 'minLength': 1, 'description': 'Short name of the process under diagnosis, e.g. delivery notes into ERP.'}, 'honeypot': {'type': 'string', 'maxLength': 0, 'description': 'Anti-spam trap. Must be empty or omitted.'}, 'language': {'enum': ['it', 'en'], 'type': 'string', 'description': 'Language of the diagnostic summary: it or en.'}, 'nextSteps': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Agreed next steps after reviewing this summary.'}, 'clientName': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Client full name.'}, 'bottlenecks': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Observed bottlenecks, one item per string.'}, 'clientEmail': {'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': 'Client work email.'}, 'constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Hard constraints, e.g. human validation before ERP import.'}, 'clientCompany': {'type': 'string', 'maxLength': 160, 'minLength': 1, 'description': 'Client company name, if known.'}, 'dataAvailable': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Data that can be shared for a prototype, preferably anonymized samples.'}, 'openQuestions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'description': 'Open questions still to confirm with the client.'}, 'opportunities': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Concrete opportunities that follow from the evidence.'}, 'currentSystems': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Systems already in use, e.g. email, PDF, Mago Zucchetti.'}, 'needCategories': {'type': 'array', 'items': {'enum': ['document_erp', 'workflow', 'ticketing', 'dataset_benchmark', 'ai_optimization', 'company_wiki', 'ai_presence'], 'type': 'string', 'description': 'Frasma need category: document_erp, workflow, ticketing, dataset_benchmark, ai_optimization, company_wiki, or ai_presence.'}, 'maxItems': 7, 'minItems': 1, 'description': 'One or more Frasma need categories that fit the diagnosis.'}, 'baselineMetrics': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Baseline metrics before any Frasma work, e.g. minutes per document.'}, 'currentWorkflow': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'How the process is done today, including people, tools, and handoffs.'}, 'desiredOutcomes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Desired outcomes without invented savings or guarantees.'}, 'recommendations': {'type': 'array', 'items': {'type': 'string', 'maxLength': 800, 'minLength': 1}, 'maxItems': 20, 'minItems': 1, 'description': 'Recommended next steps for a limited prototype or discovery.'}, 'volumesAndFrequency': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Volumes and frequency, e.g. about 40 DDT per day.'}}, 'additionalProperties': False}, 'completeness': {'type': 'object', 'required': ['missingFields', 'score'], 'properties': {'score': {'type': 'number'}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}
prepare_project_brief
Prepare process brief handoff
Validates the process brief used for a quote (name, email, process, optional company/role/systems/volume). Does not send email. The user must confirm before POST /api/request-process-assessment.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'clientEmail', 'process'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Client full name.'}, 'role': {'type': 'string', 'maxLength': 120, 'description': 'Client role, if known.'}, 'volume': {'type': 'string', 'maxLength': 500, 'description': 'Volumes or frequency, e.g. 80 documents per week.'}, 'company': {'type': 'string', 'maxLength': 120, 'description': 'Client company name, if known.'}, 'process': {'type': 'string', 'maxLength': 2000, 'minLength': 20, 'description': 'Process to evaluate, at least 20 characters: trigger, work today, and desired outcome.'}, 'systems': {'type': 'string', 'maxLength': 500, 'description': 'Systems already in use, e.g. Outlook and ERP.'}, 'clientEmail': {'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': 'Client work email.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ok', 'brief', 'handoff'], 'properties': {'ok': {'type': 'boolean', 'const': True}, 'brief': {'type': 'object', 'required': ['name', 'clientEmail', 'process'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Client full name.'}, 'role': {'type': 'string', 'maxLength': 120, 'description': 'Client role, if known.'}, 'volume': {'type': 'string', 'maxLength': 500, 'description': 'Volumes or frequency, e.g. 80 documents per week.'}, 'company': {'type': 'string', 'maxLength': 120, 'description': 'Client company name, if known.'}, 'process': {'type': 'string', 'maxLength': 2000, 'minLength': 20, 'description': 'Process to evaluate, at least 20 characters: trigger, work today, and desired outcome.'}, 'systems': {'type': 'string', 'maxLength': 500, 'description': 'Systems already in use, e.g. Outlook and ERP.'}, 'clientEmail': {'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': 'Client work email.'}}, 'additionalProperties': False}, 'handoff': {'type': 'object', 'required': ['chatUrl', 'emailEndpoint', 'instructions'], 'properties': {'chatUrl': {'type': 'string'}, 'instructions': {'type': 'string'}, 'emailEndpoint': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
search_frasma_knowledge
Search Frasma knowledge
Searches verified Frasma services, sectors, case studies, methodology, fit criteria, and commercial boundaries. Use before making factual claims.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Search query for verified Frasma knowledge, e.g. DDT ERP or HACCP procedures.'}, 'locale': {'enum': ['it', 'en'], 'type': 'string', 'description': 'Response language: it or en. Defaults to it.'}, 'pagePath': {'type': 'string', 'pattern': '^\\/.*', 'description': 'Optional canonical site path to scope results, e.g. /servizi/ddt-erp.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'category', 'title', 'summary', 'details', 'score'], 'properties': {'id': {'type': 'string'}, 'score': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'title': {'type': 'string'}, 'details': {'type': 'array', 'items': {'type': 'string'}}, 'summary': {'type': 'string'}, 'category': {'enum': ['profile', 'service', 'case-study', 'sector', 'methodology', 'fit', 'commercial-limit'], 'type': 'string'}}, 'additionalProperties': False}, 'description': 'Ranked knowledge matches for the query.'}}, 'additionalProperties': False}
Hinzugefügt
prepare_project_brief
17. September 2026 12:41
Hinzugefügt
prepare_diagnostic_summary
17. September 2026 12:41
Hinzugefügt
get_diagnostic_framework
17. September 2026 12:41
Hinzugefügt
search_frasma_knowledge
17. September 2026 12:41
Hinzugefügt
get_frasma_profile
17. September 2026 12:41