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.
https://forgeby.com/api/mcp
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.
{"jsonrpc":"2.0","id":1,"error":{"code":-32001,
"message":"signed out"}}
-32001 means signed out. There is no zone
grant on this door. There is no 14-day window. Every seat is free. See pricing.Seventeen reads. Fourteen writes that wait.
| Tool | Arguments | Returns |
|---|---|---|
| who_to_call | days, limit, industry |
Who to call today and why, from public signals on your workspace’s accounts. Does not send. |
| whats_changed | company_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_meeting | match, days_ahead |
Prep from the seller’s own calendar and mailbox, read only. Reports zeros. Does not send. |
| query_corpus | name_like, domain, country, limit |
Look up a company on the measured shelf. count is the page size, never a market total. |
| account_contacts | company_id, domain, limit |
People already held on one company. LinkedIn® is the URL we already hold. Does not fetch LinkedIn. |
| my_network | q, 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_contact | contact_id, want |
An approval link. Does not run the lookup. Does not send. |
| find_people | domain, titles, mobiles |
An approval link. Does not run the search. Does not send. |
| reverse_email | email |
An approval link. Does not run the lookup. Does not send. |
| find_companies | domain, name |
An approval link. Does not run the search. Does not send. |
| due_draft | enrollment_id |
The next due email: address, subject, and body. Does not send. |
| account_context | company_id |
One sourced picture of a company already on the shelf. Missing parts are named as gaps. |
| pipeline | company_id, stage, limit |
Open engagements this seat can see. Does not name a CRM the workspace has not connected. |
| intent_watch | phrase |
Sentences already on the record that contain a phrase. Does not send. |
| can_contact | contact_id, email, channel |
Whether this seat may contact one person, and why. A missing part is a gap, not permission. |
| champion_check | company_id |
Contacts whose status or title says they left or moved. A missing status is a gap. |
| found_revenue | days, limit |
Leads with a public signal and no follow-up on the desk. Does not send. |
| accounts_changed | days |
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_record | pending_id, company_id |
One decision record for this seat: suggested, changed, decided, happened, learned. |
| desk_act | enrollment_id, note |
An approval link. Does not mark the step done. |
| network_campaign | name, q, offer |
An approval link. Does not create the campaign. |
| remember | fact, action, kind |
An approval link. Does not keep the sentence. |
| engagement_update | id, stage, next_action, note |
An approval link. Writes this desk only after accept. Does not name a CRM. |
| book_meeting | title, start, end |
An approval link. Does not book. |
| post_slack | channel, text |
An approval link. Does not post. Teams is not this tool. |
| take_due | enrollment_id, to, subject, text |
An approval link. Does not send the due email. |
| set_never_list | forbidden_senders, discount_floor |
An approval link. Does not keep the never-list. |
| send_mail | to, subject, text |
An approval link. Does not send. |
| schedule | what, 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.
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.
Claude today. ChatGPT, Codex and Cursor next.
{
"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.