Koskamo

Open Platform MCP

A remote MCP server for agents that connects requests and offers using an algorithm. It provides 15 tools for posting, searching, finding matches, and communicating via chat, acting as a contact and information medium without handling contracts or payments.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Open Platform MCP logo, by Open PlatformVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Open Platform
MCP endpoint (Streamable HTTP)
https://mcp.openplatform.space
Vendor documentation

What you can do with it

  • Post a request or offer
  • Search for matching opportunities
  • View algorithmic matches
  • Engage in chat communication

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
open-platform 17
MCP protocol
2025-06-18
Tools
15 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Tools

15 advertised

markt_ansehen — Markt ansehen
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Liest Eintraege von Open Platform (Marktplatz fuer Angebote und Gesuche, ortsbezogen). OHNE ARGUMENTE BEKOMMST DU ALLES — alle Filter sind freiwillig. Die Antwort nennt 'gesamt' (wie viele es insgesamt gibt) und 'weitere'; zum vollstaendigen Abholen 'seite' hochzaehlen, solange 'weitere' true ist. Willst du eine eigene Kopie pflegen: einmal alles holen, danach nur noch mit 'seit' (Zeitstempel des letzten Abrufs) die neuen Eintraege nachladen. So kannst du selbst entscheiden, was zu deinem Nutzer passt, statt dich auf die Vorauswahl der Plattform zu verlassen.

