4chems Platform — IUCLID, CHESAR & QSAR Toolbox hosting

com.4chems由 4chems.com 发布官方发布者v0.12.1更新于 Oct 24, 2026

Remote MCP server for 4chems hosted IUCLID, CHESAR and QSAR Toolbox: onboarding, inquiries, admin.

已验证Streamable HTTP可网页运行效率与工作流商业与电商

概览

AI 生成的概览

面向 4chems 托管平台的远程 MCP 服务器,让助手处理账户注册、咨询、租户访问、邀请、账单与服务开通

可以做什么
浏览应用目录、入门步骤与法人实体类型,并在无账户情况下向 4chems 支持发送经核验的咨询。注册 4chems 账户或通过设备流程登录并获取令牌。查看、创建、批准、驳回或撤回租户访问请求,并轮询长时间运行的操作。管理租户邀请、成员与角色分配。读取并补全账单信息,列出或申请租户服务订阅。查看并记录法律文件的接受情况。
适用场景
适合潜在或现有 4chems 客户通过助手提问、创建账户或试用租户,并管理成员、邀请、账单与订阅,而不必使用网页界面。它不提供物质或卷宗数据。
运行要求
远程 Streamable HTTP 端点,无需本地运行时。匿名连接及九个工具无需令牌;其余工具需将 Bearer 令牌作为 authorization 参数传入,令牌通过注册账户或设备流程登录获得。注册与试用租户需要企业邮箱地址,用户须读取邮件中的 6 位验证码。
安装前请注意
Bearer 令牌属于机密,只能作为 authorization 参数传入。多个工具会修改数据:记录同意、创建或撤销邀请与分配、补全账单、申请服务。账单信息包含增值税号与发票地址,欧盟增值税号会经 VIES 校验。邮件验证码不得猜测或重试。执行变更前应先与用户确认。

安装

在 SourceWeft 中

  1. 打开 控制台中的 4chems Platform — IUCLID, CHESAR & QSAR Toolbox hosting,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.4chems%2Fplatform-api/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "4chems-platform-iuclid-chesar-qsar-toolb": {
      "type": "http",
      "url": "https://mcp.4chems.com/mcp"
    }
  }
}

README

4chems MCP server — IUCLID, CHESAR & QSAR Toolbox hosting

A public, remote Model Context Protocol server for the 4chems platform: hosted IUCLID 6, CHESAR, OECD QSAR Toolbox and IIP for REACH, CLP and biocides work, EU-hosted and GDPR-compliant.

Endpointhttps://mcp.4chems.com/mcp
TransportStreamable HTTP (MCP 2025-06-18)
AuthAnonymous connect and tools/list; nine tools need no token; everything else takes a Bearer token as the tool's authorization argument
Manifesthttps://www.4chems.com/.well-known/mcp.json
Docshttps://www.4chems.com/mcp/ (DE: https://www.4chems.com/de/mcp/)
Registrycom.4chems/platform-api — see server.json

Connect

Claude Code

bash
claude mcp add --transport http 4chems https://mcp.4chems.com/mcp

Claude Desktop / claude.ai — Settings → Connectors → Add custom connector → https://mcp.4chems.com/mcp. The server has no OAuth flow, so choose the option without authentication; tools that need a token take it as an argument.

Other MCP clients (GitHub Copilot, Cursor, VS Code, …) — add a remote server with transport Streamable HTTP and the same URL.

Raw handshake (no client needed):

bash
curl -s -X POST https://mcp.4chems.com/mcp \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}'

Tools

The server exposes the customer tier of the 4chems platform API (/v1). This endpoint carries no substance or dossier data — see What this is not.

No token needed

ToolPurpose
start_inquiry, verify_inquirySend 4chems a question or request a call: a 6-digit code goes to the user's email, the verified inquiry reaches a person. No web form, no account.
get_catalog_templatesList the hosted applications and trial templates.
get_onboarding_routeReturn the next onboarding step for the caller.
get_legal_entity_typesLegal-entity types for a country.
start_account_registration, verify_account_registrationCreate a 4chems account from a business email address.
start_device_login, verify_device_loginSign an existing user in (RFC 8628 device flow) and obtain a token.

Bearer token required (authorization: "Bearer <token>")

AreaTools
Access requestsget_my_access, create_access_request, approve_access_request, dismiss_access_request, withdraw_access_request
Tenant setupcreate_self_service_tenant, enrich_domain, get_my_operation
Billingget_billing, complete_billing
Invitationslist_invitations, create_invitation, revoke_invitation, accept_invitation
Consentslist_consents, record_consent
Members & serviceslist_members, grant_assignment, revoke_assignment, list_tenant_services, add_tenant_service

