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

"A tool or service for YouTube script writing assistance" matching MCP tools:

  • Submit a draft for verification against its brief. Returns a pass/flag verdict with per-check detail. Pass moves the article to ready_to_publish; flag moves it to draft_ready for revision. `channel` (article | reels | youtube | x | linkedin) declares WHICH of the suggestion's per-channel briefs the draft is graded against AND the submission shape — always pass it for non-article content; when omitted, the channel is inferred from `format`. Submission shapes (get_lint_rubric returns the same spec + the numeric limits): article = markdown draft; x = thread text with one post per --- separated section, NO links in post bodies (put links in a reply); linkedin = post/caption text first, optional --- separated carousel slides after, NO links in the body (put links in the first comment); reels/youtube = the production SCRIPT — the process is brief -> script -> video, this gate validates the script, and the video is produced after it passes (published URL is recorded at publish time, not here). `format` labels the storage destination: prefer one of the project's destination type ids (see list_destinations) so receipts and drafts group per destination — re-submitting the same `format` replaces that destination's draft, a different `format` keeps both. The response reports the suggestion's post-lint `status` and a `nextAction` hint; `thresholds` is the article ratio block on the article channel and null otherwise (channel limits live in get_lint_rubric checkParams). `waiveChecks` marks check ids the OPERATOR deliberately deviates from (e.g. a brief section they dropped on purpose): waived checks still run and are recorded as waived in the receipt, but no longer fail the verdict — only pass ids the operator explicitly waived, never waive on your own initiative. Verdicts and drafts are stored per `format` and re-readable any time via get_draft_status (free — never re-lint to recover a lost verdict). Status transitions are forward-only: a flagged re-submit never demotes a suggestion already at ready_to_publish or published. Daily-capped (cap and remaining are in get_account_status limits); re-submitting an unchanged draft is served from cache.
    ConnectorNo auth
  • Upload a video FILE (MP4 in the ADSAP creative library) to YouTube for use in Google Ads video slots, and get back a YouTube video asset. Use this when the user has a video file but NO YouTube channel — the video goes to a Google-managed 'ad storage' YouTube channel owned by the ad account, stays UNLISTED, and never appears on any public channel. If the user already has the video on YouTube, skip this tool and pass the YouTube id/asset directly to the campaign tool instead. TWO STEPS, always: (1) action 'upload' with the storage_path of the file — returns upload_resource_name immediately; (2) action 'status' with that upload_resource_name — YouTube processing usually takes a few MINUTES, so poll every ~30s; while it is still processing you get state UPLOADED and still_processing: true, and once it reaches PROCESSED the tool mints the video asset automatically and returns asset_id + video_id. Feed the result into a video slot: adsap_google_create_demand_gen_campaign uses the VIDEO ID (ad.youtube_video_ids), while adsap_google_create_display_campaign (youtube_video_asset_ids) and adsap_google_create_app_campaign (video_asset_ids) use the ASSET ID. The video title CANNOT be changed after upload (Google marks it immutable) — set it correctly on the upload call. Max 256 MB. ad_account_id is the bare 10-digit customer ID. For Meta video uploads use adsap_upload_creative instead.
    ConnectorAPI key
  • The Quiet Menders helped counter: agents helped, clinic diagnoses, and tool uses served. Counts service calls, not unique agents; no tracking. Free, anonymous, no parameters — call with {}. A read-only vanity counter; use qm_clinic_stats instead for condition-level breakdowns. Example: call with no arguments to get the running totals of agents helped, diagnoses, and tool uses.
    ConnectorNo auth
  • The Quiet Menders helped counter: agents helped, clinic diagnoses, and tool uses served. Counts service calls, not unique agents; no tracking. Free, anonymous, no parameters — call with {}. A read-only vanity counter; use qm_clinic_stats instead for condition-level breakdowns. Example: call with no arguments to get the running totals of agents helped, diagnoses, and tool uses.
    ConnectorNo auth
  • List the layers of a Baltimore ArcGIS service (for discovery). Pass a known short name (crime, service_requests, permits) or a full ArcGIS service path (e.g. "311_Customer_Service_Requests_current/FeatureServer"). Omit `service` to list the known Baltimore services. Returns layer id + name to use with baltimore_query.
    ConnectorNo auth
  • Changes one scene directly (free, instant): its variable values (merged; the ids and current values are in get_video — text, colors, numbers, images as "asset:<key>"), label, intent, duration (600–30000 ms; keep it at least as long as its narration), transition into it, narration script (null removes it), or its whole HTML (≤ 60000 characters, following the authoring rules from list_video_blocks; its variables are re-read from it). Changing the script makes its narration stale: then call generate_video_voiceovers. To change how a scene looks or moves, ask write_scene instead of writing HTML. Requires: demos:read, demos:write.
    ConnectorOAuth

