Bidsketch for AI agents

Bidsketch is proposal software for creating and tracking client proposals, used by freelancers and agencies to manage clients, proposal content, fees, and templates. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

Finance and accountingAPI keyMCP + RESTbidsketch.com
AUDIT LOG · BIDSKETCHPOLICY: acme-support
09:41:07 · claude · u_8f2read
bidsketch.get_fee
Get Fee✓ allowed · 212ms
09:41:08 · claude · u_8f2read
bidsketch.get_fees
Get Fees✓ allowed · 164ms
09:41:09 · claude · u_8f2write
bidsketch.create_client
Create Client✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
bidsketch.delete_fee
Delete Fee✕ blocked · policy: deny
EVERY BIDSKETCH CALL, ON THE RECORD
01 · USE CASES

What agents do in Bidsketch.

01

Check a proposal's stats

Get a proposal's stats to see whether a client has viewed it since it was sent.

02

Build a proposal from a template

Create a proposal for a client using a saved template and add fee line items to it.

03

Delete an old proposal carefully

Delete a draft proposal only after confirming the client never received it, since a sent proposal shouldn't be removed.

02 · ACTIONS

38 Bidsketch actions, graded by risk.

Every Bidsketch action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

18

Look things up. Allowed by default.

  • bidsketch.get_fee
    Get Fee
  • bidsketch.get_fees
    Get Fees
  • bidsketch.get_client
    Get Client
  • bidsketch.get_clients
    Get Clients
  • bidsketch.get_section
    Get Section
  • bidsketch.get_proposal
    Get Proposal
  • bidsketch.get_sections
    Get Sections
  • bidsketch.get_proposals
    Get Proposals
  • bidsketch.get_templates
    Get Templates
  • bidsketch.get_proposal_fee
    Get Proposal Fee
  • bidsketch.get_proposal_fees
    Get Proposal Fees
  • bidsketch.get_proposal_stats
    Get Proposal Stats
  • bidsketch.get_client_proposals
    Get Client Proposals
  • bidsketch.get_proposal_content
    Get Proposal Content
  • bidsketch.get_proposal_section
    Get Proposal Section
  • bidsketch.get_proposal_sections
    Get Proposal Sections
+ 2 MORE

write

13

Create and change things. Allow, or ask the user first.

  • bidsketch.post_fee
    Create Fee
  • bidsketch.post_section
    Create Section
  • bidsketch.post_webhook
    Create Webhook
  • bidsketch.create_client
    Create Client
  • bidsketch.create_proposal
    Create Proposal
  • bidsketch.post_proposal_fee
    Create Proposal Fee
  • bidsketch.post_proposal_section
    Create Proposal Section
  • bidsketch.put_fee
    Update Fee
  • bidsketch.put_client
    Update Client
  • bidsketch.put_section
    Update Section
  • bidsketch.put_proposal
    Update Proposal
  • bidsketch.put_proposal_fee
    Update Proposal Fee
  • bidsketch.put_proposal_section
    Update Proposal Section

destructive

7

Delete, cancel or archive. Ask first, or deny outright.

  • bidsketch.delete_fee
    Delete Fee
  • bidsketch.delete_client
    Delete Client
  • bidsketch.delete_section
    Delete Section
  • bidsketch.delete_webhook
    Delete Webhook
  • bidsketch.delete_proposal
    Delete Proposal
  • bidsketch.delete_proposal_fee
    Delete Proposal Fee
  • bidsketch.delete_proposal_section
    Delete Proposal Section
03 · HOW IT WORKS

Bidsketch in three steps.

  1. 01Your users connect BidsketchThey add their Bidsketch api key on Arc0 Connect, under your brand. It goes straight into the vault.
  2. 02You set the rulesReads run, writes like “create Client” can wait for the user, and “delete Fee” can be denied outright.
  3. 03Any agent can actYour agent calls Bidsketch through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('bidsketch', {
  read: 'allow',
  write: 'ask',        // create_client
  destructive: 'deny',  // delete_fee
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How Bidsketch connects.

Users add their Bidsketch api key on Arc0 Connect. It is encrypted in the vault, never shown to the model, and each user can rotate or revoke it at any time.

The same Bidsketch connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
API key
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use Bidsketch from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

Bidsketch and Arc0, answered.

Q01

Can I use Bidsketch with Claude, ChatGPT or Cursor?

Yes. Connect Bidsketch to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the Bidsketch actions you allow.

Q02

How do users connect Bidsketch?

Users add their Bidsketch api key on Arc0 Connect. It is encrypted in the vault, never shown to the model, and each user can rotate or revoke it at any time.

Q03

Which Bidsketch actions can my agent take?

38 in total: 18 read, 13 write and 7 destructive, such as “create Client”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in Bidsketch?

Yes. Actions like “delete Fee” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call Bidsketch too?

Yes. The same Bidsketch connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug Bidsketch into your agent.

Your users connect Bidsketch once, under your brand. Your agent gets 38 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan