4chems Platform — IUCLID, CHESAR & QSAR Toolbox hosting

com.4chemsPublished by 4chems.comOfficial publisherv0.12.1Updated Oct 24, 2026

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

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Remote MCP server for the 4chems hosting platform, letting an assistant handle account sign-up, inquiries, tenant access, invitations, billing and service setup

What you can do
Browse the application catalog, onboarding steps and legal-entity types, and send a verified inquiry to 4chems support without an account. Register a 4chems account or sign in through a device flow and obtain a token. Check, create, approve, dismiss or withdraw tenant access requests and poll long-running operations. Manage tenant invitations, members and role assignments. Read and complete billing details, and list or request tenant service subscriptions. Review and record acceptance of legal documents.
When to use it
Useful when a prospective or existing 4chems customer wants to ask questions, create an account or trial tenant, and administer members, invitations, billing and subscriptions through an assistant instead of the web interface. It does not expose substance or dossier data.
Requirements
A remote Streamable HTTP endpoint; no local runtime. Anonymous connection and nine tools need no token; the remaining tools take a Bearer token passed as the authorization argument, obtained by registering an account or signing in through the device flow. A business email address is needed for registration and trial tenants, and the user must read emailed 6-digit codes.
Before you install
The Bearer token is a secret and should only be passed as the authorization argument. Many tools change data: recording consents, creating or revoking invitations and assignments, completing billing, and requesting services. Billing details include VAT id and invoice address, and EU VAT ids are checked against VIES. Emailed verification codes must not be guessed or retried. Confirm mutations with the user first.

Installation

In SourceWeft

  1. Open 4chems Platform — IUCLID, CHESAR & QSAR Toolbox hosting in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.4chems%2Fplatform-api/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "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.

Source: README.md at commit f8df593

Tools

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.

Parametersauthorization

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).

Parameterstenant_idauthorizationrequired

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.

Parametersbodyauthorization

verify_inquiry

Verify Inquiry

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

Parametersbodyauthorization

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.

Parameterstokenrequiredauthorizationrequired

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.

Parametersauthorizationrequired

create_access_request

Create Access Request Endpoint

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

Parametersauthorizationrequired

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.

Parametersauthorizationrequiredaccess_request_idrequired

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.

Parametersauthorizationrequiredaccess_request_idrequired

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.

Parametersauthorizationrequiredaccess_request_idrequired

enrich_domain

Enrich Domain Endpoint

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

Parametersauthorizationrequired

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.

Parametersauthorization

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.

Parametersbodyauthorization

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.

Parametersbodyauthorization

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.

Parametersbodyauthorization

start_registration

Start Registration (deprecated — use start_device_login)

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

Parametersauthorization

verify_registration

Verify Registration (deprecated — use verify_device_login)

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

Parametersbodyauthorization

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.

Parametersauthorization

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.

Parametersbodyauthorizationrequired

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.

Parametersoperation_idrequiredauthorizationrequired

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`).

Parameterstenant_idauthorizationrequired

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.

Parametersbodytenant_idauthorizationrequired

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.

Parameterstenant_idauthorizationrequired

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`.

Parametersbodytenant_idauthorizationrequired

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.

Parameterstenant_idauthorizationrequiredinvitation_idrequired

list_members

List Members

List tenant members with their effective role x scope assignments.

Parameterstenant_idauthorizationrequired

grant_assignment

Grant Assignment

Grant a role x scope assignment to a tenant member.

Parameterssubrequiredbodytenant_idauthorizationrequired

revoke_assignment

Revoke Assignment

Revoke a role x scope assignment from a tenant member.

Parametersidrequiredsubrequiredtenant_idauthorizationrequired

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.

Parameterstenant_idauthorizationrequired

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).

Parametersbodytenant_idauthorizationrequired

Version history

1
  1. v0.12.1LatestOct 9, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.