Skip to content
EU-Hosted AI for IUCLID & QSAR Toolbox logo

EU-Hosted AI for IUCLID & QSAR Toolbox MCP server

Which servers in the official MCP registry are EU-Hosted AI for IUCLID & QSAR Toolbox's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-20

← Back to EU-Hosted AI for IUCLID & QSAR Toolbox

Whose server it is
  • Registry namecom.4chems/platform-apiverified in the MCP registry

The registry name sits under 4chems.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-20
  • Stateanswerschecked 2026-10-20
  • Tools32
  • Server calls itselfplatform-api-customer
  • Server version0.12.1
  • Protocol version2025-06-18

On 2026-10-20 the server answered initialize and tools/list without a sign-in. First answer in 551 ms.

Should an agent connect itSkip it
  • Its tools do none of the product's use cases we checked: host IUCLID and Chesar in an EU cloud; check dossiers for hidden errors before submission; submit dossiers to REACH-IT automatically via API.
  • Checked on 2 of the 7 days it takes to judge reliability.

Once connected

  • create_access_request, create_self_service_tenant, create_invitation, add_tenant_service change data without a sign-in: anyone with the address can call them.
  • Parameters are untyped or undescribed in 32 of 32 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 2, the first on 2026-10-20
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 2 so far
  • What an agent can do with it0 of 3 use cases
  • Answeredmeasuring2 of the 7 daily checks it takes to print a share
  • Median first answer555 ms
  • Space in an agent's context≈ 4,756 tokensthe definitions of all its tools (32), which an agent carries on every turn
  • Tool definitionsB · 83 of 100
  • Typed results30 of 32 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 32 of 32

What an agent can do with it

  • cannot · host IUCLID and Chesar in an EU cloud
  • cannot · check dossiers for hidden errors before submission
  • cannot · submit dossiers to REACH-IT automatically via API

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: create_access_request, create_self_service_tenant, create_invitation, add_tenant_service

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers32 tools · read 2026-10-20
  • 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…

  • 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…

  • record_consent

    Record acceptance of a legal document version and return the entry; call this only after showing the user the document URL and version and receiving an explicit affirmative answer.

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

  • verify_inquiry

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

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

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

  • create_access_request

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

  • approve_access_request

    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…

  • dismiss_access_request

    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…

  • withdraw_access_request

    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.

  • enrich_domain

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

  • 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…

  • 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…

  • 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

    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.

  • start_registration

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

  • verify_registration

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

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

  • 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`…

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

  • get_legal_entity_types

    Return the legal-entity types available for *country*, ordered alphabetically. If this doesn't answer your question, call `start_inquiry` to ask 4chems directly or request a call.

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

  • 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…

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

  • 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…

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

  • list_members

    List tenant members with their effective role x scope assignments.

  • grant_assignment

    Grant a role x scope assignment to a tenant member.

  • revoke_assignment

    Revoke a role x scope assignment from a tenant member.

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

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

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "platform-api": {
      "type": "http",
      "url": "https://mcp.4chems.com/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

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

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://mcp.4chems.com/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.