Cloud API Tools
Cloud API tools enable agents to interact with major cloud platforms and developer services.
GitHub
github_list_repos
List repositories for a user or organization.
GitHub username (omit for authenticated user)
“all”, “public”, or “private”
“created”, “updated”, “pushed”, or “full_name”
Maximum repositories (1-100)
User Repos
Authenticated User
result = github_list_repos(
username = "octocat" ,
sort = "updated" ,
limit = 20
)
for repo in result[ "data" ]:
print ( f " { repo[ 'full_name' ] } " )
print ( f "Stars: { repo[ 'stargazers_count' ] } " )
print ( f "Language: { repo[ 'language' ] } \n " )
github_get_repo
Get repository information.
result = github_get_repo(
owner = "facebook" ,
repo = "react"
)
if result[ "success" ]:
repo = result[ "data" ]
print ( f "Description: { repo[ 'description' ] } " )
print ( f "Stars: { repo[ 'stargazers_count' ] } " )
print ( f "Forks: { repo[ 'forks_count' ] } " )
print ( f "Open Issues: { repo[ 'open_issues_count' ] } " )
github_search_repos
Search for repositories.
result = github_search_repos(
query = "fastmcp language:python stars:>100" ,
sort = "stars" ,
limit = 10
)
for repo in result[ "data" ][ "items" ]:
print ( f " { repo[ 'full_name' ] } - { repo[ 'stargazers_count' ] } stars" )
Search Qualifiers
Qualifier Example Description language:language:pythonFilter by language stars:stars:>1000Filter by star count created:created:>2024-01-01Filter by creation date user:user:facebookFilter by user/org topic:topic:machine-learningFilter by topic is:is:publicPublic/private
github_list_issues
List issues for a repository.
“open”, “closed”, or “all”
result = github_list_issues(
owner = "facebook" ,
repo = "react" ,
state = "open" ,
limit = 20
)
for issue in result[ "data" ]:
print ( f "# { issue[ 'number' ] } : { issue[ 'title' ] } " )
print ( f "State: { issue[ 'state' ] } " )
print ( f "Labels: { [l[ 'name' ] for l in issue[ 'labels' ]] } \n " )
github_get_issue
Get issue details.
result = github_get_issue(
owner = "facebook" ,
repo = "react" ,
issue_number = 12345
)
issue = result[ "data" ]
print ( f "Title: { issue[ 'title' ] } " )
print ( f "Body: { issue[ 'body' ] } " )
print ( f "Comments: { issue[ 'comments' ] } " )
github_create_issue
Create a new issue.
result = github_create_issue(
owner = "myorg" ,
repo = "myrepo" ,
title = "Bug: Application crashes on startup" ,
body = "## Description \n\n The app crashes when... \n\n ## Steps to Reproduce \n 1. ..." ,
labels = [ "bug" , "priority-high" ],
assignees = [ "user1" ]
)
print ( f "Issue created: # { result[ 'data' ][ 'number' ] } " )
print ( f "URL: { result[ 'data' ][ 'html_url' ] } " )
github_update_issue
Update an existing issue.
result = github_update_issue(
owner = "myorg" ,
repo = "myrepo" ,
issue_number = 42 ,
state = "closed" ,
labels = [ "bug" , "fixed" ]
)
github_list_pull_requests
List pull requests.
result = github_list_pull_requests(
owner = "facebook" ,
repo = "react" ,
state = "open" ,
limit = 10
)
for pr in result[ "data" ]:
print ( f "# { pr[ 'number' ] } : { pr[ 'title' ] } " )
print ( f "Author: { pr[ 'user' ][ 'login' ] } " )
print ( f "Branch: { pr[ 'head' ][ 'ref' ] } -> { pr[ 'base' ][ 'ref' ] } \n " )
github_create_pull_request
Create a new pull request.
result = github_create_pull_request(
owner = "myorg" ,
repo = "myrepo" ,
title = "Add new feature" ,
body = "## Changes \n\n - Added feature X \n - Fixed bug Y" ,
head = "feature-branch" ,
base = "main"
)
print ( f "PR created: # { result[ 'data' ][ 'number' ] } " )
print ( f "URL: { result[ 'data' ][ 'html_url' ] } " )
Configuration
export GITHUB_TOKEN = ghp_your_personal_access_token
Create token at github.com/settings/tokens
Required scopes:
repo - Full repository access
read:org - Read organization data
user - User information
Google Cloud Vision
vision_detect_labels
Detect labels (objects, concepts) in an image.
result = vision_detect_labels(
image_path = "photo.jpg" ,
max_results = 10
)
for label in result[ "labels" ]:
print ( f " { label[ 'description' ] } : { label[ 'score' ] :.2%} " )
vision_detect_text
Extract text from an image (OCR).
result = vision_detect_text( image_path = "document.jpg" )
print ( "Detected text:" )
print (result[ "text" ])
vision_detect_faces
Detect faces and emotions.
result = vision_detect_faces( image_path = "group_photo.jpg" )
for i, face in enumerate (result[ "faces" ], 1 ):
print ( f "Face { i } :" )
print ( f " Joy: { face[ 'joy_likelihood' ] } " )
print ( f " Surprise: { face[ 'surprise_likelihood' ] } " )
print ( f " Confidence: { face[ 'detection_confidence' ] :.2%} " )
vision_detect_objects
Detect and localize objects.
result = vision_detect_objects( image_path = "street.jpg" )
for obj in result[ "objects" ]:
print ( f " { obj[ 'name' ] } : { obj[ 'score' ] :.2%} " )
print ( f " Location: { obj[ 'bounding_box' ] } " )
Configuration
export GOOGLE_APPLICATION_CREDENTIALS = / path / to / service-account . json
Google Docs
google_docs_read
Read content from a Google Doc.
result = google_docs_read(
document_id = "abc123xyz"
)
print (result[ "content" ])
print ( f "Title: { result[ 'title' ] } " )
google_docs_write
Create or update a Google Doc.
result = google_docs_write(
document_id = "abc123xyz" , # Omit to create new doc
content = "# Title \n\n Paragraph text here."
)
print ( f "Document ID: { result[ 'document_id' ] } " )
print ( f "URL: { result[ 'url' ] } " )
Google Maps
maps_search_places
Search for places.
result = maps_search_places(
query = "coffee shop" ,
location = "37.7749,-122.4194" , # lat,lng
radius = 1000 # meters
)
for place in result[ "places" ]:
print ( f " { place[ 'name' ] } " )
print ( f "Address: { place[ 'address' ] } " )
print ( f "Rating: { place[ 'rating' ] } " )
print ( f "Open now: { place[ 'open_now' ] } \n " )
maps_geocode
Convert address to coordinates.
result = maps_geocode(
address = "1600 Amphitheatre Parkway, Mountain View, CA"
)
print ( f "Lat: { result[ 'lat' ] } " )
print ( f "Lng: { result[ 'lng' ] } " )
print ( f "Formatted: { result[ 'formatted_address' ] } " )
maps_directions
Get directions between two points.
result = maps_directions(
origin = "San Francisco, CA" ,
destination = "Los Angeles, CA" ,
mode = "driving" # driving, walking, bicycling, transit
)
for step in result[ "steps" ]:
print ( f " { step[ 'instruction' ] } " )
print ( f "Distance: { step[ 'distance' ] } " )
print ( f "Duration: { step[ 'duration' ] } \n " )
Configuration
export GOOGLE_MAPS_API_KEY = your_api_key
BigQuery
run_bigquery_query
Execute a SQL query on BigQuery.
result = run_bigquery_query(
query = """
SELECT
country,
COUNT(*) as user_count,
AVG(session_duration) as avg_duration
FROM `project.dataset.analytics`
WHERE date >= '2024-01-01'
GROUP BY country
ORDER BY user_count DESC
LIMIT 10
""" ,
project_id = "my-gcp-project" ,
max_results = 1000
)
for row in result[ "rows" ]:
print ( f " { row[ 'country' ] } : { row[ 'user_count' ] } users, { row[ 'avg_duration' ] } s avg" )
describe_dataset
Get dataset schema and metadata.
result = describe_dataset(
project_id = "my-project" ,
dataset_id = "my_dataset"
)
print ( f "Dataset: { result[ 'dataset_id' ] } " )
print ( f "Location: { result[ 'location' ] } " )
print ( f "Tables: { len (result[ 'tables' ]) } " )
for table in result[ "tables" ]:
print ( f " - { table[ 'table_id' ] } : { table[ 'num_rows' ] } rows" )
Configuration
export GOOGLE_APPLICATION_CREDENTIALS = / path / to / service-account . json
Service account needs BigQuery Job User and Data Viewer roles.
Payments
Razorpay
# Create payment order
result = razorpay_create_order(
amount = 10000 , # in paise (₹100.00)
currency = "INR" ,
receipt = "order_001"
)
print ( f "Order ID: { result[ 'id' ] } " )
# Get payment details
result = razorpay_get_payment( payment_id = "pay_123" )
Stripe
# Create payment intent
result = stripe_create_payment_intent(
amount = 5000 , # in cents ($50.00)
currency = "usd" ,
payment_method_types = [ "card" ]
)
print ( f "Client Secret: { result[ 'client_secret' ] } " )
# List customers
result = stripe_list_customers( limit = 20 )
PostgreSQL
postgres_query
Execute SQL query on PostgreSQL.
result = postgres_query(
query = "SELECT * FROM users WHERE created_at > '2024-01-01' LIMIT 10" ,
connection_string = "postgresql://user:pass@localhost:5432/dbname"
)
for row in result[ "rows" ]:
print (row)
Configuration
export POSTGRES_CONNECTION_STRING = postgresql :// user : pass @ host : port / dbname
Best Practices
Monitor quotas for cloud services:
GitHub : 5,000 requests/hour (authenticated)
Google Cloud Vision : 1,000 requests/month (free tier)
BigQuery : 1 TB query/month (free tier)
Google Maps : $200 credit/month
Use service accounts for server-to-server: # Set credentials file
export GOOGLE_APPLICATION_CREDENTIALS = service - account.json
# Or use OAuth for user context
credentials = CredentialStoreAdapter.default()
token = credentials.get( "google" )
Handle rate limits and quota errors: result = github_list_repos( ... )
if "error" in result:
if "rate limit" in result[ "error" ].lower():
# Wait and retry
elif "404" in result[ "error" ]:
# Resource not found
elif "403" in result[ "error" ]:
# Permission denied
Cache API responses when possible
Use filters to reduce data transfer
Monitor billing alerts in cloud consoles
Use BigQuery query costs estimator
Next Steps
Security Tools Security scanning and analysis
Creating Tools Build custom integrations