get_user_context
Get the user's plan, stores, workspace folders, permissions, credits and the skills catalog.
readSellerSheet
Call it first in every session; every other tool takes one of its store_refs.
Call it
In an AI client (MCP)
{
"name": "get_user_context",
"arguments": {}
}From code (Tool API)
curl -X POST https://api.sellersheetai.com/api/v1/tools/get_user_context \
-H "Authorization: Bearer $SELLERSHEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Early access — the Tool API is open on request, contact us.
Arguments
| Name | Type | Description |
|---|---|---|
installed_skills_version | string | the `version:` of any installed SellerSheet SKILL.md (one bundle version for all), so data.skills_update is computed here. Omit if you cannot read local files.Default: "" |
Result
Every tool answers {notification, data, human_action}; data carries:
data.canUseMcp— false when no tool can run — relay data.message, stop.mcp_server_version— changed mid-session → ask the user to reconnect.data.workspace— {org_id, name, slug, role, is_personal, reach} — the key's homedata.workspace.org— pays calls naming no store; the limits and credits below are its. reach 'all': every organization below (a store's calls bill its own); 'org': this one only.data.organizations— [{org_id, name, role, plan, credits_balance, note}] — all of the user's; relay note.data.ownedStoreInfo— stores the user manages; each store carries organization.data.ownedStoreInfo.max_stores— the plan's store cap.data.ownedStoreInfo.number_of_stores_used— stores counted against it.data.ownedStoreInfo.owned_stores— [{store_name, country_code, region_code, seller_id, store_id, store_refs, enabled_marketplaces, available_marketplaces, sync_status, paused_reason, store_auth_time, ads_auth_time, profile_ids, amc}]. amc: AMC per Ads country, {CC: {status: on|creating|failed, instance_id}}; none = off.data.ownedStoreInfo.data.ownedStoreInfo.owned_stores.store_refs— one `<store>-<CC>` per marketplace, passed verbatim; a CC in available_marketplaces is not activated and is refused — ask which enabled one to target. sync_status 'paused': the plan no longer covers the store — reports frozen, every call refused; relay paused_reason, do not retry.data.sharedStoreInfo.shared_stores— granted stores (no sync_status, marketplaces)data.noonAccountInfo.accounts— [{account_name, noon_account_id, project_code, region_code, marketplaces, store_refs, status, auth_error_code}] — noon tools take one of these store_refs (`<account>-<CC>`) verbatim.data.subscriptionInfo— {plan, max_stores, max_orders, effective_plan, ops, limits, orders}. orders.status 'approaching' or 'over' → tell the user to upgrade at https://sellersheetai.com/billing (refused only when the order gate is on: order_quota_exceeded). limits.concurrent_calls: the in-flight ceiling (null = none; above it concurrency_limit_exceeded + retry_after — run calls in turn).data.subscriptionInfo.ops.mcp_ops_used / mcp_ops_limit— the Free monthly pool.data.workspace_config— Drive ids — userSettingByFolder {sellerSheetFolderId, storeReportsFolderId, adsReportsFolderId, imagesFolderId, listingsFolderId, shipmentsFolderId, invoicesFolderId}; userSettingBySpreadsheet {salesSpreadsheetId, catalogSpreadsheetId, fbaSpreadsheetId, aplusSpreadsheetId, storeReportsSpreadsheetId, adsReportsSpreadsheetId, fbaInventorySpreadsheetId}; sa_folder_access {folder_id, ok, checked_at, error} (ok: the AI can write there).data.mcpAccessInfo— {mcp_mode 'open' | 'restricted', mcp_permissions: [{store_id, store_name, marketplace, sp_access, ads_access}]} — effective access ('none' | 'read' | 'write'); a member gets the lower of key and grant.data.credits— {balance, rates, route, routes, topup_url}. Check balance before a paid tool (empty → 402; credits_quote prices a call). rates is the Official card — this workspace pays routes[key = route].rates; quote those or credits_quote, never compute. Only its owner or an admin switches the route (Billing & Credits).data.skills_catalog— the public skills and their install commands.data.skills_update— {installed, latest, update_available, message, commands} — when update_available is true relay message and ask before running the agent's update command (never auto-update); false → say nothing; null → you passed no version.