Spreadsheet Governance, Collaboration Permissions & External OAuth Auditing
MCP share_workbook In-App Invite, emailSent=false & Replay Audit
Audit External OAuth share_workbook Governance in Arte Sheets: Owner + Active Pro Gate, Ambiguous Recipient/Role Hold, In-App Invitation Disclosure (emailSent=false), Zero Arte AI Credit Usage, and Idempotent Replay Semantics.
Distinguish named in-app share_workbook invitations from outgoing emails and public links!
When team owners audit collaborator invitations across cloud collaboration workbooks—whether directly in the web app or when evaluating the Arte Sheets ChatGPT 0.1.0 external OAuth connector (currently In review / Not published)—clear permission and delivery boundaries prevent miscommunication! Under the sheets:share scope, share_workbook requires BOTH workbook owner permission AND an active Pro subscription (or paid active billing period), plus an explicitly specified recipient email and unambiguous role: viewer, contributor (editor), or suggester (never interpret "share with Alex" as permission to enable an anonymous public link, and clarify any ambiguous role request before invoking the tool!). Crucially, share_workbook creates an in-app Arte Sheets invitation rather than sending an outgoing email—returning the workbook URL alongside emailSent=false so the owner knows to share the link directly if the collaborator is not yet watching in-app notifications!
Build a 5-Rule Collaboration Governance Checklist—Caller_Is_Owner = 1 (B2), Active_Pro_Entitlement = 1 (B3), Explicit_Recipient_And_Role = 1 (B4), Is_OperationId_Replay = 0 (fresh intentional mutation, B5), and Calls_This_Minute = 3 (within the 120 calls/min per-account MCP burst limiter, B6): Share Gate E2 returns "Allowed: Create In-App Invitation"; Delivery Disclosure E3 explicitly reports "In-App Invite Only (emailSent=false)"; Arte AI Inference Credits Consumed E4 equals 0 (ordinary MCP tool calls do not deduct metered monthly Pro Assistant AI credits); and Replay Audit E5 confirms "Fresh Invite Recorded: Share Link Manually"! Remember too that an idempotent operation_id replay (B5 = 1 after an uncertain transport timeout) only confirms the earlier operation was recorded—it does NOT prove an expired or subsequently revoked invitation is currently active!
| MCP share_workbook Governance Check (Owner=1, Pro=1, Explicit=1, Replay=0, Calls=3) | Rule / Formula | Verified Output |
|---|---|---|
| Share Mutation Gate | Owner=1, Pro=1, Explicit=1, Calls<=120 | Allowed: Create In-App Invitation |
| Notification Delivery Mode | In-App Invitation (Never Outgoing Email) | In-App Invite Only (emailSent=false) |
| Arte AI Credits Consumed | Ordinary MCP Tool Execution Cost | 0 Credits (vs Metered In-App AI) |
| Idempotent Replay Status | B5=0 Fresh vs B5=1 Transport Replay | Fresh Invite Recorded (or Verify Active) |
External OAuth share_workbook Permission, Ambiguity & Rate-Limit Gate Formula
Enforce binary 0/1 flags, cap per-account burst calls at <= 120/min, hold ambiguous requests before sharing, require Owner + Active Pro without offering checkout inside the plugin, and never escalate roles!
=LET(is_o, B2, pr_a, B3, ex_r, B4, rp_i, B5, cl_m, B6, IF(OR(AND(is_o <> 0, is_o <> 1), AND(pr_a <> 0, pr_a <> 1), AND(ex_r <> 0, ex_r <> 1), AND(rp_i <> 0, rp_i <> 1), cl_m < 1), "Invalid Share Audit Input", IF(cl_m > 120, "Rate-Limited: 429 Retry-After 60s", IF(ex_r = 0, "Hold: Clarify Recipient and Role First", IF(is_o = 0, "Denied: Owner Role Required", IF(pr_a = 0, "Denied: Active Pro Required (No Plugin Checkout)", "Allowed: Create In-App Invitation"))))))Idempotent Replay (B5 = 1), Ambiguous Role (B4 = 0) & Non-Owner / Free-Tier Denial Checks
Flip Is_OperationId_Replay B5 to 1: E5 warns "Replay Recorded Only: Verify Active Membership"! Set Explicit_Recipient_And_Role B4 = 0: E2 halts with "Hold: Clarify Recipient and Role First". Set Owner B2 = 0 or Pro B3 = 0: E2 cleanly denies without inventing success or offering in-plugin checkout!
=IF(E2 <> "Allowed: Create In-App Invitation", E2, IF(B5 = 1, "Replay Recorded Only: Verify Active Membership", "Fresh Invite Recorded: Share Link Manually"))Try the example
Use the original values or change them to test your understanding.