Skip to content

sign_proposal

For issuers: start the signing flow for a multisig proposal. The tool calls the Aktionariat backend to lock in the proposal’s nonce and gas price, then returns a deep link (aktionariat://) plus a pre-rendered SVG QR code. The user completes the signature in the Aktionariat mobile app — this tool itself does not sign anything.

Requires sign-in and issuer access to the proposal’s company. Call list_proposals first to get a valid proposal id.

FieldTypeRequiredDescription
idintegerYesProposal id, obtained from list_proposals.
FieldTypeDescription
proposalIdintegerEcho of the input id.
deepLinkstringaktionariat://proposal/<uid>/<nonce>/<gasPrice> — opens the Aktionariat app pre-loaded with the proposal.
qrDatastringSame string as deepLink, named separately so a QR widget has a semantically clear field.
qrSvgstringA self-contained <svg>…</svg> document encoding deepLink. Render it inline.

Always do both of the following when this tool returns:

  1. Render qrSvg inline in your response. This is the format that renders best in Claude’s UI and avoids client-by-client guessing.
  2. Show deepLink as a clickable link, in case the user is already on a mobile device.
  • “Start signing proposal 123.”
  • “Sign the most recent pending proposal on my company.”
  • “Give me the QR code to sign proposal 42.”

This tool only starts the signing session. The user must complete the signature in the Aktionariat mobile app — by scanning the QR or opening the deep link on their phone.

After the user confirms they have signed, verify by calling list_proposals:

  • For a single-signer proposal that should now be executed on-chain, expect state: 'signed'.
  • For a multi-signer proposal that still needs more signatures, expect state: 'pending' with the user added to signers and signedByMe: true.
  • The tool does not sign anything itself. Treat it as the bridge between the chat and the mobile app’s signing UI.
  • A 403 means the signed-in user does not have issuer access to the proposal’s company. Re-run list_managed_companies and list_proposals to confirm the proposal belongs to a company the user can manage.
  • A 404 means the proposal does not exist. Re-run list_proposals for the relevant company.
  • A 401 means the session expired. Call sign_in and retry.