Skip to main content

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.
username
string
GitHub username (omit for authenticated user)
visibility
string
default:"all"
“all”, “public”, or “private”
sort
string
default:"updated"
“created”, “updated”, “pushed”, or “full_name”
limit
integer
default:"30"
Maximum repositories (1-100)
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

QualifierExampleDescription
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.
owner
string
required
Repository owner
repo
string
required
Repository name
state
string
default:"open"
“open”, “closed”, or “all”
limit
integer
default:"30"
Maximum issues (1-100)
Example
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\nThe app crashes when...\n\n## Steps to Reproduce\n1. ...",
    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

Environment Variables
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\nParagraph 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.
query
string
required
SQL query to execute
project_id
string
required
GCP project ID
max_results
integer
default:"1000"
Maximum rows to return
Example
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

Build docs developers (and LLMs) love