---
title: Grünig-SignTronic Screen-Printing Catalog — MCP Server
description: "Connect any MCP client to the public Grünig-SignTronic screen-printing catalog: products, jobs, distributors, legal pages and news. Read-only, no auth."
image: https://mcp.grunig-signtronic.com/images/og-image.jpg
---

> Documentation Index  
> Fetch the complete site index at: https://mcp.grunig-signtronic.com/llms.txt  
> Use this file to discover all available pages before exploring further.

Model Context Protocol

# Grünig-SignTronic Catalog MCP Server

A stateless, authless, read-only Model Context Protocol server that exposes the public Grünig-SignTronic screen-printing catalog — products, jobs, distributors, legal pages and news — to any MCP client or AI assistant, over one standard endpoint.

[Get started](#setup) [Browse tools](#tools)

Setup

## Connect a client

The server speaks the Model Context Protocol over Streamable HTTP at a single endpoint. There is no API key and no account — point a client at the URL and its tools appear.

MCP endpoint

```
https://mcp.grunig-signtronic.com/mcp
```

Streamable HTTP No authentication Read-only

1 Recommended

### Claude.ai connector

Add it as a custom connector in Claude.

1. Open Settings → Connectors.
2. Click Add custom connector.
3. Paste the endpoint shown above; leave authentication empty.
4. Save, enable it in a chat, then ask about the catalog.

Use the MCP endpoint shown above

2

### ChatGPT

Add it as a custom connector in ChatGPT (Plus, Pro, Team or Enterprise).

1. Open Settings → Connectors.
2. Click Create and choose a custom (MCP) connector.
3. Paste the endpoint shown above as the server URL; set authentication to none.
4. Save, enable it in a chat, then ask about the catalog.

Use the MCP endpoint shown above

3

### MCP Inspector

Inspect and call tools directly from a terminal.

1. Run the command below.
2. Choose the Streamable HTTP transport.
3. Enter the endpoint and click Connect.
4. Use List Tools / Call Tool to explore.

Run

```
npx @modelcontextprotocol/inspector
```

### Or let your assistant set it up

Paste this into Claude, ChatGPT or any MCP-aware assistant to add the server and try it in one step:

Setup prompt

```
Add the remote MCP server "Grünig-SignTronic Catalog" at https://mcp.grunig-signtronic.com/mcp (Model Context Protocol over Streamable HTTP, no authentication) to my MCP client, then list its tools and run search_products with query "coating" to confirm it works.
```

### Call a tool directly (curl)

Every request is a single JSON-RPC `POST`. This searches the product catalog:

Search products

```
curl -s https://mcp.grunig-signtronic.com/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_products","arguments":{"query":"coating","lang":"en"}}}'
```

Reference

## Tools

Every entity follows a uniform list / search + get shape: list and search tools return compact summaries, get\_\* tools return full detail. All tools are read-only, and every tool except ping takes a lang of “en” or “de”. This reference is generated from the server's own tool definitions, so it always matches what the endpoint exposes.

### ping

Ping

Liveness check — returns 'pong' and the active environment. Takes no arguments.

**Returns:** `A short text string, e.g. pong (production).`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ping",
    "arguments": {}
  }
}
```

### search\_products

Search products

Search the active Grünig-SignTronic product catalog in the requested language. The query is a case-insensitive substring matched across all product text — name, short and full description, features, benefits, applications and specifications — so model numbers and technical terms (e.g. "1270", "UV-LED") match too. Optionally filter by category (see list\_categories for valid slugs). Returns compact product summaries (slug, name, short description, category, canonical URL). Use get\_product for full detail.

| Parameter | Type           | Req.     | Description                                        |
| --------- | -------------- | -------- | -------------------------------------------------- |
| query     | string (1–200) | required | Case-insensitive search term.                      |
| lang      | "en" \| "de"   | required | Response language for the catalog content.         |
| limit     | integer (1–50) | optional | Max results. Default 10.                           |
| category  | string (≤100)  | optional | Category slug to filter by (see list\_categories). |

**Returns:** `{ count, results: [{ slug, name, shortDescription, category, url }] }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_products",
    "arguments": {
      "query": "coating",
      "lang": "en"
    }
  }
}
```

### get\_product

Get product

Return the full detail of a single active product, resolved by slug (preferred) or id, in the requested language: descriptions, features, benefits, applications, specifications, documents and related-product slugs.

| Parameter | Type          | Req.     | Description                                |
| --------- | ------------- | -------- | ------------------------------------------ |
| slug      | string (≤200) | optional | Product slug. Provide slug or id.          |
| id        | string (≤100) | optional | Product id. Provide slug or id.            |
| lang      | "en" \| "de"  | required | Response language for the catalog content. |

**Returns:** `{ found, product } — found: false if unknown or inactive.`

At least one of slug or id is required.

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_product",
    "arguments": {
      "slug": "g-202",
      "lang": "en"
    }
  }
}
```

### list\_categories

List categories

