Skip to content

SafetyChain MCP by usefulapi

io.usefulapi/safetychainusefulapi.iostreamable-httpv1.2.0Scanned

Read SafetyChain food safety records, CAPAs, forms, suppliers, items, locations and equipment.

29 tools: 1 change things and 28 only read.

Tools: 0 delete, 0 irreversible, 1 write, 28 read.
  • Reads private data · 0
  • Reads text others write · 29
  • Can send data out · 0
  • No findings

Anlyon alternative

1 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

29 tools

Changes things 1Claude Code: ask
  • safetychain_record_existsCheck whether a record exists for a record id (GUID).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Check whether a record exists for a record id (GUID). GET /clientapis/recordmanagement/v1.0/record/{recordId}/Exists.

    Annotations the server declares

    • title: Check a record exists
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
Only reads 28Show 28 read-only tools
  • safetychain_get_capaGet one CAPA's details: status, severity, event and due dates, summary, creator, resource, source, category, owner workgroup, template and steps.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one CAPA's details: status, severity, event and due dates, summary, creator, resource, source, category, owner workgroup, template and steps. The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}.

    Annotations the server declares

    • title: Get CAPA
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_activityList a CAPA's activity (comments and events).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_activity" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "list" and "comment": it reads comments, which other people can write.
    Description, as the server wrote it
    List a CAPA's activity (comments and events). The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/activity.

    Annotations the server declares

    • title: Get CAPA activity
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_attachmentsList a CAPA's attachments (name, extension, link, creator, date).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_attachments" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List a CAPA's attachments (name, extension, link, creator, date). The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/attachments.

    Annotations the server declares

    • title: Get CAPA attachments
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_historyList a CAPA's history entries.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_history" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List a CAPA's history entries. The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/history.

    Annotations the server declares

    • title: Get CAPA history
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_linked_capasList a CAPA's linked CAPAs.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_linked_capas" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List a CAPA's linked CAPAs. The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/linkedcapas.

    Annotations the server declares

    • title: Get CAPA linked capas
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_linked_recordsList a CAPA's linked records.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_linked_records" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List a CAPA's linked records. The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/linkedrecords.

    Annotations the server declares

    • title: Get CAPA linked records
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_capa_tasksList a CAPA's tasks (step, form, location, resource, workgroup, assignee, due date, status).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_capa_tasks" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List a CAPA's tasks (step, form, location, resource, workgroup, assignee, due date, status). The id is the GUID `Id` from safetychain_search_capas. GET /clientapis/capamanagement/v1.0/capa/{id}/tasks.

    Annotations the server declares

    • title: Get CAPA tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_categoryGet one category by id (an id from safetychain_list_categories).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_category" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one category by id (an id from safetychain_list_categories). GET /clientapis/resourcemanagement/v1.0/category/{id}.

    Annotations the server declares

    • title: Get category
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_customerGet one customer by id (an id from safetychain_list_customers).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_customer" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one customer by id (an id from safetychain_list_customers). GET /clientapis/resourcemanagement/v1.0/customer/{id}.

    Annotations the server declares

    • title: Get customer
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_equipmentGet one equipment by id (an id from safetychain_list_equipment).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_equipment" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one equipment by id (an id from safetychain_list_equipment). GET /clientapis/resourcemanagement/v1.0/equipment/{id}.

    Annotations the server declares

    • title: Get equipment
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_formGet one form by id (an id from safetychain_list_forms).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_form" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one form by id (an id from safetychain_list_forms). GET /clientapis/resourcemanagement/v1.0/form/{id}.

    Annotations the server declares

    • title: Get form
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_itemGet one item by id (an id from safetychain_list_items).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_item" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one item by id (an id from safetychain_list_items). GET /clientapis/resourcemanagement/v1.0/item/{id}.

    Annotations the server declares

    • title: Get item
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_locationGet one location by id (an id from safetychain_list_locations).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_location" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one location by id (an id from safetychain_list_locations). GET /clientapis/resourcemanagement/v1.0/location/{id}.

    Annotations the server declares

    • title: Get location
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_recordGet one submitted record in full by its record id (the GUID `recordId` from safetychain_search_records): form, who submitted it and when, location, resource, field values, verifica…Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_record" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one submitted record in full by its record id (the GUID `recordId` from safetychain_search_records): form, who submitted it and when, location, resource, field values, verifications. GET /clientapis/recordmanagement/v1.0/record/{recordId}.

    Annotations the server declares

    • title: Get record
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_record_fieldsGet the field-level values of records (one entry per record with its fields: name, short name, type, value, unit, compliance, min, max, target, comments, section).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_record_fields" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • untrusted-inputThe description's first sentence says "get" and "comment": it reads comments, which other people can write.
    Description, as the server wrote it
    Get the field-level values of records (one entry per record with its fields: name, short name, type, value, unit, compliance, min, max, target, comments, section). Same filters as safetychain_search_records; narrow strongly (a record number or one form and a short date range), each record carries many fields. POST /clientapis/v2.0/getRecordsWithFields (a read).

    Annotations the server declares

    • title: Get record field values
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_record_summaryFast summary of the records matching the filters: first and last date, and how many forms, resources, locations and users are involved.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_record_summary" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Fast summary of the records matching the filters: first and last date, and how many forms, resources, locations and users are involved. Use it to size a request before safetychain_search_records. POST /clientapis/v2.0/getRecordSummary (a read).

    Annotations the server declares

    • title: Summarize records
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_resourceGet one resource by id (an id from safetychain_list_resources).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_resource" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one resource by id (an id from safetychain_list_resources). GET /clientapis/resourcemanagement/v1.0/resource/{id}.

    Annotations the server declares

    • title: Get resource
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_get_supplierGet one supplier by id (an id from safetychain_list_suppliers).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_get_supplier" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Get one supplier by id (an id from safetychain_list_suppliers). GET /clientapis/resourcemanagement/v1.0/supplier/{id}.

    Annotations the server declares

    • title: Get supplier
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_categoriesList categories used to group resources of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_categories" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List categories used to group resources of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/categories.

    Annotations the server declares

    • title: List categories
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_customersList customers of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_customers" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List customers of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/customers.

    Annotations the server declares

    • title: List customers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_equipmentList equipment of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_equipment" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List equipment of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/equipment.

    Annotations the server declares

    • title: List equipment
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_formsList forms (the checklists and data-entry forms operators fill in) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_forms" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List forms (the checklists and data-entry forms operators fill in) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/forms.

    Annotations the server declares

    • title: List forms
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_itemsList items (products, ingredients, materials) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_items" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List items (products, ingredients, materials) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/items.

    Annotations the server declares

    • title: List items
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_locationsList locations (plants, sites, areas) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_locations" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List locations (plants, sites, areas) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/locations.

    Annotations the server declares

    • title: List locations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_resourcesList resources of every type (customers, equipment, items, suppliers, lists) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_resources" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List resources of every type (customers, equipment, items, suppliers, lists) of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/resources.

    Annotations the server declares

    • title: List resources
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_list_suppliersList suppliers of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates.Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_list_suppliers" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    List suppliers of the SafetyChain tenant, with ids, names, enabled flags and created/modified dates. Filter by name. The API does not page: all matches come back (cut at limit). GET /clientapis/resourcemanagement/v1.0/suppliers.

    Annotations the server declares

    • title: List suppliers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_search_capasSearch corrective and preventive actions (CAPA, SCAR, CCAR).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_search_capas" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search corrective and preventive actions (CAPA, SCAR, CCAR). Filters combine with AND. Returns id, name, severity, owner workgroup, status, event and due dates, task counts, location and template type, 50 per page. Use the Id (a GUID) with safetychain_get_capa and the other CAPA tools. POST /clientapis/capamanagement/v1.0/capas (a read: it only searches).

    Annotations the server declares

    • title: Search CAPAs
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • safetychain_search_recordsSearch submitted records (the headers: record number, compliance, submitted date, location, form and version, resource, who submitted, signed, verifications, ids).Reads text others writeNo findings

    Why it is in this group

    • The name "safetychain_search_records" says "search": a word for reading.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Search submitted records (the headers: record number, compliance, submitted date, location, form and version, resource, who submitted, signed, verifications, ids). Filter by date range, form, location, resource, identifier and compliance. Always narrow by a date range or a name: the tenant can hold millions of records. Pages are not snapshotted: for a stable multi-page read use a closed date range (start and end in the past). Use safetychain_get_record_fields for the field values. POST /clientapis/v2.0/getRecords (a read: it only searches).

    Annotations the server declares

    • title: Search records
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http safetychain https://safetychain.usefulapi.io/mcp
claude mcp add --transport http safetychain https://safetychain.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__safetychain__safetychain_list_customers",
      "mcp__safetychain__safetychain_get_customer",
      "mcp__safetychain__safetychain_list_locations",
      "mcp__safetychain__safetychain_get_location",
      "mcp__safetychain__safetychain_list_suppliers",
      "mcp__safetychain__safetychain_get_supplier",
      "mcp__safetychain__safetychain_list_items",
      "mcp__safetychain__safetychain_get_item",
      "mcp__safetychain__safetychain_list_equipment",
      "mcp__safetychain__safetychain_get_equipment",
      "mcp__safetychain__safetychain_list_resources",
      "mcp__safetychain__safetychain_get_resource",
      "mcp__safetychain__safetychain_list_forms",
      "mcp__safetychain__safetychain_get_form",
      "mcp__safetychain__safetychain_list_categories",
      "mcp__safetychain__safetychain_get_category",
      "mcp__safetychain__safetychain_search_capas",
      "mcp__safetychain__safetychain_get_capa",
      "mcp__safetychain__safetychain_get_capa_tasks",
      "mcp__safetychain__safetychain_get_capa_attachments",
      "mcp__safetychain__safetychain_get_capa_history",
      "mcp__safetychain__safetychain_get_capa_linked_records",
      "mcp__safetychain__safetychain_get_capa_linked_capas",
      "mcp__safetychain__safetychain_get_capa_activity",
      "mcp__safetychain__safetychain_get_record",
      "mcp__safetychain__safetychain_search_records",
      "mcp__safetychain__safetychain_get_record_fields",
      "mcp__safetychain__safetychain_get_record_summary"
    ],
    "ask": [
      "mcp__safetychain__safetychain_record_exists"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as safetychain. Review it before you use it.

Capability tags behind 29 rules
  • mcp__safetychain__safetychain_list_customers untrusted-input
  • mcp__safetychain__safetychain_get_customer untrusted-input
  • mcp__safetychain__safetychain_list_locations untrusted-input
  • mcp__safetychain__safetychain_get_location untrusted-input
  • mcp__safetychain__safetychain_list_suppliers untrusted-input
  • mcp__safetychain__safetychain_get_supplier untrusted-input
  • mcp__safetychain__safetychain_list_items untrusted-input
  • mcp__safetychain__safetychain_get_item untrusted-input
  • mcp__safetychain__safetychain_list_equipment untrusted-input
  • mcp__safetychain__safetychain_get_equipment untrusted-input
  • mcp__safetychain__safetychain_list_resources untrusted-input
  • mcp__safetychain__safetychain_get_resource untrusted-input
  • mcp__safetychain__safetychain_list_forms untrusted-input
  • mcp__safetychain__safetychain_get_form untrusted-input
  • mcp__safetychain__safetychain_list_categories untrusted-input
  • mcp__safetychain__safetychain_get_category untrusted-input
  • mcp__safetychain__safetychain_search_capas untrusted-input
  • mcp__safetychain__safetychain_get_capa untrusted-input
  • mcp__safetychain__safetychain_get_capa_tasks untrusted-input
  • mcp__safetychain__safetychain_get_capa_attachments untrusted-input
  • mcp__safetychain__safetychain_get_capa_history untrusted-input
  • mcp__safetychain__safetychain_get_capa_linked_records untrusted-input
  • mcp__safetychain__safetychain_get_capa_linked_capas untrusted-input
  • mcp__safetychain__safetychain_get_capa_activity untrusted-input
  • mcp__safetychain__safetychain_get_record untrusted-input
  • mcp__safetychain__safetychain_record_exists untrusted-input
  • mcp__safetychain__safetychain_search_records untrusted-input
  • mcp__safetychain__safetychain_get_record_fields untrusted-input
  • mcp__safetychain__safetychain_get_record_summary untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.usefulapi/safetychain/verify?hash=3aeecf35a80cf6cd06c4a8ed274b5404ff1c49d9053c700e0b80ec90497515a2" | jq -e '.changed == false'

Pinned hash 3aeecf35a80c, from Oct 26, 2026, 07:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.usefulapi/safetychain/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.usefulapi/safetychain
[![anlyon.dev](https://anlyon.dev/badge/io.usefulapi/safetychain.svg)](https://anlyon.dev/servers/io.usefulapi/safetychain)

Source: MCP Registry · repository. Synced Oct 26, 2026, 07:18 UTC.