malipetek

Model Context Protocol

Point an agent at this site.

Everything here is reachable over one endpoint: https://malipetek.dev/mcp — streamable HTTP, protocol 2025-06-18. The knowledgebase tools are open to anyone. The control-plane tools belong to the owner and are gated twice (our admin session, then the platform's own sign-in).

Add it as a ChatGPT app

ChatGPT now builds apps on MCP connectors rather than Custom GPT Actions. In ChatGPT: Settings → Connectors → Advanced → Developer mode, then add a connector with:

Name:    malipetek.dev
URL:     https://malipetek.dev/mcp
Auth:    No authentication (public tools only)

For the owner-only tools, use Authorization: Bearer <portal-session> — the same token the client portal keeps in localStorage after sign-in.

Claude, Cursor, and other MCP clients take the same URL; the transport is standard.

Knowledgebase tools

  • search_knowledge public Full-text search over every entry. Prefix matching, so `migra` finds `migration`.
  • get_knowledge public One entry in full — problem and solution markdown — by id or slug.
  • list_knowledge public Newest entries first, without bodies.
  • create_knowledge ack_ key Record a problem/solution pair from a session.
  • update_knowledge ack_ key Patch an entry this key authored.

Mint an ack_ key at /kb/new (owner only) and pass it as Authorization: Bearer ack_…. Keys are stored hashed and can be revoked there.

GPTflare control-plane tools

The GPTflare control plane creates and edits Astro + Keystatic sites: draft → provision → preview → approve → production. Those operations used to be reachable only from a Custom GPT through its Actions schema; they are now MCP tools, with the platform key held as a Worker secret instead of living in a GPT configuration.

  • platform_status owner Control-plane reachability and platform-key health.
  • platform_start_auth owner Email the owner a magic link; returns the authRequestId every later call needs.
  • platform_auth_status owner Poll the sign-in until it is verified.
  • platform_list_sites owner Every site with status, urls and worker names.
  • platform_site_state / _status / _preview_status owner Git state, deploy status, preview build status.
  • platform_list_files / platform_read_file owner Inspect a site repo before editing it.
  • platform_edit_preview owner Write files to the preview branch — preview-first, never straight to production.
  • platform_approve_preview owner Promote a reviewed preview. The human-approval gate.
  • platform_create_site / platform_provision_site owner Draft a site from a brief, then turn it into a repo and a build project.
  • platform_operation_status owner Poll long-running operations with their user-safe envelope.

Control-plane calls need a per-conversation sign-in: run platform_start_auth, have the owner open the emailed link, then pass the returned authRequestId to every later call.

Resources and prompts

Tools are for calling; resources are for attaching. Every entry is also a resource at kb://entry/<slug> (text/markdown), so a client can pin the relevant entry into context instead of asking the model to fetch it. resources/list pages at 50 with a cursor, and kb://entry/{slug} is advertised as a template.

One prompt, record_learning, takes a topic and an outcome and returns the instructions for turning the session that just ended into an entry — search first so it updates rather than duplicates, and pick the status honestly.

Every tool carries MCP annotations, so a connector can tell reading from writing before it asks: readOnlyHint is true for search, listing and every control-plane read, and destructiveHint is set on approving a preview or resetting one.

No MCP? Use the REST API.

curl https://malipetek.dev/kb/entries?q=fts5
curl https://malipetek.dev/kb/<slug>.json
curl -X POST https://malipetek-intercom.malipetek.workers.dev/kb/entries -H "authorization: Bearer ack_…" \
  -H 'content-type: application/json' \
  -d '{"title":"…","problem":"…","solution":"…","status":"solved","author_agent":"…"}'

/kb is the same data in a browser. /llms.txt is the machine-readable summary of the whole site.