List all active product categories in the requested language (slug, name, description). Use a returned slug to filter search\_products.

| Parameter | Type            | Req.     | Description                                |
| --------- | --------------- | -------- | ------------------------------------------ |
| lang      | "en" \| "de"    | required | Response language for the catalog content. |
| limit     | integer (1–200) | optional | Max results. Default 50.                   |

**Returns:** `{ count, results: [{ slug, name, description }] }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_categories",
    "arguments": {
      "lang": "en"
    }
  }
}
```

### list\_jobs

List jobs

List open job postings as compact summaries in the requested language. Optionally filter by job type. Use get\_job for full detail.

| Parameter | Type            | Req.     | Description                                |
| --------- | --------------- | -------- | ------------------------------------------ |
| lang      | "en" \| "de"    | required | Response language for the catalog content. |
| type      | string (≤50)    | optional | Job type to filter by.                     |
| limit     | integer (1–200) | optional | Max results. Default 50.                   |

**Returns:** `{ count, results: [{ slug, title, type, … }] }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_jobs",
    "arguments": {
      "lang": "en"
    }
  }
}
```

### get\_job

Get job

Return the full detail of a single open job, resolved by slug or id, in the requested language: description, requirements, benefits and job type.

| Parameter | Type          | Req.     | Description                                |
| --------- | ------------- | -------- | ------------------------------------------ |
| slug      | string (≤200) | optional | Job slug. Provide slug or id.              |
| id        | string (≤100) | optional | Job id. Provide slug or id.                |
| lang      | "en" \| "de"  | required | Response language for the catalog content. |

**Returns:** `{ found, job } — found: false if unknown or closed.`

At least one of slug or id is required.

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_job",
    "arguments": {
      "slug": "automatiker",
      "lang": "en"
    }
  }
}
```

### list\_distributors

List distributors

List distributors as company-level summaries in the requested language (name, address, email, website, coordinates). Optionally filter by country. Person-level contact is NOT included here — use get\_distributor.

| Parameter | Type            | Req.     | Description                                |
| --------- | --------------- | -------- | ------------------------------------------ |
| lang      | "en" \| "de"    | required | Response language for the catalog content. |
| country   | string (≤100)   | optional | Country to filter by (case-insensitive).   |
| limit     | integer (1–200) | optional | Max results. Default 50.                   |

**Returns:** `{ count, results: [{ companyName, address, email, url, coordinates }] }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_distributors",
    "arguments": {
      "lang": "en"
    }
  }
}
```

### get\_distributor

Get distributor

Return the full detail of a single distributor, resolved by slug or id, in the requested language — including the named contact person (email/phone/mobile). Person-level contact is exposed only here, never in the bulk list.

| Parameter | Type          | Req.     | Description                                |
| --------- | ------------- | -------- | ------------------------------------------ |
| slug      | string (≤200) | optional | Distributor slug. Provide slug or id.      |
| id        | string (≤100) | optional | Distributor id. Provide slug or id.        |
| lang      | "en" \| "de"  | required | Response language for the catalog content. |

**Returns:** `{ found, distributor } including a contact object.`

At least one of slug or id is required.

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_distributor",
    "arguments": {
      "slug": "grunig-signtronic",
      "lang": "en"
    }
  }
}
```

### get\_legal\_document

Get legal document

Return a legal document (e.g. imprint, privacy policy, terms) by its page key, in the requested language.

