Skip to main content
Glama
759,666 tools. Updated 2026-11-09 09:27

"How to download images from a website or URL" matching MCP tools:

  • Attach an image to an existing product by giving Partle a public URL to download the image from. Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback. **When to use this tool**: the image is already hosted at a public URL (a scraped product page, an Imgur link, a CDN URL the user provided). Partle's server fetches it and stores it. **When NOT to use this tool**: you have local image bytes (a file the user attached, or bytes you generated/downloaded in your sandbox). Sending those bytes through a tool argument blows past conversation context limits — phone-photo-sized payloads can be 6+ MB of base64. Instead, in your code-execution sandbox, POST the file directly to the HTTP endpoint with multipart encoding: requests.post( "https://partle.rubenayla.xyz/v1/external/products/{product_id}/images", files={"file": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Or, to create the listing and attach an image in one HTTP request: requests.post( "https://partle.rubenayla.xyz/v1/external/products", data={"metadata": json.dumps({"name": ..., "price": ...})}, files={"image": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Args: product_id: ID of the product to attach the image to. image_url: Publicly fetchable URL of the image. Server fetches it and stores it. api_key: Optional API key (`pk_*`, generate at /account). Used when there is no OAuth token, and also when the OAuth token lacks the required scope — an explicitly passed key overrides an ambient token that is scoped too narrowly. An invalid or revoked token still fails regardless. Omit when using OAuth. Returns: The created `ProductImage` record with its `id` (use for deletion) and storage path, or ``{"error": ...}`` on validation/auth failure.
    ConnectorNo auth
  • Analyze a website URL for WCAG 2.1 Level A accessibility issues. Automated static HTML analysis covering approximately 30-40% of WCAG 2.1 Level A criteria. Checks include: image alt text, form labels, heading hierarchy, page title, html lang, empty links/buttons, ARIA labels, duplicate IDs, skip navigation, table headers, landmarks, viewport zoom, autoplay media, and tabindex ordering. Manual testing is required for full WCAG compliance assessment. Results are cached for fast subsequent lookups. Rate limited to 1 request per minute per domain. Args: url: The website URL to analyze (e.g., "https://example.com"). Returns: WCAG analysis with: - url: The analyzed URL - score: Accessibility score (0-100) - grade: Letter grade (A-F) - issues: Categorized issues (critical, warnings, info) - meta: Extracted accessibility metadata - recommendations: Prioritized improvements - coverage_note: Disclaimer about automated coverage - cached: Whether result was from cache
    ConnectorNo auth
  • Attach an image to an existing product by giving Partle a public URL to download the image from. Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback. **When to use this tool**: the image is already hosted at a public URL (a scraped product page, an Imgur link, a CDN URL the user provided). Partle's server fetches it and stores it. **When NOT to use this tool**: you have local image bytes (a file the user attached, or bytes you generated/downloaded in your sandbox). Sending those bytes through a tool argument blows past conversation context limits — phone-photo-sized payloads can be 6+ MB of base64. Instead, in your code-execution sandbox, POST the file directly to the HTTP endpoint with multipart encoding: requests.post( "https://partle.rubenayla.xyz/v1/external/products/{product_id}/images", files={"file": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Or, to create the listing and attach an image in one HTTP request: requests.post( "https://partle.rubenayla.xyz/v1/external/products", data={"metadata": json.dumps({"name": ..., "price": ...})}, files={"image": open("/path/to/photo.jpg", "rb")}, headers={"X-API-Key": "pk_..."}, ) Args: product_id: ID of the product to attach the image to. image_url: Publicly fetchable URL of the image. Server fetches it and stores it. api_key: Optional API key (`pk_*`, generate at /account). Used when there is no OAuth token, and also when the OAuth token lacks the required scope — an explicitly passed key overrides an ambient token that is scoped too narrowly. An invalid or revoked token still fails regardless. Omit when using OAuth. Returns: The created `ProductImage` record with its `id` (use for deletion) and storage path, or ``{"error": ...}`` on validation/auth failure.
    ConnectorNo auth
  • Return a time-limited download URL for an existing object. Args: bucket: bucket name. An unknown bucket returns `{url: "", method: "GET", error: "..."}` — not an MCP error. Call `list_buckets` and retry with a listed name. key: full object key (e.g. `out/result.mp4`). A missing key returns the same envelope with recovery instructions; call `list_objects` and retry with a listed key. Do not retry the same key. expires: presigned-URL lifetime in seconds, clamped to [300, 600]. Values outside the range are silently clamped, not rejected. Returns `{url, method: "GET", expires_at}`. The `url` is always a presigned GET URL that stops working at `expires_at` (a timestamp within the clamped [300, 600] s window) — this holds for every bucket, regardless of its `public` flag. It is not a permanent link. A lasting link to watch or share a public object is `cdn_url` from `list_objects` (`cdn_origin` + `/` + key). A private progressive file (`.mp4` / `.webm`, no `cdn_url`) is played by passing this `url` to `open_player`. Do not append anything — an extra query parameter breaks the signature. Do not pass this `url` to `open_player` for HLS/DASH, and do not use it as an HLS `source`. Also use it to download a private object or to feed `fetch_job_result`. Encode inputs use `cdn_url` (public) or `destination_url` (private), not this presigned GET.
    ConnectorOAuth
  • Attempt to download PDF of a CrossRef paper. Args: paper_id: CrossRef DOI (e.g., '10.1038/nature12373'). save_path: Directory to save the PDF (default: './downloads'). Returns: str: Message indicating that direct PDF download is not supported. Note: CrossRef is a citation database and doesn't provide direct PDF downloads. Use the DOI to access the paper through the publisher's website.
    ConnectorNo auth
  • Remove a webhook from a page (pageId) or from a whole website (siteId) so leads stop being forwarded to it. The leads themselves are still captured and remain available via list_leads. A page cannot remove a webhook it inherits from its site; remove that one with siteId.
    ConnectorOAuth