Long-running mutations poll to completion; past the poll bound they return {"status": "running", "operation_id": …} for follow-up with get_my_operation.

Rules for the assisting agent

The initialize response carries these as server instructions:

  • Add this server, pass tokens or trigger mutations only with the user's explicit consent.
  • Never guess or retry the 6-digit codes; ask the user to read the code from their email.
  • Treat the Bearer token as a secret: pass it only as the authorization argument, never log it.
  • Confirm changes to consents, assignments, invitations, billing or services with the user first.
  • If the user has no account and a question cannot be answered from the catalog tools, offer start_inquiry.
  • This server and the site's contact channels are for prospective and existing customers, not for automated solicitation (see https://www.4chems.com/llms.txt).

What this is not

  • Not a dossier interface. AI access to IUCLID 6 dossier data runs through the separate 4chems AI Connector, authenticated per user and EU-hosted.
  • Not the QSAR Toolbox workflow. Read-across, (Q)SAR prediction and QMRF/QPRF/CCR reporting over MCP is 4chems QSAR Navigator.
  • Not open source. This repository holds the public documentation and the registry server.json; the server itself is operated by 4chems.

Hosting and compliance

Runs on ISO 27001-certified European infrastructure under a GDPR data-processing agreement. 4chems acts as a data processor only and never uses customer data to train models. Security questionnaire: https://www.4chems.com/security-questionnaire/.

Contact

  • Website: https://www.4chems.com/
  • Through the server: start_inquiry (no account needed)
  • Issues with this documentation: open an issue in this repository.

来源:README.md,提交 f8df593

工具

32

get_catalog_templates

Get Catalog Templates

Return the enabled ApplicationTemplate catalog, ordered by name. Call this to discuss trial and template options with a prospect or customer before starting a trial. If this doesn't answer your question, call `start_inquiry` to ask 4chems directly or request a call.

输入参数authorization

list_consents

List Consents

Return the caller's own recorded consents plus the tenant-scope consents of every tenant where the caller is at least a viewer. Call this to check which legal documents have already been accepted before asking again. Pass `tenant_id` to list one tenant's consents only (a caller of several tenants must).

输入参数tenant_idauthorization必填

start_inquiry

Start Inquiry

Store an anonymous inquiry draft and email a 6-digit verification code. Ask the user for the code, then call verify_inquiry with the returned challenge_id and code — the inquiry reaches 4chems only after that verification succeeds.

输入参数bodyauthorization

verify_inquiry

Verify Inquiry

Verify the 6-digit code and deliver the inquiry to the helpdesk inbox.

输入参数bodyauthorization

accept_invitation

Accept Invitation

Accept a pending invitation and grant the invitee's first role assignment. Call this when an invitee has a valid invite link and wants to join the tenant; single-use, consuming the token marks it accepted.

输入参数token必填authorization必填

get_my_access

Get My Access

Return the caller's access level per related tenant. Call this to check what the current caller is authorized to do before attempting an action that requires a specific level, or to discover a pending invitation or access request.

输入参数authorization必填

create_access_request

Create Access Request Endpoint

Request access to the tenant that owns the caller's verified email domain.

输入参数authorization必填

approve_access_request

Approve Access Request Endpoint

