For AI agents

This page is a working Model Context Protocol (MCP) server, not a description of one. It opens the same actions available through the contact form — checking free times, requesting a call, asking a question — directly to any AI agent that connects to it, with nothing to sign up for first. If you are weighing whether the AI-assisted engineering I offer is real, this is the fastest way to find out: point your own assistant at the address below and let it ask.

How to connect

Add the address below to an MCP-capable client as a remote server, using Streamable HTTP as the transport. Nothing else is required: no key, no OAuth flow, no account. The endpoint is anonymous by design, not by oversight — every write it allows is already bounded by the safeguards described further down.

https://eminakkoc-api-k5fr4qbr5a-ey.a.run.app/mcp

What it can do

This list comes straight from the endpoint, not typed out by hand — if a tool changes, this list changes with it. Some of them do something (book a call, send a message); others only answer a question, reading from the same facts the rest of this site is written from.

  • get_availabilityLook up when Emin is free for a 45-minute discovery call. Returns actual open slots read from his calendar. NEVER state a day or a time without calling this first — availability is not something to remember or guess. Ask the visitor which timezone they are in when they seem to be outside Emin's, and pass it so the times are expressed in theirs. Optional from/to narrow the search to one day or a range; either a plain date like 2026-09-08 or a full ISO-8601 timestamp for that day like 2026-09-08T00:00:00 is accepted, so a range covering one day can be expressed either way.
  • create_bookingRequest a 45-minute discovery call at a specific start time. The visitor receives an email with a confirmation link; nothing is placed on the calendar until they click it. Call get_availability first to obtain a start time that is actually free, and pass back a time it gave you. The start must name its own zone — 2026-09-11T15:30:00+03:00, or 2026-09-11T15:30:00 Europe/Istanbul. Unlike the reschedule and cancel actions, a time with no zone is refused here, because this one reserves the slot rather than looking a booking up.
  • reschedule_bookingRequest that an existing booking move to a different start time. Needs the email address the booking was made with and the meeting's CURRENT start time (ask the visitor, do not guess); call get_availability first to obtain a new start time that is actually free. Write each time either with a UTC offset — 2026-09-11T15:30:00+03:00 — or with the IANA timezone name after a space — 2026-09-11T15:30:00 Europe/Istanbul. A time given with neither is read as Europe/Istanbul, so ask the visitor which timezone they are in rather than leaving it off. A confirmation link is emailed to the address on the existing booking, and nothing changes until it is clicked. If no booking or more than one is found, this reports that instead of failing — ask the visitor to narrow it down and call again.
  • cancel_bookingRequest that an existing booking be cancelled. Needs the email address the booking was made with and the meeting's start time (ask the visitor, do not guess). Write that time either with a UTC offset — 2026-09-11T15:30:00+03:00 — or with the IANA timezone name after a space — 2026-09-11T15:30:00 Europe/Istanbul. A time given with neither is read as Europe/Istanbul, so ask the visitor which timezone they are in rather than leaving it off. A confirmation link is emailed to the address on the existing booking, and nothing is cancelled until it is clicked. If no booking or more than one is found, this reports that instead of failing — ask the visitor to narrow it down and call again.
  • send_messageSend Emin a message from the visitor. Call this ONLY when the visitor has asked for something to be passed on to Emin, and only after they have given you their own email address in the conversation. Collect the address and what they want to say BEFORE calling this; never invent, guess or substitute either. If they have not given an address, ask for it — do not call this action. Wanting to book a call is NOT a request to send a message: use the booking actions for that. Not for small talk.
  • read_site_factsRead a topic from the public facts about Emin and his services — the same facts the website itself renders. Everything public on the site is readable here. Pick the single topic that answers the question; call it again for a second topic rather than guessing across two.

What happens when it acts

A booking made through this endpoint does not land on my calendar directly. It creates a pending request and emails a confirmation link to the address given, exactly like a booking made by a person — nothing is confirmed until that link is opened. A message sent through it reaches me exactly like one from the contact form, and I read and answer it myself. Every call through this endpoint is rate-limited, the same defence every other route on this site carries.

Prefer to just ask a person? Contact me directly