| Parameter | Type           | Req.     | Description                                     |
| --------- | -------------- | -------- | ----------------------------------------------- |
| page      | string (1–100) | required | Legal page key, e.g. \`imprint\` / \`privacy\`. |
| lang      | "en" \| "de"   | required | Response language for the catalog content.      |

**Returns:** `{ found, document: { title, body } }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_legal_document",
    "arguments": {
      "page": "imprint",
      "lang": "en"
    }
  }
}
```

### list\_news

List news

List the latest news items in the requested language (title, excerpt, tags, date). Optionally filter by tag. Only excerpts are exposed — never full article HTML.

| Parameter | Type           | Req.     | Description                                |
| --------- | -------------- | -------- | ------------------------------------------ |
| lang      | "en" \| "de"   | required | Response language for the catalog content. |
| tag       | string (≤100)  | optional | Tag to filter by.                          |
| limit     | integer (1–50) | optional | Max results. Default 10.                   |

**Returns:** `{ count, results: [{ title, excerpt, tags, publishedAt }] }.`

Example call

Example call

```
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_news",
    "arguments": {
      "lang": "en"
    }
  }
}
```

About

## About this server

### Purpose

It lets MCP clients and AI assistants query the public Grünig-SignTronic catalog through one standard, well-known endpoint — no scraping, no bespoke API.

### Data source

All content originates from the public Grünig-SignTronic website and is served read-only. The catalog is refreshed whenever the website publishes; the server never writes.

### Security

The endpoint is authless, read-only and stateless. It exposes no secrets, no writes and no personal data beyond what is already public on the website.

### Transport

Model Context Protocol over Streamable HTTP. Requests are plain JSON-RPC over POST; responses are edge-cached where safe.

```json
{"@context":"https://schema.org","@type":"WebSite","@id":"https://mcp.grunig-signtronic.com/#website","url":"https://mcp.grunig-signtronic.com","name":"Grünig-SignTronic MCP","description":"Connect any MCP client to the public Grünig-SignTronic screen-printing catalog: products, jobs, distributors, legal pages and news. Read-only, no auth.","inLanguage":["en-US","de-CH"],"publisher":{"@id":"https://www.grunig-signtronic.com/#organization"}}
{"@context":"https://schema.org","@type":"Organization","@id":"https://www.grunig-signtronic.com/#organization","name":"Grünig-SignTronic AG","legalName":"Grünig-SignTronic AG","url":"https://www.grunig-signtronic.com","logo":{"@type":"ImageObject","url":"https://mcp.grunig-signtronic.com/images/og-image.jpg","width":1200,"height":630},"image":"https://mcp.grunig-signtronic.com/images/og-image.jpg","description":"Swiss screen-printing automation and screen-production systems — over 55 years of expertise.","foundingDate":"1967","vatID":"CH-035.3.007.501-8","taxID":"CHE-102.614.679","address":{"@type":"PostalAddress","streetAddress":"Ringgenmatt 14","postalCode":"3150","addressLocality":"Schwarzenburg","addressRegion":"Bern","addressCountry":"CH"},"location":{"@type":"Place","address":{"@type":"PostalAddress","streetAddress":"Ringgenmatt 14","postalCode":"3150","addressLocality":"Schwarzenburg","addressRegion":"Bern","addressCountry":"CH"},"geo":{"@type":"GeoCoordinates","latitude":46.8167,"longitude":7.3333}},"areaServed":"Worldwide","telephone":"+41 31 734 26 00","email":"info@grunig-signtronic.com","contactPoint":{"@type":"ContactPoint","contactType":"customer service","telephone":"+41 31 734 26 00","email":"info@grunig-signtronic.com","areaServed":"Worldwide","availableLanguage":["en","de"]},"sameAs":["https://www.youtube.com/GrunigInterscreen","https://www.linkedin.com/company/grunig-signtronic","https://www.instagram.com/grunig_signtronic","https://www.facebook.com/GrunigInterscreen","https://github.com/grunig-release","https://vimeo.com/grunig"],"knowsAbout":["Screen Printing","Screen Production","Industrial Automation","CTS Technology","Computer-to-Screen","Screen Stretching","Screen Coating","Screen Washing","Textile Printing","Industrial Printing"]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://mcp.grunig-signtronic.com/en#webpage","url":"https://mcp.grunig-signtronic.com/en","name":"Grünig-SignTronic Screen-Printing Catalog — MCP Server","description":"Connect any MCP client to the public Grünig-SignTronic screen-printing catalog: products, jobs, distributors, legal pages and news. Read-only, no auth.","inLanguage":"en-US","isPartOf":{"@id":"https://mcp.grunig-signtronic.com/#website"},"about":{"@id":"https://www.grunig-signtronic.com/#organization"},"primaryImageOfPage":{"@type":"ImageObject","url":"https://mcp.grunig-signtronic.com/images/og-image.jpg"}}
{"@context":"https://schema.org","@type":"SoftwareApplication","@id":"https://mcp.grunig-signtronic.com/#mcp-server","name":"Grünig-SignTronic Catalog MCP Server","applicationCategory":"DeveloperApplication","operatingSystem":"Any (Model Context Protocol client)","url":"https://mcp.grunig-signtronic.com","description":"Connect any MCP client to the public Grünig-SignTronic screen-printing catalog: products, jobs, distributors, legal pages and news. Read-only, no auth.","softwareHelp":{"@type":"CreativeWork","url":"https://mcp.grunig-signtronic.com/en"},"offers":{"@type":"Offer","price":"0","priceCurrency":"CHF"},"publisher":{"@id":"https://www.grunig-signtronic.com/#organization"}}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://mcp.grunig-signtronic.com/en#faq","mainEntity":[{"@type":"Question","name":"Purpose","acceptedAnswer":{"@type":"Answer","text":"It lets MCP clients and AI assistants query the public Grünig-SignTronic catalog through one standard, well-known endpoint — no scraping, no bespoke API."}},{"@type":"Question","name":"Data source","acceptedAnswer":{"@type":"Answer","text":"All content originates from the public Grünig-SignTronic website and is served read-only. The catalog is refreshed whenever the website publishes; the server never writes."}},{"@type":"Question","name":"Security","acceptedAnswer":{"@type":"Answer","text":"The endpoint is authless, read-only and stateless. It exposes no secrets, no writes and no personal data beyond what is already public on the website."}},{"@type":"Question","name":"Transport","acceptedAnswer":{"@type":"Answer","text":"Model Context Protocol over Streamable HTTP. Requests are plain JSON-RPC over POST; responses are edge-cached where safe."}}]}
```
