SafetyDataSheetAPI

Extract safety data sheet (SDS/MSDS) PDFs into a fixed 16-section JSON record.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
78%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~748Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (0.58% 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": {
    "sds-extraction": {
      "url": "https://safetydatasheetapi.com/mcp"
    }
  }
}

Remote endpoints

https://safetydatasheetapi.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools