Client proposal through an agent
An agent with MCP access takes an estimate to a commercial proposal: it publishes a version, gives the client a link and checks whether the client has answered. How to issue a token and connect an agent is described in MCP: connect an agent. Every call counts toward the MCP limit: 100 calls per month per workspace.
| Step | Tool | Token |
|---|---|---|
| Publish a version | publish_estimate_version | Read and draft estimates |
| Create a client link | create_share_link | Read and draft estimates |
| Get the approval status | get_approval_status | Any, "Read only" is enough |
What you need
Section titled “What you need”- A token with write access for publishing and the link.
- A project role that can edit estimates. An observer gets a
forbiddenerror. - An estimate from the token's workspace. Any works: one created by the agent or one built in the app.
Publish a version
Section titled “Publish a version”Ask, for example: "Publish the Website redesign estimate and give the client a link". The agent publishes the current draft as the next version and gets the version number and the publish time. The version appears in the app just like a manual publish and does not change afterwards: Estimate versions & compare.
- A repeat with the same idempotency key returns the same version.
- Without a key every call creates a new version.
- If the MCP limit is used up, the agent gets a
quota_exceededreply with the reset date.
Create a client link
Section titled “Create a client link”The agent creates a link to a published version. By default it is open: anyone who has the address sees the page. You can set a lifetime for the link, without it the link never expires. What the client sees is described in What the client sees. The client downloads PDF and XLSX files on the page itself, the agent does not hand them out.
The address of an open link is shown once, at creation. The agent gives it to you, and a lost address cannot be restored: revoke the link in the app and create a new one.
Link with a password
Section titled “Link with a password”If the agent is given a password, the link is created protected: the client enters the password before the report opens. The access mode is set at creation and does not change afterwards.
- The password is at least 8 characters. A shorter one is rejected with an
invalid_paramsreply and no link is created. - The password is not returned in the reply and is not written to the call log. The agent or you pass it to the client, preferably in a separate message.
- The agent always gets the address of a password link in the reply, including on a repeated request.
- The agent can set a label for the link, only you see it.
Repeated link request
Section titled “Repeated link request”A version has one active link. If it already exists, the agent creates and revokes nothing: share_already_active is true in the reply, and the password and the approver from the new request are not applied.
- For an open link the address is not returned, it was shown at creation.
- For a password link the address is returned, the password is not.
- The agent does not revoke a link already given to a client. To replace it, revoke the link in the app: Share an estimate with a client by link.
Approver
Section titled “Approver”The client can approve an estimate only when an approver is assigned. The agent can pass one along with the link: the name and email of the person who approves. The approver is assigned only to a new link, and recipient_set is true in the reply.
If the assignment failed, the link is still created, recipient_set is false, and the hint says to assign the approver in the app: Client approval of an estimate. The name and email are not returned in the reply and are not written to the call log.
Approval status
Section titled “Approval status”The agent passes the link id from the creation reply. For links created in the app, the id is on the version in list_estimate_versions. The reply contains:
- the approval state;
- when the client answered;
- how many times the link was opened and when last.
The approver's name, email and company, and the text of the client's answer are not given to the agent. The states match the statuses in the link editor:
| State in the reply | Status in the app |
|---|---|
approval_disabled | Recipient not set |
awaiting_response | Awaiting response |
approved | Approved |
changes_requested | Changes requested |
expired_offer | Offer expired |
expired_link | Link expired |
revoked | Link revoked |
superseded | A newer version exists |
For a password link the open counter can jump by 2 at once: the page and the report after the password are counted separately.
What the agent does not do
Section titled “What the agent does not do”- It does not revoke the link or change its password and lifetime.
- It does not change or remove the approver.
- It does not send the client a confirmation code or reminders.
You revoke the link and change its password, lifetime and approver in the app.