Frasma

Read-only Frasma MCP: profile, knowledge search, diagnostic handoff. No email.

Should I use this

Quality & Safety

A
Description quality
84%
Schema completeness
96%
Naming quality
92%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'get_frasma_profile' description lacks action verbin get_frasma_profile
  • LOWTool 'get_diagnostic_framework' description lacks action verbin get_diagnostic_framework

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,854Tokens (tool definitions)
~8.2 KBTypical response size
Significant attention impact (3.01% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "frasma": {
      "url": "https://www.frasma.org/api/mcp"
    }
  }
}

Remote endpoints

https://www.frasma.org/api/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_frasma_profile(locale)

Returns the verified public profile, focus areas, sectors, commercial boundaries, and discovery URLs for Frasma.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "description": "Response language: it or en. Defaults to it.",
      "type": "string",
      "enum": [
        "it",
        "en"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "const": "Frasma"
    },
    "founder": {
      "type": "string",
      "const": "Francesco Saverio Mazzi"
    },
    "location": {
      "type": "string",
      "const": "Mantova, Italy"
    },
    "languages": {
      "type": "array",
      "items": [
        {
          "type": "string",
          "const": "it"
        },
        {
          "type": "string",
          "const": "en"
        }
      ]
    },
    "kind": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "focus": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sectors": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "commercialLimits": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "discovery": {
      "type": "object",
      "properties": {
        "forAgents": {
          "type": "string"
        },
        "llmsTxt": {
          "type": "string"
        },
        "mcp": {
          "type": "string"
        },
        "apiCatalog": {
          "type": "string"
        },
        "openapi": {
          "type": "string"
        },
        "agentSkills": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "chat": {
          "type": "string"
        }
      },
      "required": [
        "forAgents",
        "llmsTxt",
        "mcp",
        "apiCatalog",
        "openapi",
        "agentSkills",
        "status",
        "chat"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "name",
    "founder",
    "location",
    "languages",
    "kind",
    "description",
    "focus",
    "sectors",
    "commercialLimits",
    "discovery"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_frasma_knowledge(query, locale, pagePath)

Searches verified Frasma services, sectors, case studies, methodology, fit criteria, and commercial boundaries. Use before making factual claims.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Search query for verified Frasma knowledge, e.g. DDT ERP or HACCP procedures."
    },
    "locale": {
      "description": "Response language: it or en. Defaults to it.",
      "type": "string",
      "enum": [
        "it",
        "en"
      ]
    },
    "pagePath": {
      "description": "Optional canonical site path to scope results, e.g. /servizi/ddt-erp.",
      "type": "string",
      "pattern": "^\\/.*"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "profile",
              "service",
              "case-study",
              "sector",
              "methodology",
              "fit",
              "commercial-limit"
            ]
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "score": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "category",
          "title",
          "summary",
          "details",
          "score"
        ],
        "additionalProperties": false
      },
      "description": "Ranked knowledge matches for the query."
    }
  },
  "required": [
    "results"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_diagnostic_framework(locale)

Returns the diagnostic method, evidence to collect, fit criteria, and commercial limits.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "description": "Response language: it or en. Defaults to it.",
      "type": "string",
      "enum": [
        "it",
        "en"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "introduction": {
      "type": "string"
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "evidence": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "evidence"
        ],
        "additionalProperties": false
      }
    },
    "fitCriteria": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "poorFitCriteria": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "commercialLimits": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "title",
    "introduction",
    "steps",
    "fitCriteria",
    "poorFitCriteria",
    "commercialLimits"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢prepare_diagnostic_summary(clientName, clientEmail, clientCompany, sector, process, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "clientName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Client full name."
    },
    "clientEmail": {
      "type": "string",
      "maxLength": 254,
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Client work email."
    },
    "clientCompany": {
      "description": "Client company name, if known.",
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "sector": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160,
      "description": "Business sector, e.g. manufacturing or food quality."
    },
    "process": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240,
      "description": "Short name of the process under diagnosis, e.g. delivery notes into ERP."
    },
    "currentWorkflow": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "How the process is done today, including people, tools, and handoffs."
    },
    "bottlenecks": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Observed bottlenecks, one item per string."
    },
    "currentSystems": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Systems already in use, e.g. email, PDF, Mago Zucchetti."
    },
    "volumesAndFrequency": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "Volumes and frequency, e.g. about 40 DDT per day."
    },
    "baselineMetrics": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Baseline metrics before any Frasma work, e.g. minutes per document."
    },
    "dataAvailable": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Data that can be shared for a prototype, preferably anonymized samples."
    },
    "constraints": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Hard constraints, e.g. human validation before ERP import."
    },
    "desiredOutcomes": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Desired outcomes without invented savings or guarantees."
    },
    "needCategories": {
      "minItems": 1,
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "document_erp",
          "workflow",
          "ticketing",
          "dataset_benchmark",
          "ai_optimization",
          "company_wiki",
          "ai_presence"
        ],
        "description": "Frasma need category: document_erp, workflow, ticketing, dataset_benchmark, ai_optimization, company_wiki, or ai_presence."
      },
      "description": "One or more Frasma need categories that fit the diagnosis."
    },
    "opportunities": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Concrete opportunities that follow from the evidence."
    },
    "recommendations": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Recommended next steps for a limited prototype or discovery."
    },
    "openQuestions": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Open questions still to confirm with the client."
    },
    "nextSteps": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 800
      },
      "description": "Agreed next steps after reviewing this summary."
    },
    "language": {
      "type": "string",
      "enum": [
        "it",
        "en"
      ],
      "description": "Language of the diagnostic summary: it or en."
    },
    "honeypot": {
      "description": "Anti-spam trap. Must be empty or omitted.",
      "type": "string",
      "maxLength": 0
    }
  },
  "required": [
    "clientName",
    "clientEmail",
    "sector",
    "process",
    "currentWorkflow",
    "bottlenecks",
    "currentSystems",
    "volumesAndFrequency",
    "baselineMetrics",
    "dataAvailable",
    "constraints",
    "desiredOutcomes",
    "needCategories",
    "opportunities",
    "recommendations",
    "openQuestions",
    "nextSteps",
    "language"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "const": true
    },
    "summary": {
      "type": "object",
      "properties": {
        "clientName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120,
          "description": "Client full name."
        },
        "clientEmail": {
          "type": "string",
          "maxLength": 254,
          "format": "email",
          "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
          "description": "Client work email."
        },
        "clientCompany": {
          "description": "Client company name, if known.",
          "type": "string",
          "minLength": 1,
          "maxLength": 160
        },
        "sector": {
          "type": "string",
          "minLength": 1,
          "maxLength": 160,
          "description": "Business sector, e.g. manufacturing or food quality."
        },
        "process": {
          "type": "string",
          "minLength": 1,
          "maxLength": 240,
          "description": "Short name of the process under diagnosis, e.g. delivery notes into ERP."
        },
        "currentWorkflow": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000,
          "description": "How the process is done today, including people, tools, and handoffs."
        },
        "bottlenecks": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Observed bottlenecks, one item per string."
        },
        "currentSystems": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Systems already in use, e.g. email, PDF, Mago Zucchetti."
        },
        "volumesAndFrequency": {
          "type": "string",
          "minLength": 1,
          "maxLength": 1000,
          "description": "Volumes and frequency, e.g. about 40 DDT per day."
        },
        "baselineMetrics": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Baseline metrics before any Frasma work, e.g. minutes per document."
        },
        "dataAvailable": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Data that can be shared for a prototype, preferably anonymized samples."
        },
        "constraints": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Hard constraints, e.g. human validation before ERP import."
        },
        "desiredOutcomes": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Desired outcomes without invented savings or guarantees."
        },
        "needCategories": {
          "minItems": 1,
          "maxItems": 7,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "document_erp",
              "workflow",
              "ticketing",
              "dataset_benchmark",
              "ai_optimization",
              "company_wiki",
              "ai_presence"
            ],
            "description": "Frasma need category: document_erp, workflow, ticketing, dataset_benchmark, ai_optimization, company_wiki, or ai_presence."
          },
          "description": "One or more Frasma need categories that fit the diagnosis."
        },
        "opportunities": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Concrete opportunities that follow from the evidence."
        },
        "recommendations": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Recommended next steps for a limited prototype or discovery."
        },
        "openQuestions": {
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Open questions still to confirm with the client."
        },
        "nextSteps": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 800
          },
          "description": "Agreed next steps after reviewing this summary."
        },
        "language": {
          "type": "string",
          "enum": [
            "it",
            "en"
          ],
          "description": "Language of the diagnostic summary: it or en."
        },
        "honeypot": {
          "description": "Anti-spam trap. Must be empty or omitted.",
          "type": "string",
          "maxLength": 0
        }
      },
      "required": [
        "clientName",
        "clientEmail",
        "sector",
        "process",
        "currentWorkflow",
        "bottlenecks",
        "currentSystems",
        "volumesAndFrequency",
        "baselineMetrics",
        "dataAvailable",
        "constraints",
        "desiredOutcomes",
        "needCategories",
        "opportunities",
        "recommendations",
        "openQuestions",
        "nextSteps",
        "language"
      ],
      "additionalProperties": false
    },
    "completeness": {
      "type": "object",
      "properties": {
        "missingFields": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "score": {
          "type": "number"
        }
      },
      "required": [
        "missingFields",
        "score"
      ],
      "additionalProperties": false
    },
    "handoff": {
      "type": "object",
      "properties": {
        "chatUrl": {
          "type": "string"
        },
        "emailEndpoint": {
          "type": "string"
        },
        "instructions": {
          "type": "string"
        }
      },
      "required": [
        "chatUrl",
        "emailEndpoint",
        "instructions"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "ok",
    "summary",
    "completeness",
    "handoff"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢prepare_project_brief(name, clientEmail, company, role, process, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Client full name."
    },
    "clientEmail": {
      "type": "string",
      "maxLength": 254,
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Client work email."
    },
    "company": {
      "description": "Client company name, if known.",
      "type": "string",
      "maxLength": 120
    },
    "role": {
      "description": "Client role, if known.",
      "type": "string",
      "maxLength": 120
    },
    "process": {
      "type": "string",
      "minLength": 20,
      "maxLength": 2000,
      "description": "Process to evaluate, at least 20 characters: trigger, work today, and desired outcome."
    },
    "systems": {
      "description": "Systems already in use, e.g. Outlook and ERP.",
      "type": "string",
      "maxLength": 500
    },
    "volume": {
      "description": "Volumes or frequency, e.g. 80 documents per week.",
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "name",
    "clientEmail",
    "process"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "const": true
    },
    "brief": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120,
          "description": "Client full name."
        },
        "clientEmail": {
          "type": "string",
          "maxLength": 254,
          "format": "email",
          "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
          "description": "Client work email."
        },
        "company": {
          "description": "Client company name, if known.",
          "type": "string",
          "maxLength": 120
        },
        "role": {
          "description": "Client role, if known.",
          "type": "string",
          "maxLength": 120
        },
        "process": {
          "type": "string",
          "minLength": 20,
          "maxLength": 2000,
          "description": "Process to evaluate, at least 20 characters: trigger, work today, and desired outcome."
        },
        "systems": {
          "description": "Systems already in use, e.g. Outlook and ERP.",
          "type": "string",
          "maxLength": 500
        },
        "volume": {
          "description": "Volumes or frequency, e.g. 80 documents per week.",
          "type": "string",
          "maxLength": 500
        }
      },
      "required": [
        "name",
        "clientEmail",
        "process"
      ],
      "additionalProperties": false
    },
    "handoff": {
      "type": "object",
      "properties": {
        "chatUrl": {
          "type": "string"
        },
        "emailEndpoint": {
          "type": "string"
        },
        "instructions": {
          "type": "string"
        }
      },
      "required": [
        "chatUrl",
        "emailEndpoint",
        "instructions"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "ok",
    "brief",
    "handoff"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools