FORGEBY Start free
API documentation · MCP

Kvasir over MCP.

One endpoint at /api/mcp. Seventeen reads run on your workspace’s accounts. Fourteen writes return an approval link and do not run. Nothing is sent. This page is the documentation the server itself points at when it answers you.

endpoint MCP Streamable HTTP · JSON-RPC 2.0 over POST
https://forgeby.com/api/mcp
Protocol version 2025-03-26. Machine-readable server card at /.well-known/mcp/server-card.json, written by hand and last checked against the server’s own initialize response on 2026-09-22.
Authentication

A seat. The handshake stays open.

initialize and ping answer without a token, so a client can complete the protocol handshake and read a proper error instead of hitting a dead socket. Every method that returns data needs a seat: an AuthKit JWT or a session bearer on this Forgespace.

what you get without oneJSON-RPC error -32001
{"jsonrpc":"2.0","id":1,"error":{"code":-32001,
  "message":"signed out"}}
Error -32001 means signed out. There is no zone grant on this door. There is no 14-day window. Every seat is free. See pricing.
Tools · seventeen reads, fourteen writes that wait

Seventeen reads. Fourteen writes that wait.

ToolArgumentsReturns
who_to_calldays, limit, industry Who to call today and why, from public signals on your workspace’s accounts. Does not send.
whats_changedcompany_id, domain, name, days What changed at one company already on the shelf, from official public sources. News is no source until a feeder exists.
prep_meetingmatch, days_ahead Prep from the seller’s own calendar and mailbox, read only. Reports zeros. Does not send.
query_corpusname_like, domain, country, limit Look up a company on the measured shelf. count is the page size, never a market total.
account_contactscompany_id, domain, limit People already held on one company. LinkedIn® is the URL we already hold. Does not fetch LinkedIn.
my_networkq, limit, team_account People on the shared graph and your own Connections.csv. With team_account, who on your team knows people at an account you work, as paths only. Does not fetch LinkedIn.
enrich_contactcontact_id, want An approval link. Does not run the lookup. Does not send.
find_peopledomain, titles, mobiles An approval link. Does not run the search. Does not send.
reverse_emailemail An approval link. Does not run the lookup. Does not send.
find_companiesdomain, name An approval link. Does not run the search. Does not send.
due_draftenrollment_id The next due email: address, subject, and body. Does not send.
account_contextcompany_id One sourced picture of a company already on the shelf. Missing parts are named as gaps.
pipelinecompany_id, stage, limit Open engagements this seat can see. Does not name a CRM the workspace has not connected.
intent_watchphrase Sentences already on the record that contain a phrase. Does not send.
can_contactcontact_id, email, channel Whether this seat may contact one person, and why. A missing part is a gap, not permission.
champion_checkcompany_id Contacts whose status or title says they left or moved. A missing status is a gap.
found_revenuedays, limit Leads with a public signal and no follow-up on the desk. Does not send.
accounts_changeddays What changed across the accounts this seat can already see. News is no source until a feeder exists.
kvasir_learned What Kvasir learned this week from decision records.
what_kvasir_learned What Kvasir learned this week. Same as kvasir_learned.
decision_recordpending_id, company_id One decision record for this seat: suggested, changed, decided, happened, learned.
desk_actenrollment_id, note An approval link. Does not mark the step done.
network_campaignname, q, offer An approval link. Does not create the campaign.
rememberfact, action, kind An approval link. Does not keep the sentence.
engagement_updateid, stage, next_action, note An approval link. Writes this desk only after accept. Does not name a CRM.
book_meetingtitle, start, end An approval link. Does not book.
post_slackchannel, text An approval link. Does not post. Teams is not this tool.
take_dueenrollment_id, to, subject, text An approval link. Does not send the due email.
set_never_listforbidden_senders, discount_floor An approval link. Does not keep the never-list.
send_mailto, subject, text An approval link. Does not send.
schedulewhat, when, id An approval link. A reminder on the desk, not a booking.

Reads: who_to_call, whats_changed, prep_meeting, query_corpus, account_contacts, my_network, due_draft, account_context, pipeline, intent_watch, can_contact, champion_check, found_revenue, accounts_changed, kvasir_learned, what_kvasir_learned, decision_record. Writes: desk_act, network_campaign, enrich_contact, find_people, reverse_email, find_companies, remember, engagement_update, book_meeting, post_slack, take_due, set_never_list, send_mail, and schedule return an approval link and do not run. Resources and prompts list empty. The kernel is the same one the desk uses.

What this surface will never do

The limits are in the protocol, not the prose.

Nothing is sent

The seller sends, files, and sits in the room. This surface never sends a customer a message.

A write returns an approval link

Every write files a pending row and returns a link. It does not run. It does not send. The seller accepts or declines the card on the desk. Partner Central submit is not a tool. Teams does not post from here.

LinkedIn is the URL we already hold

We do not fetch LinkedIn.com. People come from the book, the mailbox, and a Connections.csv the seller uploaded.

News has no feeder

whats_changed reads official public signals already on file. News says no source until a feeder exists.

The same statements sit in initialize: Kvasir is a sales coworker. These tools read your workspace’s own accounts. A write returns an approval link and does not run. Nothing is sent.

Connect it

Claude today. ChatGPT, Codex and Cursor next.

mcp configstreamable http
{
  "mcpServers": {
    "forgeby": {
      "type": "http",
      "url": "https://forgeby.com/api/mcp"
    }
  }
}

On claude.ai and Claude Desktop: open Customize, then Connectors. Add a custom connector. The URL is https://forgeby.com/api/mcp . Sign in with the Forgeby seat. Team and Enterprise: an Owner adds it under Organization settings, then each seat clicks Connect. Claude Code: claude mcp add --transport http forgeby https://forgeby.com/api/mcp. Claude is tested end to end. ChatGPT, Codex and Cursor take the same URL and are testing before launch. A session bearer still works for a client that cannot finish that sign-in. Also here for machines: /openapi.json · /llms.txt · /llms-full.txt · this page as Markdown. The AI at the front of this product is Kvasir, openly an AI, with a signed identity passport.