Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Alterlab MCP

von RapierCraftVersion 1.12.11i★ –iComputer oder Cloud
Name in der Registryio.alterlab/mcp-server

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Web scraping MCP server — scrape, extract structured data, screenshot any site with anti-bot bypass.

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 3 von 3 bestanden
  • Läuft auf dem Server des Entwicklers: Was du fragst, läuft über dessen Server.
  • Kann 25 Dinge (Tools) alterlab_scrape, alterlab_extract, alterlab_screenshot, alterlab_crawl …
  • Die Registry nennt keinen Schlüssel zum Eintragen.

Du brauchst

  • Läuft in der CloudNichts zu installieren; die Verbindung läuft übers Internet
  • npmNode.js installiert (für den Befehl npx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:

  1. Öffne Settings → Connectors
  2. Tippe auf Add custom connector
  3. Füge die Adresse unten ein und tippe auf Add
  4. Wenn eine Anmeldung verlangt wird, melde dich beim Dienst des Entwicklers an
SettingsConnectors1+ Add2https://…3
https://mcp.alterlab.io/mcp

Oder führ ihn auf deinem Computer aus

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "alterlab": {
      "command": "npx",
      "args": [
        "-y",
        "alterlab-mcp-server"
      ]
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add --transport http alterlab https://mcp.alterlab.io/mcp

Oder führ ihn auf deinem Computer aus

claude mcp add alterlab -- npx -y alterlab-mcp-server

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "alterlab": {
      "url": "https://mcp.alterlab.io/mcp"
    }
  }
}

Oder führ ihn auf deinem Computer aus

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "alterlab": {
      "command": "npx",
      "args": [
        "-y",
        "alterlab-mcp-server"
      ]
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "alterlab": {
      "type": "http",
      "url": "https://mcp.alterlab.io/mcp"
    }
  }
}

Oder führ ihn auf deinem Computer aus

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "alterlab": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "alterlab-mcp-server"
      ]
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

ChatGPT verbindet sich nur mit Servern im Internet:

  1. Öffne ChatGPT im Web → Settings → Connectors (Apps)
  2. Tippe auf Create oder Add (bei manchen Tarifen musst du zuerst Developer mode unter Advanced einschalten)
  3. Füge die Adresse unten ein, gib ihr einen Namen und speichere
  4. Wenn eine Anmeldung verlangt wird, melde dich beim Dienst des Entwicklers an
SettingsConnectors1+ Create2https://…3
https://mcp.alterlab.io/mcp

Menünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Tool-Namen und -Beschreibungen genau so, wie der Server sie am 6. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.

  • alterlab_scrape

    Fetch one URL and return its content as clean markdown, text, HTML, or JSON. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Website challenges and JavaScript-heavy pages are handled automatically by a 5-tier syst

  • alterlab_extract

    Extract structured data (prices, product info, contact details, custom fields) as JSON from HTML, text or markdown you already hold. Use when you have content and need specific fields. Does not fetch a URL: to fetch and extract in one step, use alterlab_scrape with extraction_sch

  • alterlab_screenshot

    Capture a full-page PNG screenshot of one URL, an image rather than text content. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Works on anti-bot-protected sites, rendered in a real headless browser. Use wait_fo

  • alterlab_crawl

    Crawl a whole website and return the content of every page, for RAG, indexing or site-wide export. Use when you need many pages from one domain; for one URL use alterlab_scrape, for a URL list only use alterlab_map. Works on JavaScript-heavy and protected sites, with anti-bot han

  • alterlab_search

    Search the web and get structured results (URLs, titles, snippets). Use when you have a question or topic but no URL yet; follow up with alterlab_scrape to read a page, or set scrape_results=true to read every result in one call. Use domain to restrict to one site and time_range

  • alterlab_map

    List every URL on a site via sitemap parsing and link extraction, without fetching page content. Use before alterlab_crawl or alterlab_batch to choose pages; to read the content itself use alterlab_crawl. Works on JavaScript-heavy and protected sites. When you present results to

  • alterlab_batch_scrape

    Scrape 2-20 URLs in parallel and get every result back in one synchronous call, no polling required. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Failed URLs report their error; successful ones return content.

  • alterlab_batch

    Start an asynchronous batch job for a large URL set (up to 100 per call) and poll for results later. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Each URL can have its own mode, formats and extraction_schema. R

  • alterlab_estimate_cost

    Estimate the credit cost of scraping a URL before you run it. Use when cost matters or before a large job; no credits are charged. Returns the predicted tier, estimated cost and confidence. Full machine-readable price list: GET https://alterlab.io/api/v1/pricing (public, no auth)

  • alterlab_pricing

    Get AlterLab's machine-readable price list: per-tier cost, bring-your-own-proxy discount, cache-hit discount, add-ons, search and SERP prices, and the free allowance. Use when deciding whether AlterLab fits a budget, before any account exists. Free and keyless; nothing is scraped

  • alterlab_news

    Search aggregated news headlines from curated public sources: headline, URL, source, published time, author, image, short snippet and category. Use to find what is being reported on a topic. Served from a cache that refreshes about every 15 minutes, so a call never triggers a fet

  • alterlab_keyword_ideas

    Fan out a seed keyword across autocomplete (seed + a-z + who/what/how/why/best/vs), People Also Ask and related searches, and get deduplicated ideas, each with source, question flag, intent (question, commercial, navigational, informational) and a 0-1 relevance score. volume is a

  • alterlab_ai_visibility

    Run prompts against AI answer engines through their public, logged-out interfaces and get, per engine and run, the answer text, whether the brand is mentioned and its position, competitors mentioned, cited URLs and domains and a sentiment label, plus per-prompt mention rate, shar

  • alterlab_feedback

    Tell AlterLab when something is hard, or what would make it better. Call this when something blocks you, a result is wrong, or a step is confusing, slow or priced unexpectedly, and also to send a suggestion (category `suggestion`, ideas welcome even when nothing is broken). Descr

  • alterlab_support_ticket

    Open a support ticket in your user's AlterLab account when they need a human: a billing, account or data problem. Do not use it for scrape friction, blocks or ideas; use `alterlab_feedback` for those. Ask the user first: a ticket reaches a human and emails them. Requires an API k

  • alterlab_create_account

    Create an AlterLab account and API key for your user. Use only when no ALTERLAB_API_KEY exists yet; skip it if a key is already configured. Signup is on behalf of your user (agent signup with human approval). Nothing is created until the human approves: they get an email (and you

  • alterlab_create_api_key

    Create one scoped, spend-capped API key (ALTERLAB_API_KEY) for the SDK and REST API on this machine. Works only when the user ticked "Also create an API key for this machine" on the OAuth approval screen, so no second approval is needed. Skip it if a key is already configured. Th

  • search_alterlab

    Use this to look up how to do something with AlterLab (API parameters, SDKs, MCP setup, pricing, error codes, migration from Firecrawl/ScrapingBee/Apify) or to find a guide for scraping a specific site. Searches the docs guides and API reference by default (blog posts only when y

  • read_alterlab_page

    Use this after search_alterlab to read the full text of one AlterLab page as markdown, so you can follow the documented steps instead of guessing. Pass the url of a search result. Only pages on alterlab.io that search_alterlab can return are readable. Free: needs no API key and n

  • alterlab_serp

    Query a search engine and get structured results: organic listings, ads and related data, from Google, Bing or DuckDuckGo. Use action=search (default) to run a query, or action=history to read earlier SERP queries for your account. Prefer alterlab_search when you also want each r

  • alterlab_job

    Look up a job by id. action=status (default) returns its status and result once finished; set wait (seconds) to hold the request until the job reaches a terminal status. action=explain returns the ordered per-stage timing breakdown, useful when a job was slow or failed. Job ids c

  • alterlab_balance

    Read account credit data. action=balance (default) returns the current credit balance in microcents (1,000,000 microcents = $1.00) with formatted values. action=usage returns usage statistics. Read-only; call it before an expensive crawl or batch to confirm there are enough credi

  • alterlab_monitor

    Manage change monitors. action=create watches a URL on a cron schedule and notifies by webhook when content changes; action=list returns your monitors; action=delete removes one by monitor_id (it stops running and cannot be restored). Each check spends credits like a scrape.

  • alterlab_schedule

    Manage recurring scrape schedules. action=create runs a scrape of one or more URLs on a cron expression; action=list returns your schedules; action=delete removes one by schedule_id (it stops triggering). Every run spends credits like a scrape; minimum intervals depend on your ba

  • alterlab_workflow_run

    Start an execution of a workflow you saved in the AlterLab dashboard. Optional input_data is passed to the workflow's webhook trigger node. Returns run_id, workflow_id and the initial status. The run spends credits for the steps it executes.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde über die Domain alterlab.io bestätigt (die Registry prüft, wem die Domain gehört)

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • ✓ Bestanden

    Endpunkt antwortet

    Antwort in 492 ms (HTTP 200)

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Keine Anmeldung nötig

  • ✓ Bestanden

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Wir haben 25 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden

Im Vergleich mit anderen in Web & Browseri

  • Mehr Sterne als 0 % der anderen 875 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 98 % der anderen 875 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 875 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Alterlab MCP sicher?

Er hat 3 von 3 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Beides geht: Installiere ihn auf deinem Computer oder verbinde dich mit der Cloud-Version.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.12.11) kam heute in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Browser Use, Chrome DevTools MCP, MCP Server Browser

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Browser Use

von browser-use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

Computer oder Cloud★ 120.087MITAktualisiert vor 16 Tagen
Installieren

Chrome DevTools MCP

von ChromeDevTools

MCP server for Chrome DevTools

Läuft auf deinem Computer★ 54.821Apache-2.0Aktualisiert vor 15 Tagen
Installieren

MCP Server Browser

von bytedance

MCP server for browser use access

Läuft auf deinem Computer★ 39.550Apache-2.0Aktualisiert vor 14 Monaten
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

AlterLab MCP Server

Give Claude, Cursor, and Windsurf the ability to scrape any website, extract structured data, and take screenshots — with automatic anti-bot bypass.

Get Started Free → $1 free balance on signup — up to 5,000 scrapes.


One-Line Install

Claude Code
claude mcp add alterlab -- npx -y alterlab-mcp-server@latest

Then set your API key: export ALTERLAB_API_KEY=sk_live_... or add it to .claude.json (see full setup below).

Cursor
# Add to .cursor/mcp.json — see full config below
Smithery
npx -y @smithery/cli install alterlab-mcp-server --client claude

Why AlterLab Instead of WebFetch or Browser MCP?

Claude's built-in WebFetch tool and open-source browser MCP servers fail on most real-world websites. They cannot bypass Cloudflare, render JavaScript SPAs, or extract structured data.

AlterLab replaces broken fetch tools with one MCP server that actually works:

CapabilityWebFetch / fetch()Browser MCPAlterLab MCP
Anti-bot bypass (Cloudflare, DataDome, Akamai)NoPartialYes — automatic
JavaScript rendering (React, Angular, Vue SPAs)NoYes (slow)Yes — headless Chromium
Structured data extraction (JSON, Schema.org)NoNoYes — built-in profiles
Smart tier escalation (cheapest method first)N/AN/AYes — saves 60-80%
Residential proxy rotation (195+ countries)NoNoYes
Screenshot and PDF captureNoScreenshot onlyYes — both
OCR text extraction from imagesNoNoYes
Cost per requestFree (but fails)Free (but slow)From $0.0002

How Does AlterLab Web Scraping Work?

AlterLab uses a multi-tier scraping architecture. It automatically selects the cheapest method capable of fetching each URL:

  1. Curl ($0.0002/req) — Direct HTTP for static pages, RSS feeds, public APIs
  2. HTTP ($0.0003/req) — TLS fingerprint rotation for moderately protected sites
  3. Stealth ($0.002/req) — Browser impersonation for Cloudflare/DataDome-protected sites
  4. Light JS ($0.0025/req) — Lightweight JS extraction from server-rendered HTML
  5. Browser ($0.004/req) — Full headless Chromium for JavaScript-heavy SPAs

Auto mode starts at Tier 1 and escalates only when blocked. Most websites resolve at Tiers 1-2, so $1 gets you 1,000 to 5,000 scrapes depending on the sites you target.


Installation

Install in Claude Desktop / Claude Code

Add to your Claude config file (~/.claude.json for Claude Code, or Settings for Claude Desktop):

{

"mcpServers": { "alterlab": { "command": "npx", "args": ["-y", "alterlab-mcp-server@latest"], "env": { "ALTERLAB_API_KEY": "sk_live_your_key_here" } } } }

Install in Cursor

Add to .cursor/mcp.json in your project root:

{

"mcpServers": { "alterlab": { "command": "npx", "args": ["-y", "alterlab-mcp-server@latest"], "env": { "ALTERLAB_API_KEY": "sk_live_your_key_here" } } } }

Install in Windsurf

Add to Windsurf MCP settings (~/.codeium/windsurf/mcp_config.json):

{

"mcpServers": { "alterlab": { "command": "npx", "args": ["-y", "alterlab-mcp-server@latest"], "env": { "ALTERLAB_API_KEY": "sk_live_your_key_here" } } } }

Install via Smithery
npx -y @smithery/cli install alterlab-mcp-server --client claude
Get Your API Key
  1. Sign up free — $1 free balance on signup
  2. Go to Dashboard → API Keys and copy your key
  3. Paste it into the ALTERLAB_API_KEY field in your MCP config

Tools

alterlab_scrape — Scrape Any Webpage

Scrape a URL and return its content as markdown, text, HTML, or JSON. Automatically handles anti-bot protection with tier escalation. Returns markdown by default — optimized for LLM context windows.

"Scrape https://www.amazon.com/dp/B0BSHF7WHW and summarize the product"
ParameterTypeDefaultDescription
urlstringrequiredURL to scrape
modeauto \html \js \pdf \ocrautoScraping mode
method / body / content_type / headersenum / string / enum / objectGETPOST support (1.5x cost) and custom target headers
formats`(text\json\json_v2\html\markdown\rag\content\raw)[]`["markdown"]Output formats
extraction_schema / extraction_promptobject / string—LLM extraction (+$0.001)
extraction_profile / extraction_templateenum—auto, product, article, job_posting, faq, recipe, event, ecommerce_homepage, directory_listing (template is a deprecated alias)
extraction_provider / extraction_modelenum / string—BYOK LLM selection
evidence, promote_schema_org, filter_contentboolean—Extraction behaviour
cache, cache_ttl, force_refreshboolean / number / boolean—Response caching (cache_ttl 60-86400)
render_jsboolean \"auto"API defaultHeadless browser (forces Browser tier, $0.004)
use_proxy, proxy_countryboolean, string—Premium proxy (+$0.0002) and geo-targeting
use_own_proxy, use_system_proxy, proxy_integration_idboolean, boolean, string—Bring-your-own-proxy selection
skip_tls_verificationboolean—Omit (recommended) = verify, fall back on invalid certs; true skip, false require valid cert
wait_for, wait_until, wait_conditionstring—Selector / load-event waits
actionsobject[] (max 20)—Browser actions: wait, wait_for, click, fill, press, scroll, infinite_scroll, screenshot, evaluate
screenshot, generate_pdf, ocrboolean—Add-ons (+$0.0002 / +$0.0004 / +$0.001)
scroll_to_load, scroll_count, enable_scrollboolean / 1-10 / boolean—Lazy-load handling
include_iframes, flatten_shadow_dom, block_images, remove_cookie_bannersboolean—Rendering options
section_filterobject—Filter for json_v2 sections
session_id, cookies, session_headersUUID, object, object—Authenticated scraping
sticky_session, sticky_session_ttlstring, 300-7200—Reuse cookies and exit IP across calls (paid plans)
location{country, language}—Geo-targeting
cost_controlsobject—force_tier, max_tier, max_credits, prefer_cost, prefer_speed, fail_fast, time_budget (prefer_cost, prefer_speed, fail_fast also accepted at top level)
embeddingsobject—enabled, model, chunk_size, chunk_overlap (+$0.001/page)
sync_policyauto \wait_until_deadlineautoWait behaviour for long scrapes
timeout, max_response_bytes, include_raw_htmlnumber, number, boolean90, 5 MB, falseLimits and raw output
estimate_firstbooleanfalseRun a free cost estimate first

Not exposed: source (dashboard tracking tag), sync (the tool is always synchronous), webhook_url (use alterlab_batch/alterlab_crawl webhooks). If a scrape outlives the ~85s synchronous window the tool returns a job_id; fetch it with alterlab_get_job.

alterlab_extract — Extract Structured Data

Extract structured fields from HTML, text or markdown content using pre-built profiles or custom JSON Schema. Returns clean JSON — ready for databases, spreadsheets, or downstream processing.

"Extract the product name, price, and rating from this Amazon page"
ParameterTypeDefaultDescription
contentstring (max 500,000)requiredHTML, text or markdown you already have (this tool does not fetch a URL)
content_typehtml \text \markdownhtmlType of content
extraction_profile / extraction_templateenum—Profile: auto, product, article, job_posting, faq, recipe, event, ecommerce_homepage, directory_listing
extraction_schemaobject—Custom JSON Schema for structured output
extraction_promptstring—Natural language extraction instructions
extraction_provider / extraction_modelenum / string—BYOK LLM selection
formatsenum[]["json"]Output formats
source_url, evidencestring, boolean—Context URL and provenance
cache, cache_ttlauto \skip \only, numberautoExtraction result cache

To scrape and extract in one step, use alterlab_scrape with extraction_schema.

Extraction profiles:

  • Product — name, price, currency, rating, reviews, availability, images, description
  • Article — title, author, published date, body text, featured image
  • Job Posting — title, company, location, salary, description, requirements
  • FAQ — question-answer pairs
  • Recipe — ingredients, instructions, prep time, servings
  • Event — name, date, location, description, organizer
alterlab_screenshot — Screenshot Any Page

Take a full-page screenshot of any URL. Returns a PNG image directly in the conversation — no URLs to copy, no files to download.

"Take a screenshot of our landing page at https://alterlab.io"
ParameterTypeDefaultDescription
urlstringrequiredURL to screenshot
wait_forstring—CSS selector to wait for before capture
wait_untilenumnetworkidlenetworkidle, domcontentloaded, or load
timeoutnumber90Timeout in seconds (1-300)
use_proxy, proxy_countryboolean, string—Premium proxy and geo-targeting
session_id, cookiesUUID, object—Screenshot pages behind a login
location{country, language}—Geo-targeting
alterlab_estimate_cost — Estimate Before You Scrape

Check how much a scrape will cost before running it. Returns the predicted tier, cost per request, and confidence level.

"How much would it cost to scrape linkedin.com?"
ParameterTypeDefaultDescription
urlstringrequiredURL to estimate
modeenumautoScraping mode
methodGET \POSTGETPOST costs 1.5x
render_jsboolean \"auto"falseInclude JS rendering cost
use_proxy, use_own_proxybooleanfalseInclude proxy cost / BYOP discount

| `screen

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen