SafetyDataSheetAPI
Extract safety data sheet (SDS/MSDS) PDFs into a fixed 16-section JSON record.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"sds-extraction": {
"url": "https://safetydatasheetapi.com/mcp"
}
}
}Remote endpoints
https://safetydatasheetapi.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢extract_sds(file_url, file_base64, filename, language_hint, schema_version, ...)
Extract one Safety Data Sheet PDF into a normalized 16-section record (product identification, hazards, composition, first aid, transport, regulatory, and more) plus a confidence_score and warnings. Provide the PDF as file_url (a public https URL) or file_base64. Billed per document from prepaid credit (failures are not billed). Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"file_url": {
"type": "string",
"format": "uri",
"description": "Public https URL of the SDS PDF."
},
"file_base64": {
"type": "string",
"description": "Base64-encoded SDS PDF bytes (use for small files)."
},
"filename": {
"type": "string",
"description": "Optional file name, for example acetone-sds.pdf."
},
"language_hint": {
"type": "string",
"description": "Optional language hint such as en, de, fr."
},
"schema_version": {
"type": "string",
"description": "Optional output schema version."
},
"include_formats": {
"type": "array",
"items": {
"type": "string",
"enum": [
"xml",
"csv"
]
},
"description": "Also return the XML and/or CSV renderings. Omitted by default to keep results compact."
}
},
"oneOf": [
{
"required": [
"file_url"
]
},
{
"required": [
"file_base64"
]
}
]
}🟡submit_bulk_extraction(file_urls, callback_url, language_hint, schema_version, idempotency_key)
Submit up to 10 SDS PDFs (public https URLs) as one asynchronous job. Returns a job_id; poll get_bulk_job until status is completed or failed. Reuse the same idempotency_key when retrying so no duplicate job is created. Billed per document from prepaid credit, reserved up front and released for any file that fails. Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"file_urls": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"minItems": 1,
"maxItems": 10,
"description": "Public https URLs of SDS PDFs."
},
"callback_url": {
"type": "string",
"format": "uri",
"description": "Optional https URL that receives a signed webhook when the job finishes."
},
"language_hint": {
"type": "string"
},
"schema_version": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Caller-chosen unique key; a repeat returns the existing job."
}
},
"required": [
"file_urls"
]
}🟢get_bulk_job(job_id)
Get the status and per-file results of a bulk extraction job created by submit_bulk_extraction. Read-only and safe to repeat. Requires an API key.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "The job_id returned by submit_bulk_extraction."
}
},
"required": [
"job_id"
]
}🟢get_account
Get the prepaid credit balance, price per document, and the last 30 days of usage for the account that owns the API key. Read-only. Requires a per-customer API key.
Input Schema
{
"type": "object",
"properties": {}
}Community
Evidence