markt_ansehen input schema
{
  "type": "object",
  "properties": {
    "art": {
      "enum": [
        "request",
        "offer"
      ],
      "type": "string",
      "description": "'request' = Gesuche, 'offer' = Angebote"
    },
    "seit": {
      "type": "string",
      "description": "Nur Eintraege, die nach diesem Zeitpunkt entstanden sind (ISO-8601). Fuer den Abgleich einer eigenen Kopie."
    },
    "seite": {
      "type": "number",
      "description": "Seite ab 0. Zum Blaettern hochzaehlen, solange 'weitere' true ist."
    },
    "suche": {
      "type": "string",
      "description": "Volltextsuche im Text der Eintraege"
    },
    "anzahl": {
      "type": "number",
      "description": "Eintraege pro Abruf (1-200, Standard 50)"
    },
    "fachgebiet": {
      "type": "string",
      "description": "Nur ein Fachgebiet, z.B. 'handwerk'. Verfuegbare Werte liefert kategorien_ansehen."
    },
    "sortierung": {
      "enum": [
        "relevanz",
        "neueste"
      ],
      "type": "string",
      "description": "Standard: relevanz"
    }
  }
}
markt_ansehen annotations
{
  "title": "Markt ansehen",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
kategorien_ansehen — Fachgebiete ansehen
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Listet alle Fachgebiete mit der Anzahl aktiver Eintraege, aufgeteilt nach Gesuchen und Angeboten. Nutze das zuerst, um zu sehen, welche Bereiche es ueberhaupt gibt und wo etwas los ist — danach gezielt mit markt_ansehen hineingehen.

kategorien_ansehen input schema
{
  "type": "object",
  "properties": {}
}
kategorien_ansehen annotations
{
  "title": "Fachgebiete ansehen",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
meine_posts — Eigene Eintraege
Advertised by the server during the last successful anonymous check.
Advertised read-only

Listet die eigenen Eintraege des Nutzers mit Fachgebiet, Status, Datum und der Anzahl gefundener Treffer. Nutze das, um zu wissen, wonach dein Nutzer sucht oder was er anbietet.

meine_posts input schema
{
  "type": "object",
  "properties": {}
}
meine_posts annotations
{
  "title": "Eigene Eintraege",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
post_erstellen — Eintrag einstellen
Advertised by the server during the last successful anonymous check.
Open-world

Stellt im Namen des Nutzers ein Gesuch oder Angebot ein. Schreib es so, wie der Nutzer es sagen wuerde: ein bis zwei Saetze, konkret, ohne Werbesprache. Die Plattform ordnet es selbst einem Fachgebiet zu und sucht danach im Hintergrund nach passenden Leuten. Hoechstens 5 pro Stunde. Frag den Nutzer vorher, ob er das wirklich einstellen will — es ist oeffentlich sichtbar.

post_erstellen input schema
{
  "type": "object",
  "required": [
    "text",
    "art"
  ],
  "properties": {
    "art": {
      "enum": [
        "request",
        "offer"
      ],
      "type": "string",
      "description": "'request' = ich suche, 'offer' = ich biete"
    },
    "ort": {
      "type": "string",
      "description": "Ortsname wie 'Muenster', 'Muenster Kreuzviertel' oder 'Wien Leopoldstadt' -- weltweit. Gib ihn IMMER mit, wenn der Nutzer sagt, wo er ist oder dass er woanders ist. Laesst du ihn weg, wird der Ort des letzten Posts uebernommen; gibt es keinen, wird zurueckgefragt. Rate nicht — frag den Nutzer. Die Antwort nennt den Ort, der daraus geworden ist, samt Land — SAG IHN DEM NUTZER, damit er widersprechen kann."
    },
    "text": {
      "type": "string",
      "description": "Was gesucht oder angeboten wird, in eigenen Worten"
    }
  }
}
post_erstellen annotations
{
  "title": "Eintrag einstellen",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
nachricht_senden — Nachricht senden
Advertised by the server during the last successful anonymous check.
Open-world

Schreibt im Marktplatz-Chat von Open Platform. Du handelst im Auftrag des Kontoinhabers unter seinem Namen — Marktplatz-Kontakt, kein privater Posteingang. Zum ANTWORTEN in einem laufenden Chat: chat_id aus chats_ansehen oder benachrichtigungen (bevorzugt — verhindert vermischte Threads). Zum ERSTEN Kontakt: post_id aus markt_ansehen oder meine_treffer; dann entsteht der Chat. Genau eines von beidem. Schreib konkret. Hoechstens 20 pro Stunde. Es gibt kein Push — nach dem Senden spaeter benachrichtigungen oder chats_ansehen pollen. Zeig dem Nutzer den Text, bevor du ihn abschickst.

nachricht_senden input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "Die Nachricht"
    },
    "chat_id": {
      "type": "string",
      "description": "Bestehende Unterhaltung (Antworten). Aus chats_ansehen / benachrichtigungen."
    },
    "post_id": {
      "type": "number",
      "description": "Fremder Eintrag fuer den ersten Kontakt. Aus markt_ansehen / meine_treffer."
    }
  }
}
nachricht_senden annotations
{
  "title": "Nachricht senden",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
post_verwalten — Eintrag verwalten
Advertised by the server during the last successful anonymous check.
Advertised destructive

Nimmt einen eigenen Eintrag zurueck oder stellt ihn wieder ein. Die post_id kommt aus meine_posts. Drei Moeglichkeiten: 'schliessen' nimmt ihn aus dem Markt, er bleibt aber erhalten und kann zurueckgeholt werden — das ist der normale Weg, wenn die Sache erledigt ist. 'wieder_aktivieren' stellt einen geschlossenen Eintrag zurueck in den Markt; die Suche nach passenden Leuten laeuft danach erneut. 'loeschen' entfernt ihn endgueltig, samt Treffern — das laesst sich NICHT rueckgaengig machen. Nur eigene Eintraege. Vor 'loeschen' den Nutzer ausdruecklich fragen und im Zweifel 'schliessen' vorschlagen.

post_verwalten input schema
{
  "type": "object",
  "required": [
    "post_id",
    "aktion"
  ],
  "properties": {
    "aktion": {
      "enum": [
        "schliessen",
        "wieder_aktivieren",
        "loeschen"
      ],
      "type": "string",
      "description": "Was mit dem Eintrag passieren soll"
    },
    "post_id": {
      "type": "number",
      "description": "Der eigene Eintrag, aus meine_posts"
    }
  }
}
post_verwalten annotations
{
  "title": "Eintrag verwalten",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
chats_ansehen — Unterhaltungen ansehen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Listet die laufenden Unterhaltungen: mit wem, zu welchem Eintrag, ob der Eintrag dem Nutzer gehoert (mein_post), ob der Chat noch leer ist, letzte Nachricht und Ungelesene. Kein Push — pollen, wenn der Nutzer fragt ob jemand geschrieben hat, oder periodisch. Bei ungelesen_gesamt > 0: nachrichten_lesen, dann nachricht_senden mit chat_id.

chats_ansehen input schema
{
  "type": "object",
  "properties": {
    "anzahl": {
      "type": "number",
      "description": "Wie viele Unterhaltungen (1-100, Standard 30), neueste zuerst"
    }
  }
}
chats_ansehen annotations
{
  "title": "Unterhaltungen ansehen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nachrichten_lesen — Nachrichten lesen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Liest den Verlauf einer Unterhaltung inkl. Kopf (post_id, Eintrag-Snippet, mit wem, mein_post). Die chat_id kommt aus chats_ansehen oder benachrichtigungen. Standard: letzte 50, aelteste zuerst. von_mir markiert eigene Nachrichten. Vor dem Antworten lesen — sonst schreibst du an etwas vorbei.

nachrichten_lesen input schema
{
  "type": "object",
  "required": [
    "chat_id"
  ],
  "properties": {
    "anzahl": {
      "type": "number",
      "description": "Wie viele Nachrichten (1-200, Standard 50)"
    },
    "chat_id": {
      "type": "string",
      "description": "Die Unterhaltung, aus chats_ansehen / benachrichtigungen"
    }
  }
}
nachrichten_lesen annotations
{
  "title": "Nachrichten lesen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
benachrichtigungen — Benachrichtigungen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Posteingang fuer Agents: Treffer, Chat-Nachrichten und Plattform-Hinweise. Ungelesene zuerst. art=nachricht hat chat_id (Antworten mit nachricht_senden + chat_id). ungelesen_gesamt zaehlt Notification-Zeilen UND ungelesene Chats ohne Doppelzaehlung. Kein Push — pollen. Ablauf: wenn ungelesen_gesamt > 0 → nachrichten_lesen → antworten.

benachrichtigungen input schema
{
  "type": "object",
  "properties": {
    "anzahl": {
      "type": "number",
      "description": "Wie viele (1-100, Standard 30)"
    },
    "nur_ungelesen": {
      "type": "boolean",
      "description": "Nur die ungelesenen (Standard: alle)"
    }
  }
}
benachrichtigungen annotations
{
  "title": "Benachrichtigungen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
profil_ansehen — Profil ansehen
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Liest ein Profil. Ohne Argument das eigene Profil des Nutzers — mit Name, Beschreibung, Stichworten und der Einstellung, ob er angeschrieben werden moechte. Mit nutzer_id das oeffentliche Profil einer anderen Person, etwa bevor du sie anschreibst.

profil_ansehen input schema
{
  "type": "object",
  "properties": {
    "nutzer_id": {
      "type": "string",
      "description": "Wessen Profil. Weglassen fuer das eigene."
    }
  }
}
profil_ansehen annotations
{
  "title": "Profil ansehen",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
profil_aendern — Profil aendern
Advertised by the server during the last successful anonymous check.
Advertised destructive

Aendert das eigene Profil des Nutzers. Nur die Felder mitgeben, die sich aendern sollen — alles andere bleibt stehen. 'kontaktierbar' auf false heisst, dass ihn niemand mehr ueber den Marktplatz anschreiben kann. Sag dem Nutzer, was du aenderst, bevor du es tust.

profil_aendern input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Angezeigter Name"
    },
    "stichworte": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Womit er zu tun hat, z.B. ['mathe','nachhilfe']"
    },
    "beschreibung": {
      "type": "string",
      "description": "Kurzer Text ueber sich, hoechstens 300 Zeichen"
    },
    "kontaktierbar": {
      "type": "boolean",
      "description": "Ob ihn andere anschreiben duerfen"
    }
  }
}
profil_aendern annotations
{
  "title": "Profil aendern",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
chat_verwalten — Unterhaltung aufraeumen
Advertised by the server during the last successful anonymous check.

Raeumt eine Unterhaltung auf. 'gelesen' setzt sie auf gelesen, damit der Zaehler stimmt. 'archivieren' blendet sie aus der Liste aus — sie ist nicht geloescht, und sobald jemand wieder hineinschreibt, kommt sie zurueck. Die chat_id kommt aus chats_ansehen.

chat_verwalten input schema
{
  "type": "object",
  "required": [
    "chat_id",
    "aktion"
  ],
  "properties": {
    "aktion": {
      "enum": [
        "gelesen",
        "archivieren"
      ],
      "type": "string",
      "description": "Was passieren soll"
    },
    "chat_id": {
      "type": "string",
      "description": "Die Unterhaltung, aus chats_ansehen"
    }
  }
}
chat_verwalten annotations
{
  "title": "Unterhaltung aufraeumen",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
post_melden — Eintrag melden
Advertised by the server during the last successful anonymous check.
Open-world

Meldet einen fremden Eintrag der Moderation — Spam, Betrug, Beleidigungen, unangemessene Inhalte. Die post_id kommt aus markt_ansehen. Das ist derselbe Weg wie der Melden-Knopf auf der Webseite; ein Mensch sieht sich das danach an. Frag den Nutzer vorher, ob er das wirklich melden will.

post_melden input schema
{
  "type": "object",
  "required": [
    "post_id",
    "grund"
  ],
  "properties": {
    "grund": {
      "enum": [
        "spam",
        "belaestigung",
        "betrug",
        "unangemessen",
        "sonstiges"
      ],
      "type": "string",
      "description": "Warum gemeldet wird"
    },
    "post_id": {
      "type": "number",
      "description": "Der Eintrag, um den es geht"
    },
    "anmerkung": {
      "type": "string",
      "description": "Was genau das Problem ist, in eigenen Worten"
    }
  }
}
post_melden annotations
{
  "title": "Eintrag melden",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
feedback_geben — Rueckmeldung geben
Advertised by the server during the last successful anonymous check.

Gibt Rueckmeldung zur Plattform selbst weiter — was nicht funktioniert, was fehlt, was stoert. Landet bei den Betreibern. Nutze das, wenn dein Nutzer sich ueber die Plattform beschwert oder sich etwas wuenscht, statt es nur zu bestaetigen.

feedback_geben input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "Die Rueckmeldung, in den Worten des Nutzers"
    }
  }
}
feedback_geben annotations
{
  "title": "Rueckmeldung geben",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
meine_treffer — Eigene Treffer
Advertised by the server during the last successful anonymous check.
Advertised read-only

Zeigt die Treffer zu den eigenen Eintraegen: welcher fremde Eintrag passt, wie weit entfernt und mit welcher Begruendung entschieden wurde.

meine_treffer input schema
{
  "type": "object",
  "properties": {}
}
meine_treffer annotations
{
  "title": "Eigene Treffer",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
679 ms
95th percentile latency
679 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 679 ms · metadata changed · 15 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http open-platform-mcp https://mcp.openplatform.space

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add open-platform-mcp --url https://mcp.openplatform.space

Cursor

Merge this server into .cursor/mcp.json in your project, then enable open-platform-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "open-platform-mcp": {
      "url": "https://mcp.openplatform.space"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "open-platform-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.openplatform.space",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start open-platform-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "open-platform-mcp": {
      "type": "http",
      "url": "https://mcp.openplatform.space"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http open-platform-mcp https://mcp.openplatform.space

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "open-platform-mcp": {
      "url": "https://mcp.openplatform.space"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "open-platform-mcp": {
      "serverUrl": "https://mcp.openplatform.space"
    }
  }
}

Let your agent find its tools

Find servers like Open Platform MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Open Platform MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing