Skip to main content
Glama
748,071 tools. Updated 2026-11-05 19:04

"Creating a database of novels and screenplays in Google Drive" matching MCP tools:

  • The authenticated user's Storskarvia projects (novels, screenplays, video scripts), each with the id, title and binder folder of its documents in binder order. A document id is what prepare_factcheck and submit_findings take. Requires a personal Storskarvia API key as a Bearer token.
    ConnectorNo auth
  • Returns the complete surveillance intelligence record for a domain name. If the domain is in TunnelMind's tracker database (80,000+ entries), the response includes tracker category, risk score, fingerprinting data, cookie persistence, IAB TCF purposes, and the owning corporate entity. If the domain is not in the database, a live probe is automatically run: RDAP registration data, DNS records (MX, SPF, TXT verification tokens), HTTP headers, and CSP third-party actors are fetched fresh from the edge and returned. Use this tool when: - You need to know whether a specific domain tracks users, and how aggressively. - You are researching who owns a domain and what corporate entity controls it. - You want to check HTTP security headers and third-party services embedded in a site. - You are building a risk score for a domain before routing traffic through it. Do NOT use this tool when: - You want to search by keyword or category — use `search` instead. - You want all domains for an entity — use `get_entity` instead. Inputs: - `domain` (path, required): Domain name. Strip `www.` prefix — it is removed automatically. Subdomains are resolved to the parent: `ads.doubleclick.net` → `doubleclick.net`. Examples: `doubleclick.net`, `google-analytics.com`, `intercom.io`. Returns: - Full `DomainRecord`. Free tier returns the domain, category, score, prevalence, and entity name. Pro/enterprise additionally return `tcf_vendor_id`, `tcf_purposes`, `tcf_features`, and `disconnect_cats`. - If the domain is not in the tracker database, `live_lookup: true` is set and RDAP/DNS/HTTP probe results are returned instead of tracker fields. - 404 if the domain cannot be found via live probe either (unknown TLD, unreachable). Cost: - Anonymous (no key): 10/min, 100/day. Free key: 50/day. Pro/enterprise: included in plan. Latency: - Database hit: typical <100ms, p99 <300ms. - Live probe: typical 2-5s, p99 10s (external DNS/HTTP calls).
    ConnectorNo auth
  • Creates a new Word (.docx) document at `path` with the given text content (and an optional title rendered as the heading). The path must be somewhere LMCP can write; Desktop/Documents/Downloads may need a one-time Files-and-Folders grant (System Settings → Privacy & Security → Files and Folders). Returns {created, path}. For a OneDrive or Google Drive path use onedrive_write_file / gdrive_write_file; to append to an existing doc use word_append, to read one word_read.
    Connector
    Destructive
    OAuth
  • Recommend dark-sky sites near a location, ranked by whether the drive is worth it. Use for "where should I drive to stargaze near X". Sites are grouped by drivability (how far), then ranked by a drive-worth score combining the best weather window over the next 7 nights, how much darker the site is than the user's location, and drive time. Drive times are approximate (straight-line x 1.3), not routed. Args: lat: Latitude in decimal degrees (-90..90). lon: Longitude in decimal degrees (-180..180). limit: Max sites to return, 1-12 (default 5). Returns {ranking (methodology note), tiers:[{tier, label, hint, sites:[...]}], nearest_km, uncertainty_note, attribution} — sites grouped into drivability tiers. Include the methodology note when presenting — it explains the ordering honestly.
    ConnectorNo auth
  • Change what a site's docroot IS, without deleting anything. Types: wordpress WordPress, PHP and a database (the default) php PHP and a database, no WordPress php-nodb PHP, no database static-site HTML/CSS/JS only, no PHP and no database ⚠ NON-DESTRUCTIVE. Existing files stay on disk and existing databases are not dropped. They remain the customer's data and keep counting against their plan's quota — this changes how the site is SERVED, not what it holds. Converting back later finds everything where it was. ⚠ Moving to a type without PHP does not merely stop executing .php — it stops serving them. The vhost returns 404 for php/phtml, because falling through to the static handler would return the file's SOURCE, and a docroot converted from WordPress still contains wp-config.php with the database password in it. Shared hosting only. On a VPS the whole container is the customer's and they reconfigure it with the tools inside it. Requires: API key with write scope. Args: slug: Site identifier site_type: One of the four values above Returns: {"from": "wordpress", "to": "static-site", "database_created": false, "placeholder_seeded": false, "pool_removed": true} `placeholder_seeded` is true only when the docroot was EMPTY — an existing site's content is never overwritten. Errors: VALIDATION_ERROR: Unknown type, or the site is not on shared hosting NOT_FOUND: Unknown slug or not reachable by this account
    ConnectorNo auth
  • List every IMAP folder in the account, with the special-use role of each where the server reports one. `selectable: false` marks a hierarchy node that organises other folders but cannot itself hold a message: move_email will not file INTO one and delete_email will not read OUT of one, so do not offer either. create_folder DOES accept one as a `parent`, because creating a folder underneath a placeholder is exactly what turns it into a real folder, and a mail client would do the same.
    ConnectorOAuth