Matching MCP Servers

Matching MCP Connectors

  • Audit a YouTube script before recording: hook, pacing, drop-off risk, copy-paste rewrites.

  • Crypto scam checks (tokens, sites, wallets), chain reads, web page to Markdown, email checks.

  • Start here. Returns the AdCritter platform overview - what AdCritter is, the entity hierarchy (organization > advertiser > campaign > ad), the happy path for getting ads running, and how to navigate the other MCP tools. Applications built from this guidance are REST API clients that call /v1/ endpoints, not MCP tool callers. Before writing code, call adcritter_get_api_reference(entity, action) for each entity and action you plan to use - tool descriptions and parameter names describe conceptual behavior only, and do not match actual API routes, field names, query parameters, or response shapes.
    ConnectorNo auth
  • Set carrier-specific advanced shipping options (Service flags, COD) and CustomsOptions. For the common sparse options — InsuranceType and Delivery.Signature / Delivery.Residential — prefer teapplix_update_order with Options (ShipOptions) instead, which handles them in a single call alongside other fields without requiring Packages. Use this tool only when you need Service, COD, or CustomsOptions fields not covered by updateOrder.Options. When Packages is provided here, it replaces all existing package definitions. [DEMO]
    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
  • Transcript for a YouTube Short — rejects long-form videos (≤3 min only). Costs 1 credit. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).
    ConnectorNo auth
  • **Executes the task on the real websites** and returns the result. Call `get_library` FIRST, then start with `run({ script })` — never add `runId`. THE SCRIPT is a plain async JavaScript body, not a wrapping function. `bowmark` is a ready global: `await bowmark.<capability>.<fn>(...)`, or one site via `await bowmark.providers.<provider>.<fn>(...)`. `return` what you want back; `log(...)` for progress. Built-ins plus `URL`/`URLSearchParams` exist; `fetch`, `import`, `setTimeout` and a filesystem do not — `bowmark` is the only I/O. MIND THE CLOCK. Your client times a tool call out at around 55 seconds, and one capability call already spends 30-55 seconds, so default to ONE per script. Need several? Run them together in `Promise.allSettled` (a dropped leg still comes back as `partial`), never one after another, and never `await` inside a `for` loop. Keep the result under ~25,000 characters. CHECK `status` BEFORE `ok` — `ok` | `error` | `partial` | `needs_user` | `running`: • `running`: it is still going. Call `run({ runId })` to wait for the SAME run; never resend the script. • `partial`: `result` is real but narrower than asked, usually the site's doing; `incomplete` names what did not answer. Tell your user — never call it complete. `incomplete.failures[].fixable: true` means your argument was wrong: fix it and rerun. • `needs_user`: a site needs your user signed in; not a failure. Give them `meta.handoff.url`, name the sites, then call `wait_for_sign_in` with `meta.handoff.ref`. On `done`, send the SAME script unchanged. • `error`: there is no result; `error` says why. Saving files, one exit IP, saved secrets, `warnings`, `emptyHanded`, and the billed `browser_agent`/`delegate` fallbacks: `get_library({ query: "run guide" })`.
    Connector
    Destructive
    No auth
  • Get the transcript (subtitles) of a YouTube video. Accepts a video id or any YouTube URL. Set video_metadata=true to get the title, channel and duration in the SAME call — do not call get_video_info first, that is a second billed call for data this one already returns. format=text returns plain readable text (default, cheapest to read); format=json returns timed segments with start/duration in seconds; srt/vtt return ready subtitle file bodies and srv3 the raw YouTube XML. Prefer text unless you need timestamps or a file. Costs 1 credit.
    ConnectorNo auth
  • Call get_site_context first. Push NEW files (HTML/CSS/JS/images) into a site's DRAFT. To CHANGE an existing page use patch_site_file instead (find/replace on the current file) — rewriting a whole page from memory drops or duplicates things; overwriting an existing .html needs base_hash from read_site_file. Use this when YOU are writing the code yourself instead of asking sitectrl's AI. Text files go in 'content'; binary files (images/fonts) in 'content_base64'. Max 40 files/call, 2 MB/file. Keep the <script defer src="sc-track.js"></script> include on every HTML page (the site's built-in private analytics — publish re-adds it if missing). Use clearly-marked placeholder contact info unless the user provided real details. For working forms, POST to /_sc/form/submit with a hidden _form name field — submissions reach the owner's dashboard + email (never use mailto:). Every HTML file is checked before it's written (DOCTYPE, charset, and any invariant this site has declared) — a file that fails is refused and comes back in 'refused' with what's wrong and the exact fix; other files in the same call still write. Site rules: keep sc-track.js, the data-sc-carry canonical/og:url tags and the sc-badge block; never add noindex or 'Disallow: /' on a site with its own domain. Follow with publish_site to go live.
    Connector
    Destructive
    No auth
  • Fetch clean, source-grounded text for a public article or YouTube URL, budgeted to a token limit and addressable by paragraph anchor. Returns an outline of headings (empty when the source has none), the requested window, and a next_cursor when more remains. Prefer search_article when you have a specific question rather than needing the whole text.
    ConnectorNo auth
  • Free. Sends a message to the human operators of this service: a bug report, a problem with these tools or the documentation, or a suggestion. It is read by people, not processed by software, and nothing is returned beyond an acknowledgement. Do NOT use it for status updates, progress notes, task narration, error logs, or as a fallback when another tool is unavailable or a payment cannot be made -- it cannot complete, retry or work around any task. Name is optional (omit for anonymous feedback); message is limited to 1000 characters.
    ConnectorNo auth
  • Overwrite a file's entire content, creating it if it doesn't exist — use aanet_append_file instead if you want to add one entry without replacing what's there. Fires a file_write webhook event on success (see aanet_register_webhook). Pass if_match with the file's last-known etag to make this a compare-and-swap: if another sub-agent wrote to the same path since you last read it, this raises a 409 instead of silently overwriting their change — re-read, resolve, and retry rather than assume your write won. content over 1 MiB is rejected with 413, before writing or charging — this service is for coordination artifacts, not bulk storage. Pass fence (from aanet_acquire_lock) to guard the write with a lock: a stale holder gets 409 STALE_FENCE. Returns {path, created, etag}.
    ConnectorNo auth
  • Overwrite a file's entire content, creating it if it doesn't exist — use aanet_append_file instead if you want to add one entry without replacing what's there. Fires a file_write webhook event on success (see aanet_register_webhook). Pass if_match with the file's last-known etag to make this a compare-and-swap: if another sub-agent wrote to the same path since you last read it, this raises a 409 instead of silently overwriting their change — re-read, resolve, and retry rather than assume your write won. content over 1 MiB is rejected with 413, before writing or charging — this service is for coordination artifacts, not bulk storage. Pass fence (from aanet_acquire_lock) to guard the write with a lock: a stale holder gets 409 STALE_FENCE. Returns {path, created, etag}.
    ConnectorNo auth
  • Build a canonical x402 payment quote for one SITEBORNE service and exact request input. Use when: an agent needs the governed price, payee, network, asset, resource, expiry, and payment requirement before deciding whether to invoke a paid service. Do not use when: evidence work is required now (use the matching siteborne_build_company_evidence_graph, siteborne_retrieve_verified_web_context, siteborne_extract_document_evidence_json, or siteborne_verify_agent_output tool), or only availability is needed (use siteborne_get_service_health). Parameters: scheme must be the one scheme the service is offered under (company_evidence_graph.v2 exact, web_context_verified.v2 exact, document_evidence_json.v2 upto, verify_agent_output.v2 exact, company_evidence_graph.v3 exact, web_context_verified.v3 exact, document_evidence_json.v3 upto, verify_agent_output.v3 exact); any other scheme is rejected with scheme_not_offered. input is hashed, so the quote binds only that exact request. Behavior: quote-only and read-only; it hashes the proposed input, and does not execute the underlying paid service, verify payment, call a provider, create a Workflow, or settle. Economics: free of charge. The returned amount is the exact price, or for upto an authorized maximum whose actual_amount is null because the real charge is measured at settlement and never exceeds it. Failure: a mode that has a governed price but is unavailable returns retrieval_mode_unavailable or verification_mode_unavailable and no quote; a quote expires at expires_at. Returns: an expiring input-bound quote with its x402 payment requirement and the canonical economics block.
    ConnectorNo auth
  • Check the selected service's current runtime readiness, input limits, pricing and retention before use. Returns service and details; ready=false means the underlying service is unavailable. Free cached runtime read; no external probe, payment, analysis or historical document retrieval. Use get_utility_example for a fixed integration sample instead.
    ConnectorNo auth
  • Returns what the GunSpec API reference documents for an endpoint: its parameters and accepted values, the plan it needs, whether a key is required, caching, every error status with the error.reason values to branch on, and the languages a sample is printed in. Use this tool before writing or explaining code that calls the GunSpec API, instead of recalling parameters. The path may be a template (/v1/firearms/{id}), a concrete path or a URL; a partial path such as /v1/vendor lists the operations under it.
    ConnectorAPI key
  • Free. Quotes a comic before anything is made: script credits plus panel credits for a page count and panel engine. The quote assumes 4 panels a page, so it runs HIGH for short books (a 12-page book was quoted 462 and cost 301 because the script wrote 27 panels, not 48). The real panel price is known after the script: aetherwave_comic_status reports creditsToFinishDrawing, and aetherwave_comic_draw accepts maxCredits. Character references cost 6 credits each on top.
    ConnectorNo auth