Quickstart¶
Verify your installation and learn the basic patterns in 5 examples.
Prerequisites
Complete the installation first. Configure the MCP servers for the services you want to use; all 8 are needed for every example below.
1. Verify It Works¶
Check that each service is alive with its simplest tool call.
Drive — Storage Info¶
Tool call:
Expected output:
Gmail — Profile¶
Tool call:
Expected output:
{
"emailAddress": "you@gmail.com",
"messagesTotal": 12453,
"threadsTotal": 3892,
"historyId": "9876543"
}
Calendar — Upcoming Events¶
Tool call:
Expected output:
Found 5 events
📅 Team Standup — 2026-06-14T09:00-09:15
📅 Q2 Planning — 2026-06-15T14:00-15:00
📅 1:1 with Sarah — 2026-06-16T11:00-11:30
📅 Design Review — 2026-06-17T13:00-14:00
📅 All Hands — 2026-06-18T10:00-11:00
2. Create a Formatted Spreadsheet¶
Create a spreadsheet, add headers, populate data, apply formatting, and insert a chart — all in one batch.
Tool calls (sequential):
Step 1 — Create the spreadsheet:
Returns the spreadsheetId. The examples below use <spreadsheet-id> as a placeholder.
Step 2 — Use batch to set up everything at once:
{
"tool": "sheets_batch",
"args": {
"spreadsheetId": "<spreadsheet-id>",
"sheetName": "Sheet1",
"operations": [
{
"action": "rangeWrite",
"params": {
"range": "A1:C1",
"values": [["Category", "Budget", "Actual"]]
}
},
{
"action": "rangeWrite",
"params": {
"range": "A2:C4",
"values": [
["Engineering", 250000, 238500],
["Marketing", 120000, 118000],
["Operations", 80000, 82000]
]
}
},
{
"action": "rangeFormat",
"params": {
"range": "A1:C1",
"bold": true,
"background": "#1a73e8",
"fontColor": "#ffffff",
"horizontalAlignment": "center"
}
},
{
"action": "rangeFormat",
"params": {
"range": "B2:C4",
"numberFormat": "$#,##0"
}
},
{
"action": "formulaSet",
"params": {
"range": "A5",
"formula": "=\"Total\""
}
},
{
"action": "formulaSet",
"params": {
"range": "B5",
"formula": "=SUM(B2:B4)"
}
},
{
"action": "formulaSet",
"params": {
"range": "C5",
"formula": "=SUM(C2:C4)"
}
},
{
"action": "chartCreate",
"params": {
"range": "A1:C4",
"chartType": "COLUMN",
"title": "Q2 Budget vs Actual",
"yAxisTitle": "USD",
"position": "E1",
"stacked": false
}
}
]
}
}
Expected output:
{
"success": true,
"results": [
{ "action": "rangeWrite", "success": true },
{ "action": "rangeWrite", "success": true },
{ "action": "rangeFormat", "success": true },
{ "action": "rangeFormat", "success": true },
{ "action": "formulaSet", "success": true },
{ "action": "formulaSet", "success": true },
{ "action": "formulaSet", "success": true },
{ "action": "chartCreate", "success": true }
]
}
The spreadsheet now has formatted headers, data with currency formatting, SUM formulas, and a column chart.
3. Draft an Email (Never Sent)¶
Search for a thread and draft a reply — nothing is sent without explicit approval.
Step 1 — Find the thread:
Expected output:
Found 3 messages
📧 Q2 Planning Kickoff — from: alex@company.com — 2026-06-10
📧 Re: Q2 Planning Kickoff — from: you@gmail.com — 2026-06-11
📧 Agenda for Q2 Planning — from: alex@company.com — 2026-06-12
Step 2 — Draft a reply to the latest message (use the message ID from step 1):
{
"tool": "gmail_create_draft_reply",
"args": {
"messageId": "18a9b3c4d5e6f7g8",
"body": "Thanks Alex, the agenda looks great. I'll have the spreadsheet ready by Monday. One thing to add — can we allocate 10 minutes for the budget review?\n\nBest,\nJoe"
}
}
Expected output:
Draft-first safety
gmail_create_draft_reply creates a draft but does not send. Review the draft in Gmail before calling gmail_send_draft to send it. The agent skill instructs agents not to send email without explicit approval; direct tool callers must follow the same rule.
4. Search and Read a Drive File¶
Find a text or markdown file by name and read its contents.
Step 1 — Search:
Expected output:
Step 2 — Read contents directly:
Step 3 — Or get full metadata:
Expected output:
{
"id": "<file-id>",
"name": "Q2 Notes",
"mimeType": "text/markdown",
"size": 24576,
"createdTime": "2026-06-01T10:00:00Z",
"modifiedTime": "2026-06-13T14:30:00Z",
"owners": ["you@gmail.com"],
"shared": false,
"webViewLink": "https://drive.google.com/file/d/<file-id>/view"
}
5. Create a Slides Presentation with Auto-Positioning¶
Build a 3-slide deck with titles, body text, and a table — elements auto-position below each other.
Step 1 — Create the presentation:
Step 2 — Use batch to add slides and content:
{
"tool": "slides_batch",
"args": {
"presentationId": "<presentation-id>",
"operations": [
{
"action": "slideAdd",
"params": {
"titleText": "Q2 Review",
"bodyText": "Quarterly performance summary"
}
},
{
"action": "slideAdd",
"params": {
"titleText": "Key Metrics"
}
},
{
"action": "textBoxInsert",
"params": {
"slideIndex": 1,
"text": "Revenue: $2.3M (+12% QoQ)\nCustomers: 1,450 (+85)\nChurn: 3.1% (-0.4pp)"
}
},
{
"action": "slideAdd",
"params": {
"titleText": "Team Breakdown"
}
},
{
"action": "tableInsert",
"params": {
"slideIndex": 2,
"values": [
["Team", "Headcount", "Open Reqs"],
["Engineering", "32", "4"],
["Marketing", "14", "2"],
["Sales", "18", "3"],
["Operations", "8", "1"]
]
}
}
]
}
}
Expected output:
{
"success": true,
"results": [
{ "action": "slideAdd", "success": true, "data": { "slideIndex": 0 } },
{ "action": "slideAdd", "success": true, "data": { "slideIndex": 1 } },
{ "action": "textBoxInsert", "success": true },
{ "action": "slideAdd", "success": true, "data": { "slideIndex": 2 } },
{ "action": "tableInsert", "success": true }
]
}
Auto-positioning
When autoPosition is true (the default for all slides content tools), new elements are placed below existing elements on the slide. You can override with explicit left, top, width, and height parameters.
Next Steps¶
| Topic | Link |
|---|---|
| Learn the architecture | Architecture Overview |
| Explore all Drive tools | Drive Service |
| Understand batch operations | Batch API Reference |
| Agent skill reference | Skill Overview |