Spotka speaks MCP.
Add one line to Claude, Cursor, or any app that speaks MCP, and it can find things to do, make events, and answer invitations for you, in your name, with your own account.
https://spotka.co/api/v1/mcp
It speaks MCP over plain HTTP: one POST per message, which is what Claude,
Cursor and Windsurf send. Your key travels in an X-API-Key header.
There is nothing to install and no server to run. Two protocol
versions are supported, 2025-06-18 and 2025-03-26; your
app picks one on its own.
Open Spotka on the web, Android or iPhone and go to Settings → API access → Create a key, or jump straight there:
You get a short key like spk_4KAS22M1JQFQ. It is shown once. If you
lose it, make a new one. It takes one tap, and you can revoke the old one on the
same screen.
A key belongs to one person: yours. Whatever you connect can do only what you can do in the app yourself.
claude mcp add --transport http spotka https://spotka.co/api/v1/mcp \
--header "X-API-Key: spk_XXXXXXXXXXXX"
These keep a small config file listing the MCP servers they use. Add Spotka to it:
{
"mcpServers": {
"spotka": {
"type": "http",
"url": "https://spotka.co/api/v1/mcp",
"headers": { "X-API-Key": "spk_XXXXXXXXXXXX" }
}
}
}
Then restart the app. Spotka's tools show up in its tool list.
Some apps have nowhere to put a header. Put the key in the URL instead. It works exactly the same:
https://spotka.co/api/v1/mcp?key=spk_XXXXXXXXXXXX
Treat that URL like a password, because it now contains one.
| Tool | What it does |
|---|---|
ideas | Things to do in the city, picked for you |
events | Events other members are hosting that suit you |
my_events | Events you host, events you joined, invitations waiting for you |
create_event | Add an event |
update_event | Change an event you host: partial, so anything you leave out stays as it is. Pass publish=true to publish a draft |
invite | Invite people to an event, or make the event and invite in one go |
event | One event in full: lifecycle, held seats vs calendared guests, guest states, seats remaining, allowed actions |
join | Take a seat at someone else's event |
leave | Give up a seat you took |
respond | Accept or decline an invitation, or, as the host, approve a guest's pending time proposal (not interest alone) |
archive | Retire an event you host |
delete_event | Delete an unpublished draft |
inbox | What is waiting: unread conversations and invitations |
conversation | One conversation, without marking it read |
mark_read | Mark a conversation read, on purpose |
send_message | Send a message as you. Needs a key with messaging enabled |
activity_history | What this API changed on your account |
revoke_invite | Take back an invitation you sent |
calendar | What you have coming up, hosted and joined |
profile | Your own profile: public half and private context |
update_profile | Change your own profile; only the fields you name |
notification_settings | Which notifications you get by push and by email, and whether any device is registered to deliver them |
update_notification_settings | Turn notifications on or off, on one rail or both; only the ones you name change |
report_bug | Tell the Spotka team something is broken. Default is no auto-fix. Send autofix=true on a clear bug to send it to a coder. Duplicates fold onto the open report they match; send check_only=true to get that verdict without filing. Pass product_url, app_version, platform, and a screenshot when you have them. Poll report_status; when waiting for a re-test, call verify_bug |
report_feature | Ask for something Spotka does not do yet: same queue, same rule |
report_status | Poll a report this account filed. Omit report to list recent ones. A fleet agent may pass waiting=true to list every report waiting for a re-test |
verify_bug | Submit the retest verdict without the email token. verdict=works, still_broken or unverified. A fleet agent may also verify any waiting report |
capabilities | What your key may do, what each tool changes in the world, and how much budget is left |
If this key belongs to a test account, report_bug and
report_feature file as soon as you observe a problem. Do not wait for a
person to confirm. Those reports show up in the review queue tagged as a test filing.
Default is no auto-fix. Send autofix=true on a clear bug to send it to a
coder. Poll report_status; when waiting for a re-test, call
verify_bug. Do not wait on email.
next Friday at 7pm or
2026-08-22T18:00:00+02:00. If the time cannot be read, or publishing
cannot complete, the tool fails and names the unmet fields rather than leaving a
silent draft.
A few more tools exist for writing test suites and work only with a test
key: actors, seed, reset,
key_list, key_create and key_revoke.
They are described in the
full API guide.
Once it is connected, just ask in ordinary words:
If you would rather not use MCP at all, the same things work with
one curl line. See the
full API guide.
They go out in your name, so it is worth telling your assistant to check with you before it invites anyone.
If you are signed in as a test or bot account, file with
report_bug or report_feature as soon as something
is wrong. Do not wait for a person to confirm. The report is tagged as a
test filing. Default is no auto-fix. Send autofix=true on a
clear bug to send it to a coder. Feature requests still wait for a
person.
A bot cannot click the verification email. Poll
report_status, re-test on production
when waiting_for_retest is true, then call
verify_bug with verdict=works or still_broken.
If you could not run the re-test at all, send
verdict=unverified, which leaves the report waiting instead
of marking a fix wrong. A QA fleet agent may also pass
waiting=true on report_status to pick up reports
another person filed, then verify those after a real check. Do not wait
for the original reporter. Do not read the mailbox.
Same key, same limits as the rest of the API: a per-minute and per-day call
budget, a tighter one for events and invites, and a daily cap on people invited.
What you have left is in the X-RateLimit-Remaining header of every
reply, and X-RateLimit-Bucket names which budget it is counting:
always the one closest to running out, usually the per-minute one.
The numbers, and how long each call takes, are on the full API guide, kept in one place on purpose, so the two pages cannot quietly disagree about them. If you need more, write to support@spotka.co.