4chems Platform — IUCLID, CHESAR & QSAR Toolbox hosting
Server Details
Remote MCP server for 4chems hosted IUCLID, CHESAR and QSAR Toolbox: onboarding, inquiries, admin.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- 4chems/mcp
- GitHub Stars
- 0
TDQS
Score is being calculated.
Available Tools
32 toolsaccept_invitationAccept InvitationInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| Yes | ||
| level | Yes | |
| status | Yes | |
| tenant_id | Yes | |
| created_at | Yes | |
| expires_at | Yes | |
| invited_by | Yes | |
| accepted_at | No | |
| billing_contact | No |
add_tenant_serviceAdd Tenant ServiceInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
approve_access_requestApprove Access Request EndpointInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes | ||
| access_request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| token | Yes | |
| status | Yes | |
| tenant_id | Yes | |
| created_at | Yes | |
| updated_at | Yes | |
| invitation_id | Yes |
complete_billingComplete BillingIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | `complete_billing` body. `vat_id` is checked against the tenant's country in the service. | |
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| target_id | No | |
| created_at | Yes | |
| finished_at | No | |
| target_type | No | |
| operation_id | Yes |
create_access_requestCreate Access Request EndpointIdempotentInspect
Request access to the tenant that owns the caller's verified email domain.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| target_id | No | |
| created_at | Yes | |
| finished_at | No | |
| target_type | No | |
| operation_id | Yes |
create_invitationCreate InvitationInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| Yes | ||
| level | Yes | |
| token | Yes | |
| status | Yes | |
| tenant_id | Yes | |
| created_at | Yes | |
| expires_at | Yes | |
| invited_by | Yes | |
| accepted_at | No | |
| billing_contact | No |
create_self_service_tenantCreate Self Service TenantInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST /v1/onboarding/tenants (UC-052). The domain is derived from the caller's verified token email claim (NFR-006 pt 4) — it is not a request parameter. attestation must be true; the endpoint raises 422 if false (NFR-006 §8a). | |
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| target_id | No | |
| created_at | Yes | |
| finished_at | No | |
| target_type | No | |
| operation_id | Yes |
dismiss_access_requestDismiss Access Request EndpointDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes | ||
| access_request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes | |
| tenant_id | Yes | |
| created_at | Yes | |
| updated_at | Yes |
enrich_domainEnrich Domain EndpointIdempotentInspect
Fetch the caller's domain imprint and suggest legal-entity details (UC-057).
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| country | No | |
| confidence | No | |
| source_url | No | |
| entity_type | No | |
| legal_entity_name | No |
get_billingGet BillingRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| city | No | |
| name | Yes | |
| vat_id | No | |
| country | Yes | |
| other_label | No | |
| postal_code | No | |
| po_reference | No | |
| address_line1 | No | |
| address_line2 | No | |
| invoice_email | No | |
| vat_validated_at | No | |
| billing_completed | Yes | |
| legal_entity_type | Yes | |
| billing_completed_at | No |
get_catalog_templatesGet Catalog TemplatesRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_legal_entity_typesGet Legal Entity TypesRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | ISO 3166-1 alpha-2 country code | |
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_my_accessGet My AccessRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_my_operationGet My OperationRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| target_id | No | |
| created_at | Yes | |
| finished_at | No | |
| target_type | No | |
| operation_id | Yes |
get_onboarding_routeGet Onboarding RouteRead-onlyIdempotentInspect
Return the next onboarding step. If this doesn't answer your question, call
start_inquiry to ask 4chems directly or request a call.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| action | Yes | |
| next_step | No | |
| tenant_name | No | |
| subscription | No | |
| registration_url | No | |
| registration_methods | No |
grant_assignmentGrant AssignmentInspect
Grant a role x scope assignment to a tenant member.
| Name | Required | Description | Default |
|---|---|---|---|
| sub | Yes | ||
| body | No | ||
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| role | Yes | |
| subject | Yes | |
| scope_id | Yes | |
| expires_at | Yes | |
| granted_at | Yes | |
| granted_by | Yes | |
| scope_type | Yes | |
| subject_type | Yes |
list_consentsList ConsentsRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
list_invitationsList InvitationsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
list_membersList MembersRead-onlyIdempotentInspect
List tenant members with their effective role x scope assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| members | Yes | |
| tenant_id | Yes |
list_tenant_servicesList Tenant ServicesRead-onlyIdempotentInspect
Return the caller's tenant's active service subscriptions. Call this before offering to add a service, to check what is already subscribed.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
record_consentRecord ConsentIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes | ||
| document_code | Yes | ||
| document_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| source | Yes | |
| tenant_id | No | |
| granted_at | Yes | |
| subject_sub | Yes | |
| document_code | Yes | |
| document_version | Yes |
revoke_assignmentRevoke AssignmentDestructiveIdempotentInspect
Revoke a role x scope assignment from a tenant member.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| sub | Yes | ||
| tenant_id | No | ||
| authorization | Yes |
revoke_invitationRevoke InvitationDestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | No | ||
| authorization | Yes | ||
| invitation_id | Yes |
start_account_registrationStart Account RegistrationInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST /v1/onboarding/registrations/account (UC-088). | |
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| challenge_id | Yes | |
| expires_in_seconds | Yes |
start_device_loginStart Device LoginInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| interval | Yes | |
| user_code | Yes | |
| expires_in | Yes | |
| challenge_id | Yes | |
| verification_uri | Yes | |
| verification_uri_complete | Yes |
start_inquiryStart InquiryInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_step | Yes | |
| challenge_id | Yes | |
| expires_in_seconds | Yes |
start_registrationStart Registration (deprecated — use start_device_login)Inspect
DEPRECATED: use start_device_login. Deprecated — use start_device_login (same behaviour).
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| interval | Yes | |
| user_code | Yes | |
| expires_in | Yes | |
| challenge_id | Yes | |
| verification_uri | Yes | |
| verification_uri_complete | Yes |
verify_account_registrationVerify Account RegistrationInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST /v1/onboarding/registrations/account/verify (UC-089). | |
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| account | Yes | |
| next_step | Yes |
verify_device_loginVerify Device LoginInspect
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 ') to every other tool.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST /v1/onboarding/registrations/device/verify (UC-075). | |
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
verify_inquiryVerify InquiryInspect
Verify the 6-digit code and deliver the inquiry to the helpdesk inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| reference | Yes | |
| inquiry_id | Yes |
verify_registrationVerify Registration (deprecated — use verify_device_login)Inspect
DEPRECATED: use verify_device_login. Deprecated — use verify_device_login (same behaviour).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST /v1/onboarding/registrations/device/verify (UC-075). | |
| authorization | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
withdraw_access_requestWithdraw Access Request EndpointDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorization | Yes | ||
| access_request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes | |
| tenant_id | Yes | |
| created_at | Yes | |
| updated_at | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
32 tool updates
- First observed
accept_invitation - First observed
add_tenant_service - First observed
approve_access_request - First observed
complete_billing - First observed
create_access_request - First observed
create_invitation - First observed
create_self_service_tenant - First observed
dismiss_access_request - First observed
enrich_domain - First observed
get_billing - First observed
get_catalog_templates - First observed
get_legal_entity_types - First observed
get_my_access - First observed
get_my_operation - First observed
get_onboarding_route - First observed
grant_assignment - First observed
list_consents - First observed
list_invitations - First observed
list_members - First observed
list_tenant_services - First observed
record_consent - First observed
revoke_assignment - First observed
revoke_invitation - First observed
start_account_registration - First observed
start_device_login - First observed
start_inquiry - First observed
start_registration - First observed
verify_account_registration - First observed
verify_device_login - First observed
verify_inquiry - First observed
verify_registration - First observed
withdraw_access_request
Related MCP Connectors
MCP server for the Inistate platform: module discovery, entry management, and activity submission.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
MCP server for Product Management
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for Ketcher chemical structure editor integration, enabling SMILES/MOL/InChI conversion, image generation, molecular property calculation, and validation.MIT
- AlicenseAqualityAmaintenanceMCP server for GoCertius: certified evidence, dossiers, notifications and chats via AI agents.41128 npmMIT
- AlicenseBqualityDmaintenanceMCP server for Codabench REST API that enables AI agents to drive a full participant ML-benchmark workflow: discover competitions, download data, submit, poll, and read leaderboards.16MIT
- AlicenseNot gradedqualityDmaintenanceProvides chemical informatics endpoints for converting between chemical names and SMILES, processing molecule structures, and comparing molecules, with MCP compatibility.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.