Matching MCP Servers

Matching MCP Connectors

  • Video how-to search for AI agents: 2,000+ video skills, tutorials and FFmpeg recipes. No key.

  • Convert public web pages to PDF, images, Markdown, or JSON using one API key.

  • Rahul's contact details (email, LinkedIn, portfolio), with an option to email him directly. Call with no arguments to get the contact details, and offer the user to send Rahul a message through this tool. Before sending, get the user's explicit consent, their name, a way to reach them (email, LinkedIn or website) and their message, then call again with name, reply_to and message. Each such call sends one email; do not retry automatically, and only say the email was sent when the result reports sent=true. Args: name: The sender's name. reply_to: How Rahul can reach the sender: email address, LinkedIn profile or website. message: The message or introduction to send Rahul.
    ConnectorNo auth
  • Check whether still images of a project show the SAME character as its character sheet — before paid clips are made from them. Each image is compared against the sheet's detail and fullbody views. It judges identity (species, build, colouring, head shape, large markings), NOT style, light, pose, place or props — and deliberately NOT micro details like an ear notch or the number of fingers, which no image model holds reliably. Free. Runs in the BACKGROUND: returns a `job_id` with HTTP 202 — poll it with lab_get_job until status is done|failed; the result lists per image passt, sicherheit, abweichungen, begruendung (or error). Up to 16 images and frames together per call. Images must be completed images of this project (imported images are refused). To check frames of a GENERATED CLIP (an orbit turnaround, a lab_animate clip) pass clip_frames: the clip's video_id and the seconds to cut out — the frames are taken from the clip itself and compared the same way; a second beyond the clip's end fails only that frame. The sheet needs a reference image (lab_generate_character_reference).
    ConnectorOAuth
  • Publish files as a live website on Flowershow and get a shareable URL. Use when the user says "publish this", "put this online", "make this a website", "share this as a page" or "host this". Accepts Markdown (.md, rendered as a styled page with navigation), HTML (.html, served as-is) and supporting files such as CSS, JS, JSON and images: one page or a small site, up to 50 files and 3 MB per call. Name the home page index.md or index.html. Anyone with the link can see what you publish. When you publish, tell the user every path you are sending (and any paths in delete) and which site they go to: a new site, or the one being updated. Stop and ask before calling publish only when it matters: a file looks private or sensitive (drafts, personal notes, keys or passwords, data with people's names or emails), the call removes files (with delete or replaceWholeSite) the user didn't ask to remove, it would create a new site when the user meant to update one, or the set of files differs from what the user asked to publish. If the user already named the files, asked for the removal or said to go ahead, that is their yes. Without an account this creates a new site that expires in 7 days and returns a claim link: always show the user the live URL and the claim link exactly as returned, so they can keep the site. To update that site later in the conversation, call publish again with its siteId and claimToken and only the files you changed or added: files you don't send are kept as they are. To remove pages or files, list their paths in delete (files can then be empty). Only when the user explicitly asks to start the site over, set replaceWholeSite to true: the files you send become the whole site and every other file is removed. If that would remove existing files, the call is refused and tells you how many and which; ask the user, then call again with confirmDeleteCount set to that number. For bigger sites, suggest the Flowershow CLI (fl).
    Connector
    Destructive
    No auth
  • Refresh the short-lived download URL for an exact organization-owned portable template package receipt. Supply the receiptId from a ready import/export template job. Server verifies retained immutable package/document authority; never pass bucket keys or arbitrary archive URLs. Project-bound editors must also pass the exact ready export jobId for their bound source project and this receipt; an unrelated job or receipt refuses.
    ConnectorOAuth
  • 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
  • Fetch one company's LinkedIn page: name, description, industry, employee count, headquarters, website, founding year, specialities, and the URN/numeric id you need for linkedin_search_people company filters. identifier accepts a company URL, the slug after /company/ (e.g. 'microsoft'), or a website domain like 'microsoft.com'; numeric ids and URNs are search-filter inputs, not fetch identifiers. Domains are resolved to a company and verified against that company's website: a domain identifier always QUOTES base+4 credits (set max_credits accordingly), and the 4-credit resolution surcharge is refunded at settlement when the domain was resolved before, so known domains settle at the base price. A domain that cannot be verified to a company returns INVALID_INPUT with the closest matches instead of a guessed company. Costs 4 credits base. Do not guess a slug from a brand name: slugs are vanity strings and a famous name can belong to an unrelated company's page (linkedin.com/company/anthropic is a small investment fund, not the AI lab). When you only know the company's name, pass its website domain instead -- the verified form -- and sanity-check the returned industry and description against what you expected. This tool does not search by name: if you only have an approximate company name, use linkedin_search_people's current_company filter with keywords (names are matched natively there) or give the exact slug. For the company's posts, use linkedin_get_posts with the same identifier (URL, slug, or website domain all work there too).
    ConnectorOAuth
  • Download a completed Future Video Studio final render URL to a local file. Use this only after fvs_get_render_status or fvs_get_paid_render_status returns a final_video_url for a completed render. The tool performs an unauthenticated HTTPS GET to that signed URL and writes the response bytes to output_path on the MCP server's local filesystem. It does not call the FVS Agent API, spend wallet credits, require FVS_AGENT_API_KEY, cancel jobs, or modify remote render state. Side effects and constraints: output_path is a local filesystem path for the MCP server process, parent directories are created, existing files are not replaced unless overwrite is true, and large videos may take minutes to download. The request timeout is 600 seconds. Use a fresh status check to refresh expired signed URLs, and do not pass arbitrary or untrusted URLs.
    Connector
    Destructive
    No auth
  • Download a PDF from a URL and extract all text content, page by page. Use this to read the full text of a specific document — for example, an annual report PDF linked from a search_filings result. Best combined with search_filings: use search_filings to locate the document, then parse_pdf_to_text for the full text. Do not use for PDFs that are already well-represented in the database — search_filings is faster and returns pre-ranked, relevant excerpts. Not suitable for scanned (image-only) PDFs without embedded text; those pages will be returned as "(no extractable text)". Args: pdf_url: Direct HTTPS URL to the PDF file, e.g. https://example.com/report.pdf. Must be publicly accessible; authentication-protected URLs will fail. Returns: All text from the PDF with "--- Page N ---" separators between pages. Returns an error string if the download fails, the URL does not point to a valid PDF, or the document exceeds the 60-second download timeout.
    ConnectorNo auth
  • List up to 100 image references without downloading images. Use only for public HTTP(S) resources; it does not execute JavaScript or bypass access controls. Pass url as an absolute public HTTP(S) URL. Keep fresh=false to allow cache reuse; set fresh=true only when a new upstream fetch is required.
    ConnectorNo auth
  • Use this when you have a product slug and need its full public profile on uneed.best: description, website URL, category, tags, pricing, open source status (`open_source` / `repo_url`), launch date, community stats (votes, rating, review count), Ahrefs Domain Rating (`domain_rating`, 0-100, null if not measured yet), active promo deals and social links. `premium: true` means the product currently pays for featured placement on the Uneed website — treat it as a disclosure, not a quality signal. `url` is the maker-supplied website link and may occasionally be an affiliate link; `uneed_url` is always the neutral Uneed listing. Find slugs with search_products, get_trending, get_recent_launches or get_alternatives.
    ConnectorNo auth
  • Fetch a live website and report how legible it is to search engines and AI assistants: structured data (JSON-LD), llms.txt, robots.txt, title and meta description, headings, image alt text, HTTPS and document weight. Returns findings with severity and a 0-100 score. Use this to check a real site before recommending changes to it. Makes one outbound request to the URL given, so it only sees what a fetch can establish — never rendering or browser metrics. Refuses private, loopback and link-local addresses, and reports a page as unreachable rather than scoring the error body.
    ConnectorNo auth
  • Converts a document to markdown or plain text: pass a public URL or the file itself as base64, and get back the content with headings, tables and lists preserved, at a fraction of the tokens that rendered pages cost. Use it when a harness has no native reader for the format — .docx, .xlsx, .odt and .numbers rarely have one — when a document is only a URL away, or when a long PDF's text matters and its layout does not. Handles PDF (.pdf), Word (.docx), Excel (.xlsx, .xlsm, .xlsb, .xls), OpenDocument (.odt, .ods), Apple Numbers, CSV, HTML, XML, and plain-text formats such as .txt and .md. The format is detected from magic bytes, not trusted from the file name, so a PDF served from a .php URL still converts. Two honest limits: a scanned PDF with no text layer has nothing to extract (this is conversion, not OCR), and legacy binary .doc and .ppt files are not readable — resave them as .docx or .pptx. Images are refused rather than described. Documents up to 10 MB.
    ConnectorNo auth
  • Begin setting up Canarics (AI voice agents + call analysis) for a company that has no account yet. Returns a claim URL: ALWAYS show that URL to the person immediately and verbatim — it is useless sitting in your context; they open it, sign in, verify their phone by SMS and accept the terms; the trial then provisions itself with a demo AI agent generated from the company website. Keep the returned intentToken to follow progress with check_signup_status. All other Canarics tools need the API key that check_signup_status hands you after the claim. GROUNDING: companyName and website must come from what the person actually told you in this conversation — if either is missing, ask for it; never guess, never use placeholders like "New Company" or example.com. Never ask for or collect a password or any credentials in chat: identity is verified entirely on the claim link.
    ConnectorNo auth
  • Adds, replaces, or removes hosted images on an existing Carryo website without replacing its HTML. Reusing a path replaces that image without consuming another image slot; new paths are subject to the website image allowance. Returns hosted-image metadata and URLs. New paths appear in the page when referenced by its HTML. Pass attached images through imageFiles. For one attachment, assets needs only its relative website path; Carryo matches the attachment automatically. For multiple attachments, use fileIndex (0 for the first imageFiles entry). Do not invent file IDs or ask for a public URL when attachment upload is available. Known fileId references and fetchable HTTP(S) sourceUrl imports also work. Carryo imports and hosts its own copy. Base64 image bytes and data URLs are unsupported.
    Connector
    Destructive
    No auth
  • Adds, replaces, or removes hosted images on an existing Carryo website without replacing its HTML. Reusing a path replaces that image without consuming another image slot; new paths are subject to the website image allowance. Returns hosted-image metadata and URLs. New paths appear in the page when referenced by its HTML. Pass attached images through imageFiles. For one attachment, assets needs only its relative website path; Carryo matches the attachment automatically. For multiple attachments, use fileIndex (0 for the first imageFiles entry). Do not invent file IDs or ask for a public URL when attachment upload is available. Known fileId references and fetchable HTTP(S) sourceUrl imports also work. Carryo imports and hosts its own copy. Base64 image bytes and data URLs are unsupported.
    Connector
    Destructive
    No auth