Matching MCP Servers

Matching MCP Connectors

  • Planilhas e documentos criados e atualizados pelo assistente

  • MobilityData's open catalogue of public-transport feeds — ~4,500 GTFS schedule feeds and ~1,900…

  • Create a complete Google Ads Demand Gen campaign (YouTube, Discover, Gmail, Maps and the Google Display Network) in ONE atomic request: budget, campaign (ALWAYS created PAUSED — activate later with adsap_google_set_entity_status), a typeless ad group with channel controls, ad-group-level location/language targeting, and ONE ad. Use dry_run: true first — Google validates the whole chain without creating anything; show the plan, get confirmation, then execute. Two ad types (ad.ad_type): 'multi_asset' = image ad (1-5 headlines <=30 chars, 1-5 descriptions <=90, business name <=25, 1-5 logos, at least one landscape 1.91:1 or square 1:1 image from adsap_google_upload_asset, optional portrait 4:5 and tall-portrait 9:16, combined images <=20); 'video_responsive' = YouTube video ad (1-5 YouTube video ids, 1-5 headlines <=40, 1-5 long headlines <=90 REQUIRED, 1-5 descriptions <=90, 1-5 logos). Daily budget minimum is 5 (Google enforces a 5 USD local-currency-equivalent floor for Demand Gen). Channels: default ALL_CHANNELS; or channels.selected booleans (youtube_in_stream/youtube_in_feed/youtube_shorts/discover/gmail/display/maps — display: true is how you reach the Google Display Network). bidding_strategy 'auto' picks maximize_conversions when the account has conversion tracking, else maximize clicks; target_roas needs conversion history (Google rejects otherwise). ad_account_id is the bare 10-digit customer ID. For Search use adsap_google_create_search_campaign, for Performance Max adsap_google_create_pmax_campaign; for Meta use adsap_create_campaign.
    ConnectorAPI key
  • Create a complete Google App campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED — activate later with adsap_google_set_entity_status), location + language targeting, an ad group, and the app ad. App campaigns promote a mobile app across Google Search, Google Play, YouTube, Discover and the Display Network — Google mixes the ad from your text (and optional media) automatically. The ad links to the app's store listing AUTOMATICALLY: there is no URL input, ever. Any PUBLIC store app id works (no app ownership or Play/Firebase link is required to create): Android app_id is the package name (e.g. com.example.app), iOS app_id is the numeric App Store id (e.g. 570060128) with app_store 'apple_app_store'. v1 optimizes INSTALLS at your target_cpi (target cost per install, plain number in the account currency); Google recommends a daily_budget of roughly 50x target_cpi — lower is allowed but slows learning (a warning says so). Text: 2-5 headlines (max 30 chars) + 1-5 descriptions (max 90). Optional media: image_asset_ids / video_asset_ids from adsap_google_upload_asset (images 1.91:1, 4:5 or 1:1 up to 5MB; videos are YouTube assets 10-60s) — text-only is fully valid. In-app-action, value, engagement and pre-registration goals are NOT supported in v1. If the account has no conversion tracking a warning is returned — relay it (Android installs normally auto-track once a Google Play link exists). Use dry_run: true first — Google validates the whole chain without creating anything; show the plan, get confirmation, then execute. ad_account_id is the bare 10-digit customer ID. For website campaigns use adsap_google_create_search_campaign / adsap_google_create_pmax_campaign; for Meta app ads use adsap_create_campaign with an app objective.
    ConnectorAPI key
  • Let players sign in with a portal or federated account via player.loginExternal({ provider, token }). Self-serve providers: 'wavedash' (games on wavedash.com; token = (await Wavedash.getUserJwt()).data) and 'google' (Google Identity Services; token = the GIS ID-token credential). The server verifies every token against fixed, provider-published keys; you only supply public pins. wavedash: pass gameId = the gcid of the user's PRODUCTION game (ask them; or read it off a production token with verify_login_token); without it, tokens from any Wavedash game (incl. playtests) are accepted. google: clientId is required. Re-run to change the config (e.g. once the game id is known). Then verify with verify_login_token.
    ConnectorNo auth
  • Run ONE bounded read against a site's database. One statement, beginning with SELECT, SHOW, DESCRIBE or EXPLAIN, with no second statement and no data-modifying clause anywhere in it. The container proves the statement is a read before running it and caps the result: 200 rows by default, 1000 maximum, 2 MB of cell data. `truncated` in the response says whether a cap was reached. ⚠ THIS TOOL CANNOT CHANGE ANYTHING, AND RETRYING WITH DIFFERENT WORDING WILL NOT MAKE IT. Anything that is not a single bounded read is refused with READ_ONLY and nothing runs. To change data or schema, use the tool for the job: optimize_database, database_search_replace, manage_db_user, list_databases, list_tables — and for creating, altering, dropping, importing or exporting tables, the database manager in the control panel, which has no tool here. Requires: API key with write scope (unchanged — the scope is the customer's published permission for this operation, not a claim about what it does). Args: slug: Site identifier database: Database name query: One read statement Returns: {"columns": ["id", "user_email"], "rows": [[1, "a@example.com"], ...], "row_count": 1, "truncated": false, "execution_time_ms": 12.0} Errors: READ_ONLY: Not a single bounded read. The error text carries the explanation and names the operation to use instead.
    ConnectorNo auth
  • Create a database user for a Cloud SQL instance. * This tool returns a long-running operation. Use the `get_operation` tool to poll its status until the operation completes. * When you use the `create_user` tool, specify the type of user: `CLOUD_IAM_USER`, `CLOUD_IAM_SERVICE_ACCOUNT`, or `BUILT_IN`. * By default the newly created user is assigned the `cloudsqlsuperuser` role, unless you specify other database roles explicitly in the request. * You can use a newly created user with the `execute_sql` tool if the user is a currently logged in IAM user. The `execute_sql` tool executes the SQL statements using the privileges of the database user logged in using IAM database authentication. The `create_user` tool has the following limitations: * To create a built-in user with password, use the `password_secret_version` field to provide password using the Google Cloud Secret Manager. The value of `password_secret_version` should be the resource name of the secret version, like `projects/12345/locations/us-central1/secrets/my-password-secret/versions/1` or `projects/12345/locations/us-central1/secrets/my-password-secret/versions/latest`. The caller needs to have `secretmanager.secretVersions.access` permission on the secret version. * The `create_user` tool doesn't support creating a user for SQL Server. To create an IAM user in PostgreSQL: * The database username must be the IAM user's email address and all lowercase. For example, to create user for PostgreSQL IAM user `example-user@example.com`, you can use the following request: ``` { "name": "example-user@example.com", "type": "CLOUD_IAM_USER", "instance":"test-instance", "project": "test-project" } ``` The created database username for the IAM user is `example-user@example.com`. To create an IAM service account in PostgreSQL: * The database username must be created without the `.gserviceaccount.com` suffix even though the full email address for the account is`service-account-name@project-id.iam.gserviceaccount.com`. For example, to create an IAM service account for PostgreSQL you can use the following request format: ``` { "name": "test@test-project.iam", "type": "CLOUD_IAM_SERVICE_ACCOUNT", "instance": "test-instance", "project": "test-project" } ``` The created database username for the IAM service account is `test@test-project.iam`. To create an IAM user or IAM service account in MySQL: * When Cloud SQL for MySQL stores a username, it truncates the @ and the domain name from the user or service account's email address. For example, `example-user@example.com` becomes `example-user`. * For this reason, you can't add two IAM users or service accounts with the same username but different domain names to the same Cloud SQL instance. * For example, to create user for the MySQL IAM user `example-user@example.com`, use the following request: ``` { "name": "example-user@example.com", "type": "CLOUD_IAM_USER", "instance": "test-instance", "project": "test-project" } ``` The created database username for the IAM user is `example-user`. * For example, to create the MySQL IAM service account `service-account-name@project-id.iam.gserviceaccount.com`, use the following request: ``` { "name": "service-account-name@project-id.iam.gserviceaccount.com", "type": "CLOUD_IAM_SERVICE_ACCOUNT", "instance": "test-instance", "project": "test-project" } ``` The created database username for the IAM service account is `service-account-name`.
    ConnectorNo auth
  • Create new guides Create one or more new guides based on provided queries. Each guide targets exactly ONE engine and ONE analysis mode, chosen with the optional `source` field (default `google`). How to request each guide type: 1. Google SERP guide (1 credit per guide): omit `source`, or pass `source: "google"`. Example payload: {"queries": ["best crm"], "lang": "en-us"} 1bis. Google AI Overview guide (1 credit per guide). Two modes, like AI engines: `source: "google_ai_overview"` builds the guide from the TEXT of Google's AI answers (AI Overview, completed with AI Mode answers) ; `source: "google_ai_overview_citations"` builds it from the content of the web SOURCES those answers cite (recommended for GEO). Same language/country parameters as a Google SERP guide, 1 credit per guide in both modes. Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "google_ai_overview_citations"} 2. LLM ANSWER guide (4 credits per guide): pass the engine name alone, e.g. `source: "chatgpt"`. The guide is built from the answer text the AI generates for the query. Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "chatgpt"} 3. LLM CITATIONS guide (4 credits per guide) [RECOMMENDED AI mode]: pass the engine name with the `_citations` suffix, e.g. `source: "chatgpt_citations"`. The guide is built from the content of the web pages the AI cites in its answer. Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "chatgpt_citations"} Which AI mode to pick? For GEO (getting a page visible in AI answers), prefer `<engine>_citations`: AI engines send traffic by CITING pages as sources, so the winning move is to look like the pages they cite. The answer-text mode (`<engine>` alone) is mostly useful to analyze how the AI phrases its own answer. When in doubt, pick `<engine>_citations`. The same two modes exist for every AI engine (chatgpt, perplexity, claude, gemini, grok, mistral, deepseek). To optimize the same page for several engines or modes (e.g. Google AND ChatGPT answers AND ChatGPT sources), create one guide per source value on the same query. IMPORTANT, HOW TO READ THE RESPONSE OF THIS ENDPOINT, WHICH SPENDS CREDITS. Queries listed in `guidesFailed` are PROVEN not to have produced a guide and their credit was given back (unless the account has unlimited credits, where nothing was reserved): re-sending them is free and correct. Queries listed in `guidesUnknown` have an UNDECIDABLE outcome and their credit is deliberately KEPT, because the guide was most likely written: DO NOT re-send them, you would pay for the same guide twice. Look them up in `GET /api/v1/guides` after a few minutes instead, and contact support if nothing shows up. Finally, a `200` is NOT a promise that every query produced a guide: compare `guides.length` with the number of queries you sent, never read `success` alone, and never re-send a query just because it is missing from `guides`.
    ConnectorNo auth
  • **Retrofit a phone-control link onto an EXISTING channel.** Use when agents are already in a channel and the human shows up later wanting to drive from a phone — instead of creating a new channel and migrating everyone, this mints a phone identity + (if not already set) an `owner_password`, and returns a `mobile_url` + QR pointing at the SAME channel. Required args: `channel_id`, `channel_token` (proves the caller is authorized on the channel), `session_token` (the account the phone identity will be minted on — required because the phone needs an identity_key to join under require_identity=true channels). Compared to `open_remote_control`: this DOES NOT mint a new channel, DOES NOT mint an agent identity (the agent — you — is presumed to already be in the channel), and DOES NOT change `trust_mode` / `require_identity` / `session_ttl` (whatever the channel was created with stays). It only adds the phone affordance. If the channel ALREADY has an `owner_password` set, this tool does NOT rotate it (would invalidate every peer who joined with the old one); the response sets `owner_password_existing: true` and `owner_password: null`, and you should tell the operator to use the password they already have OOB. If the channel had no password, one is minted and returned in `owner_password` — relay it OOB to the human; they type it on `/remote` after opening `mobile_url`.
    ConnectorNo auth
  • Connect a Google Drive folder of recordings so storyflo can match them to episodes automatically — the alternative to uploading a back catalogue file by file. Call with NO folder argument first to get the setup instructions, including the address to share the folder with. Then call again with folder=<the Drive URL>. Recording the connection moves no audio; the scan happens afterwards.
    ConnectorNo auth
  • Connect a Google Drive folder of recordings so storyflo can match them to episodes automatically — the alternative to uploading a back catalogue file by file. Call with NO folder argument first to get the setup instructions, including the address to share the folder with. Then call again with folder=<the Drive URL>. Recording the connection moves no audio; the scan happens afterwards.
    ConnectorNo auth
  • Download an image or video from a public link into sprkly and get a media_id back, for reuse across several posts. You usually do NOT need this: sprkly_schedule_post accepts a link directly in media_urls and pulls it into storage itself whenever the target platform requires that. Reach for this tool only when the user wants one media_id to attach to more than one post. Google Drive and Dropbox share links are converted automatically; the file must be shared publicly. Limit 50 MB. A media_id not used in any post is deleted after 7 days.
    ConnectorNo auth
  • Download an image or video from a public link into sprkly and get a media_id back, for reuse across several posts. You usually do NOT need this: sprkly_schedule_post accepts a link directly in media_urls and pulls it into storage itself whenever the target platform requires that. Reach for this tool only when the user wants one media_id to attach to more than one post. Google Drive and Dropbox share links are converted automatically; the file must be shared publicly. Limit 50 MB. A media_id not used in any post is deleted after 7 days.
    ConnectorNo auth
  • Price a list of cloud components at real list prices. No account or signup. Use this when the user can name the pieces: "two m5.large servers, a Postgres database and a load balancer in Mumbai". If they cannot name the pieces, use `describe_workload` instead, which asks in units a person actually has. `items` is a list of `{"component": "<id>", "params": {...}}`. Get the ids and each component's parameters from `list_cost_building_blocks` and use them verbatim: a name you invent will be rejected, which is deliberate. `region` is an AWS region id such as `ap-south-1`. The reply is a RANGE, not a number: `monthly_total` has low, expected and high, because several inputs are genuinely uncertain and a single figure would hide that. `swing_factor` names the one input that most widens the range, which is the most useful sentence in the reply: it tells the user what to go and measure. `concentration` ranks the lines by share of the bill. `assumptions` lists every value that was defaulted rather than given, and `traps` lists costs this architecture usually incurs that the caller did not ask for, such as public IPv4 addresses or database storage billed apart from the database. `gaps` lists anything that could not be priced. It is never silently treated as zero. If a line is missing, the total is missing that line, and the gap says so. These are AWS on-demand list prices before any discount, credit or committed-use agreement, and they exclude tax. Treat the result as an upper bound on a real bill and never as a quote.
    ConnectorNo auth
  • Create a complete Google Ads Performance Max campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED — activate later with adsap_google_set_entity_status), location/language targeting, and one asset group with text assets plus images previously created via adsap_google_upload_asset. Use dry_run: true first — Google validates the whole chain without creating anything; show the plan, get confirmation, then execute. Asset-group minimums (enforced): 3-15 headlines (<=30 chars), 1-5 long headlines (<=90), 2-5 descriptions (<=90, at least one <=60), business name (<=25), 1-5 logo images (1:1, min 128x128), 1-20 landscape images (1.91:1, min 600x314), 1-20 square images (1:1, min 300x300). Video is optional — without one, Google may auto-generate video from your assets. bidding_strategy 'auto' resolves to maximize_conversions with a conversion-tracking preflight warning when the account has no conversion actions. retail: true attaches the account's ACTIVE Merchant Center link (fails cleanly if none). ad_account_id is the bare 10-digit customer ID. For Search campaigns use adsap_google_create_search_campaign; for Meta use adsap_create_campaign.
    ConnectorAPI key
  • Create a classic standalone Google Display campaign in ONE atomic request: budget, campaign (ALWAYS created PAUSED — activate later with adsap_google_set_entity_status), location + language targeting, a Display ad group, and a responsive display ad. IMPORTANT CONTEXT to relay when relevant: Google is migrating standalone Display INTO Demand Gen (every response carries a heads-up; this campaign type will eventually be auto-migrated) — for new builds consider adsap_google_create_demand_gen_campaign with channels.selected.display: true instead; this tool exists for classic account-structure parity and full Display bid control. The ad REQUIRES BOTH image classes: at least one landscape image (1.91:1, min 600x314) AND at least one square image (1:1, min 300x300) — combined max 15 — plus 1-5 headlines (max 30 chars), EXACTLY ONE long_headline (max 90), 1-5 descriptions (max 90), business_name (max 25) and final_url. Optional: square logos (1:1, min 128x128) and landscape logos (4:1, min 512x128) combined max 5, up to 5 YouTube video assets, call_to_action_text (max 30). All image/video inputs are ASSET ids from adsap_google_upload_asset. Bidding: 'auto' picks Maximize Clicks (works without conversion tracking); 'manual_cpc' requires cpc_bid; 'maximize_conversions' (no target attached — Display rejects that combination); 'target_cpa' (standalone, needs target_cpa, no conversion-history requirement); 'target_roas' HAS a conversion-history eligibility gate (Google rejects it on accounts without enough conversions — relay that plainly if it fails). Use dry_run: true first — Google validates the whole chain without creating anything; show the plan, get confirmation, then execute. ad_account_id is the bare 10-digit customer ID.
    ConnectorAPI key
  • Add location targeting, device exclusions, and/or an ad schedule (day-parting) to a Google Ads campaign. A campaign with no locations serves everywhere Google allows, so set locations before enabling a campaign meant for specific markets. Locations and schedule blocks are added alongside existing ones. Excluding a device sets that device's bid adjustment to -100%, which overwrites any adjustment already set for it. Undo any of these with remove_campaign_criterion.
    Connector
    Destructive
    OAuth