Approve a pending access request: issue a `member` invitation to the requester and resolve the request (level `admin` or `owner` of the request's tenant). The response carries the single-use invitation token to hand to the requester, who accepts via `accept_invitation`. 409 `access_request.not_pending` unless the request is pending.

输入参数authorization必填access_request_id必填

dismiss_access_request

Dismiss Access Request Endpoint

Dismiss a pending access request (level `admin` or `owner` of the request's tenant). The requester is mailed — naming the tenant, never the dismissing admin — and may ask again. 409 `access_request.not_pending` unless the request is pending.

输入参数authorization必填access_request_id必填

withdraw_access_request

Withdraw Access Request Endpoint

Withdraw the caller's own pending access request; no notification is sent. Any other caller gets 404 `access_request.not_found`, the same as for an unknown id. 409 `access_request.not_pending` unless pending.

输入参数authorization必填access_request_id必填

enrich_domain

Enrich Domain Endpoint

Fetch the caller's domain imprint and suggest legal-entity details (UC-057).

输入参数authorization必填

start_device_login

Start Device Login

Sign in to an existing account by device login (UC-091, RFC 8628). Anonymous, empty body; the account must exist (start_account_registration, then set the password through the emailed link). Show `verification_uri` (or `verification_uri_complete`) and `user_code` to the human, who signs in there, then call `verify_device_login` with `challenge_id`, waiting `interval` seconds between calls. The response never contains the Keycloak device_code or the agent client secret.

输入参数authorization

verify_device_login

Verify Device Login

Poll a device login to token issuance (UC-091, RFC 8628). Anonymous. While the human has not signed in yet it answers `{"status": "pending", "retry_after": <seconds>}`: wait `retry_after` seconds and call again with the same `challenge_id`. On approval it returns Keycloak's token set (`access_token`, `refresh_token`, `expires_in`, ...) exactly once; pass the `access_token` as `authorization` ('Bearer <token>') to every other tool.

输入参数bodyauthorization

start_account_registration

Start Account Registration

Start registering a 4chems account with a business email address (`email`, `name`, optional `company`). Anonymous. Emails a 6-digit code to the address; no account exists yet. Ask the user for the code, then call verify_account_registration with the returned challenge_id and code. Free-mail addresses (gmail.com, ...) are refused: use the company address, or call start_inquiry. The answer is the same whether or not the address already has an account.

输入参数bodyauthorization

verify_account_registration

Verify Account Registration

Verify the emailed 6-digit code (`challenge_id`, `code`) and create the 4chems account. Never guess or retry codes, and never ask the user for a password.

输入参数bodyauthorization

start_registration

Start Registration (deprecated — use start_device_login)

DEPRECATED: use start_device_login. Deprecated — use start_device_login (same behaviour).

输入参数authorization

verify_registration

Verify Registration (deprecated — use verify_device_login)

DEPRECATED: use verify_device_login. Deprecated — use verify_device_login (same behaviour).

输入参数bodyauthorization

get_onboarding_route

Get Onboarding Route

Return the next onboarding step. If this doesn't answer your question, call `start_inquiry` to ask 4chems directly or request a call.

输入参数authorization

create_self_service_tenant

Create Self Service Tenant

Create a 7-day trial tenant for the caller's business email domain (UC-052). Needs a verified email on a business domain and `attestation: true`; answers `auth.email_not_verified`, `tenant.attestation_required`, `tenant.free_mail_domain` (free-mail address), `tenant.domain_exists` (a live trial tenant on the domain) or `trial.exists_for_domain` (the domain already had its one trial; call `start_inquiry`). The trial lasts exactly 7 days; `ttl` / `expires_at` in the body are ignored.

输入参数bodyauthorization必填

get_my_operation

Get My Operation

Return the status, result and error of an operation the caller started, such as the `Location` of a `202` from `complete_billing`. Call this to poll it to completion.

输入参数operation_id必填authorization必填

get_billing

Get Billing

Return the tenant's stored billing details: VAT id, invoice address, invoice email and PO reference. Call this to check whether billing is complete; only the owner and billing contacts may read it (`403 rbac.insufficient_level`).

输入参数tenant_idauthorization必填

complete_billing

Complete Billing

Complete the tenant's billing details: legal-entity name and type, VAT id, invoice address, invoice email and optional PO reference. Call this when the owner or a billing contact has the details. EU VAT ids are validated against VIES by the worker; a failed operation with `billing.vat_check_unavailable` can be retried by submitting again. Returns `202` with an operation to poll.

输入参数bodytenant_idauthorization必填

list_invitations

List Invitations

List all invitations for the caller's tenant, most recent first. Call this to show a tenant admin which invitations are pending, accepted, or revoked; the raw token is never included.

输入参数tenant_idauthorization必填

create_invitation

Create Invitation

Invite an email address to the caller's tenant at the specified access level and return the invitation, including the raw single-use accept token. Call this when a tenant admin wants to add a new member; the invitee accepts via `accept_invitation`.

输入参数bodytenant_idauthorization必填

revoke_invitation

Revoke Invitation

Revoke a pending invitation so its token can no longer be accepted. Call this when a tenant admin wants to withdraw an invite sent by mistake or no longer needed; accepted invitations cannot be revoked.

输入参数tenant_idauthorization必填invitation_id必填

list_members

List Members

List tenant members with their effective role x scope assignments.

输入参数tenant_idauthorization必填

grant_assignment

Grant Assignment

Grant a role x scope assignment to a tenant member.

输入参数sub必填bodytenant_idauthorization必填

revoke_assignment

Revoke Assignment

Revoke a role x scope assignment from a tenant member.

输入参数id必填sub必填tenant_idauthorization必填

list_tenant_services

List Tenant Services

Return the caller's tenant's active service subscriptions. Call this before offering to add a service, to check what is already subscribed.

输入参数tenant_idauthorization必填

add_tenant_service

Add Tenant Service

Request a new service subscription for the caller's tenant and return its status. Call this when a tenant admin wants to add a service (ADR 0016 code fix: requires `admin`, was `customer` realm role only).

输入参数bodytenant_idauthorization必填

版本历史

1
  1. v0.12.1最新Oct 9, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。