Directory: launch-agent-skills/skills/rag-tools/skill.md
name: Agent Tools Setup description: Configure Google Calendar and Gmail tools for launch-agentic-rag agent capabilities triggers:
- •agent tools
- •google calendar
- •gmail integration
- •tool setup
- •agentic tools
- •service account
Agent Tools Setup Skill
Purpose
Configure optional tool integrations for launch-agentic-rag to enable:
- •📅 Google Calendar - Schedule and manage meetings
- •📧 Gmail - Send emails on behalf of user
- •🔧 Custom Tools - Framework for adding more tools
IMPORTANT:
- •This skill is ONLY for launch-agentic-rag (not needed for launch-rag)
- •These tools are optional - the agent works without them
- •Requires Google Cloud project and service account
Prerequisites
- •launch-agentic-rag cloned and set up (use
rag-setupskill) - •Google Cloud account
- •Basic understanding of service accounts and OAuth
Instructions
Step 0: Check If Needed
Ask the user:
Do you want to set up Google Calendar/Gmail tools? These are optional for launch-agentic-rag. Without them: ✅ Agent still works for Q&A and reasoning ❌ Can't schedule meetings or send emails Set up tools now? [y/n]
If "n" or "no": Skip this skill entirely.
Step 1: Create Google Cloud Project
Guide the user:
- •Go to Google Cloud Console
- •Click Select Project → New Project
- •Name it:
agentic-rag-tools(or user preference) - •Click Create
- •Wait for project creation (~30 seconds)
Step 2: Enable APIs
In Google Cloud Console:
- •Go to APIs & Services → Library
- •Search and enable:
- •✅ Google Calendar API
- •✅ Gmail API
Via gcloud CLI (alternative):
# Enable required APIs gcloud services enable calendar-json.googleapis.com gcloud services enable gmail.googleapis.com echo "✅ APIs enabled"
Step 3: Create Service Account
In Google Cloud Console:
- •Go to IAM & Admin → Service Accounts
- •Click Create Service Account
- •Fill in:
- •Name:
agentic-rag-agent - •Description: "Service account for RAG agent tool access"
- •Name:
- •Click Create and Continue
- •Skip role assignment (click Continue)
- •Click Done
Step 4: Generate Service Account Key
In Google Cloud Console:
- •Find your service account in the list
- •Click the three dots → Manage Keys
- •Click Add Key → Create New Key
- •Choose JSON format
- •Click Create
- •Save the downloaded JSON file (e.g.,
service-account-key.json)
⚠️ IMPORTANT: Keep this file secure - it has access to your account!
Step 5: Move Credentials to Project
# Create credentials directory mkdir -p credentials # Move the downloaded key mv ~/Downloads/service-account-key.json credentials/ # Secure the file chmod 600 credentials/service-account-key.json echo "✅ Service account credentials stored securely"
Step 6: Update .env File
Use Edit tool to add to .env:
# Google Cloud Configuration (for agent tools) GOOGLE_CLOUD_PROJECT=your-project-id GOOGLE_APPLICATION_CREDENTIALS=credentials/service-account-key.json # Tool Configuration ENABLE_CALENDAR_TOOL=true ENABLE_EMAIL_TOOL=true
To get your project ID:
# From the JSON file cat credentials/service-account-key.json | grep project_id # Or from gcloud gcloud config get-value project
Step 7: Grant Calendar/Gmail Access
IMPORTANT: Service accounts need delegated access to use Calendar/Gmail.
Option A: Domain-Wide Delegation (G Suite/Workspace)
If you have Google Workspace:
- •Go to Admin Console
- •Navigate to Security → API Controls → Domain-wide Delegation
- •Click Add new
- •Enter service account Client ID (from JSON file)
- •Add OAuth scopes:
code
https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/gmail.send
- •Click Authorize
Option B: User Impersonation (Personal Gmail)
For personal accounts, you'll need OAuth2:
- •Create OAuth2 credentials in Google Cloud Console
- •Configure consent screen
- •Use user authentication flow instead of service account
⚠️ Note: Service accounts work best with Google Workspace. Personal Gmail requires OAuth2 setup.
Step 8: Test Tools Configuration
# Test if credentials are valid
python -c "
from google.oauth2 import service_account
import json
with open('credentials/service-account-key.json') as f:
creds = service_account.Credentials.from_service_account_file(
'credentials/service-account-key.json',
scopes=[
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/gmail.send'
]
)
print('✅ Credentials loaded successfully')
print(f'Service account: {creds.service_account_email}')
"
Step 9: Verify in Application
Start the server and test tool endpoints:
# Start server
uvicorn main:app --reload --port 8000
# Test calendar tool
curl -X POST http://localhost:8000/agent/query \
-H "Content-Type: application/json" \
-d '{"query": "Schedule a meeting tomorrow at 2pm"}'
# Test email tool
curl -X POST http://localhost:8000/agent/query \
-H "Content-Type: application/json" \
-d '{"query": "Send an email to test@example.com saying hello"}'
Checklist
- • Google Cloud project created
- • Google Calendar API enabled
- • Gmail API enabled
- • Service account created
- • Service account key downloaded (JSON)
- • Credentials moved to
credentials/directory - • File permissions set to 600
- • .env updated with GOOGLE_APPLICATION_CREDENTIALS
- • (If Workspace) Domain-wide delegation configured
- • (If personal) OAuth2 flow set up
- • Credentials test passed
- • Tools work in application
Troubleshooting
| Issue | Solution |
|---|---|
| "Permission denied" error | Check domain-wide delegation or OAuth setup |
| "Credentials not found" | Verify GOOGLE_APPLICATION_CREDENTIALS path |
| "API not enabled" | Enable Calendar/Gmail APIs in Cloud Console |
| "Invalid grant" | Service account needs delegated access |
| Personal Gmail not working | Use OAuth2 instead of service account |
Important Notes
- •🔒 Keep credentials secure - Add
credentials/to.gitignore - •🏢 Best for Workspace - Service accounts work best with Google Workspace
- •👤 Personal accounts - Require OAuth2, more setup required
- •🔧 Optional feature - Agent works without tools for Q&A
- •🆓 Free tier - Google Cloud free tier covers typical usage
Related Skills
- •
rag-setup- Set up launch-agentic-rag first - •
rag-database- Configure database after this
What This Enables
With tools configured, your agent can:
- •✅ Schedule meetings: "Schedule a meeting with John tomorrow at 3pm"
- •✅ Send emails: "Email the team about the project update"
- •✅ Reason about actions: Agent decides when to use tools vs just answer
- •✅ Multi-step workflows: Retrieve info → Schedule meeting → Send confirmation
Without tools, agent only does Q&A with RAG retrieval.