Skip to main content
Glama
700,008 tools. Updated 2026-10-24 22:28

"PDM" matching MCP tools:

  • Postkey: Changes a DM automation's draft: its name (any automation) or, only for one made with the Quick form (made_with "Quick form" in postkey_get_automation), its keywords, link, message texts and followers_only. Automations built in the Flow Builder can only be renamed here: other fields are refused not_quick, and a person edits their steps in Postkey. Send at least one field. Changes are saved to its draft: a live automation keeps answering with its published version until postkey_publish_automation is called again.
    Connector
    Destructive
    OAuth
  • Claygent-style per-row research: answer ONE question about ONE company and return a JSON object matching your output_schema, with every field wrapped in its own evidence — {value, evidence_url, quote, status}. status is NEVER self-reported by the model: "found" means this code independently verified the model's quote is a VERBATIM substring of text actually fetched; "inferred" means a value was given but the quote could not be verified; "not_established" means no source answered the field, and its value is always null — never guessed, never a blended score. Sources: "web" fetches the company's own site (entity.domain required — homepage, /about, /leadership) via fetch_url; "catalog" checks entity_profile (SEC EDGAR; resolved:false for a private company is expected, not a failure); "both" (default) tries both. max_cost (USD, default 0.02, max 0.50) scales how many pages are fetched and refuses up front if it is too small to pay for even one extraction call (floor $0.002) — never silently overspends. A row where every source comes back empty costs nothing: every field is mechanically not_established with NO model call made. For a boolean/derived field (e.g. "does this company sell to healthcare"), the quote only has to SUPPORT the value — a descriptive sentence about customers/products counts, the source need not state the answer verbatim. leadership_page_status ("fetched"|"not_found"|"not_attempted", plus leadership_note) says plainly whether a leadership/team page was actually read, so a named-person field (head_of_sales) coming back not_established is distinguishable from "this company just doesn't publish one" vs. "we never checked". model_output_empty:true means the model returned nothing usable (a transport/budget problem) — every field is not_established for THAT reason, never read as 20 individual "no" judgments. Use with a fixed question + schema across many rows for "Claygent over N companies with a hard cost cap" (composes with batch callers). For picking from a fixed label list instead of extracting open fields, use classify_row (cheaper, one model call).
    ConnectorNo auth
  • Open a PDF (or an image of a form: JPG/PNG/TIFF) and detect its fields. The document comes from exactly ONE of: - `file`: a PDF/image the user attached in the chat, for clients that provide file parameters (no upload needed). A file without a download_url cannot be fetched; an upload_token covers that case, - `url`: a public link to the document, - `upload_token`: from request_file_upload, for files on the user's device or chat attachments that `file` cannot carry, - `file_base64`: exact bytes of a small file (< ~200 KB). Larger base64 passed through a model gets truncated, and a compressed or rebuilt file breaks field detection and no longer matches its template. Resolution order: saved template (deterministic) -> embedded AcroForm -> ML detection with per-field confidence. force_detect=True skips templates. ML detection scans only the first `max_pages` pages; for a longer document the result lists `unprocessed_page_indices`, which another open_pdf call with a larger max_pages scans. Returns a 24-hour `workspace_id` (`summary.workspace_id`), which every subsequent workspace tool takes. When to use: - Call `open_pdf` once to load a document and initialize a workspace (or call it again with a larger `max_pages` or `force_detect=True`). - Use `list_fields` to re-read fields in an already-open workspace without re-running detection, or `list_templates` to browse saved account templates.
    ConnectorAPI key
  • Preview how the filled page will look before fill_pdf. Costs nothing. `values` maps field id -> text (checkboxes tick on "yes"/"x"/"true"). Text placement, size and wrapping come from the same code as the export, with the same flatten/fillable flags as fill_pdf. Not simulated: a watermark or an account limit that stops fill_pdf. In the JSON, `fit` lists values that were shrunk or cut and `warnings` what to fix first. `preview_url` links to the same image; some clients (e.g. ChatGPT) do not display tool images, so there the user sees the page only through `preview_url`. Restricted data (payment cards, PHI, government ids, or authentication secrets) is not accepted by this public plugin. When to use: - Use `render_filled_preview` to verify text placement, alignment, and font sizing on each populated page at no cost before calling `fill_pdf` (required for every populated page on ML-detected layouts). - Use `render_preview` to inspect empty field bounding boxes and `field_id` labels without values. - Use `fill_pdf` once visual review is complete to generate the downloadable filled PDF.
    ConnectorAPI key
  • Open a PDF (or an image of a form: JPG/PNG/TIFF) and detect its fields. The document comes from exactly ONE of: - `file`: a PDF/image the user attached in the chat, for clients that provide file parameters (no upload needed). A file without a download_url cannot be fetched; an upload_token covers that case, - `url`: a public link to the document, - `upload_token`: from request_file_upload, for files on the user's device or chat attachments that `file` cannot carry, - `file_base64`: exact bytes of a small file (< ~200 KB). Larger base64 passed through a model gets truncated, and a compressed or rebuilt file breaks field detection and no longer matches its template. Resolution order: saved template (deterministic) -> embedded AcroForm -> ML detection with per-field confidence. force_detect=True skips templates. ML detection scans only the first `max_pages` pages; for a longer document the result lists `unprocessed_page_indices`, which another open_pdf call with a larger max_pages scans. Returns a 24-hour `workspace_id` (`summary.workspace_id`), which every subsequent workspace tool takes. When to use: - Call `open_pdf` once to load a document and initialize a workspace (or call it again with a larger `max_pages` or `force_detect=True`). - Use `list_fields` to re-read fields in an already-open workspace without re-running detection, or `list_templates` to browse saved account templates.
    ConnectorAPI key
  • Render a page with the field boxes drawn on it, to verify placement. Blue = deterministic (template/AcroForm/agent), green/orange/red = ML confidence bands (`>= 0.7`, `0.4`–`0.7`, `< 0.4`). Labels show field ids. The result has the image and a `preview_url` link to the same image; some clients (e.g. ChatGPT) do not display tool images, so there the user sees the page only through `preview_url`. Also records the field-layout visual review receipt for `page_index` required before `fill_pdf` or `save_template` on ML-detected layouts. When to use: - Use `render_preview` to inspect empty field box positions, IDs, false positives, and missed inputs before filling or after modifying geometry with `add_field`, `update_field`, `update_fields`, `remove_field`, `remove_fields`, or `prune_fields`. - Use `render_filled_preview` instead to see actual field values typeset inside those boxes and check for text overflow before calling `fill_pdf`.
    ConnectorAPI key

Matching MCP Servers

Matching MCP Connectors

  • Preview how the filled page will look before fill_pdf. Costs nothing. `values` maps field id -> text (checkboxes tick on "yes"/"x"/"true"). Text placement, size and wrapping come from the same code as the export, with the same flatten/fillable flags as fill_pdf. Not simulated: a watermark or an account limit that stops fill_pdf. In the JSON, `fit` lists values that were shrunk or cut and `warnings` what to fix first. `preview_url` links to the same image; some clients (e.g. ChatGPT) do not display tool images, so there the user sees the page only through `preview_url`. Restricted data (payment cards, PHI, government ids, or authentication secrets) is not accepted by this public plugin. When to use: - Use `render_filled_preview` to verify text placement, alignment, and font sizing on each populated page at no cost before calling `fill_pdf` (required for every populated page on ML-detected layouts). - Use `render_preview` to inspect empty field bounding boxes and `field_id` labels without values. - Use `fill_pdf` once visual review is complete to generate the downloadable filled PDF.
    ConnectorAPI key
  • Postkey: Takes a scheduled post off the schedule, or takes a post that waits for approval back out of Approvals. The post is kept as a draft. Use it before changing or deleting a scheduled post. A post that is already published cannot be unscheduled. To remove a draft for good use postkey_delete_post.
    ConnectorOAuth
  • Postkey: Lists the profile's media files (videos, images, audio, other files), 36 per page, newest first unless sort is oldest: id, kind, title, tags, length in seconds and how many posts use it. The files themselves are not returned. Use an id with postkey_attach_library_item or in library_item_ids; to add a file from the person's computer use postkey_begin_upload. Pass next_cursor as cursor for the next page (null: the last page).
    ConnectorOAuth
  • Postkey: Builds a new DRAFT Instagram DM automation from a template and returns its automation_id, for example comment-to-DM: send a link by DM when someone comments a keyword. It is made the same way as on Postkey's New automation screen. Use it for a new automation; to change one that exists use postkey_update_automation. It is not switched on: nobody gets a message until postkey_publish_automation (preview that first). Pass keyword and link_url when the template's needs_keyword or needs_link is true. The answer says back runs_on and followers_only (follow_note when follow-gated). Refused before anything is made: an X account or one not connected for DMs (invalid_arguments), and a follow-gated automation on a Facebook Page (not_on_this_network).
    ConnectorOAuth
  • Postkey: Checks one proposed X action before it happens: a reply to a DM, a reply to a post that mentioned the account, or a new post. It checks exactly that text against this profile's STOP list, opt-outs, quiet hours, limits and saved replies. For a reply, pass kind, text, event_id (the id of the DM or of the post that mentioned the account) and contact_id (the sender's numeric X user id, not their @handle); without both ids the answer is deny with code missing_inbound. Example: {"kind":"dm_reply","text":"<one of the saved replies>","event_id":"1846...","contact_id":"88213...","first_in_conversation":true}. The text is expected to be one of the customer's saved replies (postkey_x_list_templates). Postkey keeps only a hash of the text. The answer is allow (with a short-lived grant_id), wait (with retry_at when known), deny (with the reason), or needs_approval (a person must say yes in Postkey first); deny and wait are answers, not errors. When the month's included X actions are used, the answer is deny with code x_free_limit_reached (or wait with code free_daily_limit for the day). A usage_note field may carry the numbers: pass it on as it is. An allow covers exactly that text, and postkey_x_record_action records what happened. Sends nothing to X and no X send tool exists: act with the customer's own X access (full scope: postkey_x_status).
    ConnectorOAuth
  • Get a place to upload a PDF file. Use it when the document is a file, not text: a PDF you made with a file skill (your sandbox usually cannot reach Portant, so do not send it as base64), a PDF the user has, or any PDF over 1 MB. In Claude and ChatGPT, the Portant card shown with this result has an upload area: ask the user to download the file if needed and drop it there. The card then tells you the upload_id. If you can run shell commands and have the file, PUT it instead, for example: curl -T file.pdf -H "Content-Type: application/pdf" <upload_url> (add the same Authorization header you use for Portant, if any). Then pass upload_id to send_for_signature. PDF only: save a Word file as PDF first.
    ConnectorOAuth
  • ACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1847 STRUCTURED data sources (SEC filings, FRED/BLS economics, FDA, USPTO patents, markets, science, government records, etc.) in ONE call — this is NOT open-web search. Decomposes your question into focused facets, routes each to the right one of 7,013 tools IN PARALLEL, and returns a findings packet: verbatim evidence + confidence + source + fetched_at + a stable pipeworx:// citation per finding, with explicit gaps[] for facets the data couldn't answer (never invented). Best for broad/multi-part questions over structured data ("compare X and Y's regulatory + financial exposure", "research the filings + market picture for ACME"). For a single lookup use ask_pipeworx (one LLM call, not many). For BREAKING or colloquial CURRENT-NEWS / "what's the world saying about X" topics, prefer ask_pipeworx — it routes to live news APIs and the *-news-feeds packs; deep_research returns mostly empty gaps[] when the topic isn't in the structured catalog. Second-hop iteration: depth:"standard" re-angles unanswered gaps (gap recovery); depth:"thorough" additionally chases the best leads from the first pass — so multi-step questions resolve in one call. Every finding carries a `hop` field and a citation_uri — a resolvable pipeworx:// record URI, present only when the source emits one that resources/read can actually serve, so a citation you get back is always fetchable. "standard" and "thorough" also return contradictions[] flagging findings that disagree. Large records are semantically excerpted to the passages relevant to each facet (not head-truncated), so answers deep in a long filing/series aren't missed. Expect 15-60s (thorough with its follow-up + contradiction pass: up to ~90s).
    ConnectorNo auth
  • What did a web page say on a given date? Finds the archived capture of a URL nearest that date across the Internet Archive Wayback Machine, Common Crawl and Arquivo.pt, reads it, and returns the readable text (HTML stripped) with the capture timestamp, a link to the archived copy, and the GAP between the date asked for and the capture actually used (e.g. "Captured 1.5 day(s) before the requested date"). One call replaces the find-capture, fetch-record, parse-HTML chain. If no archive holds a capture within max_gap_days (default 30) it answers status "no_capture" and names the nearest capture before and after the date with their gaps, so a distant capture is never passed off as the page on that date. Every archive's outcome is listed in sources[]; one that timed out or errored says so with its upstream status, and if all of them failed the answer is error "archives_unavailable", not no_capture. Captures are immutable and cached by capture id; served_from says whether the text came from cache or upstream. Use archive_compare to see what changed between two dates.
    ConnectorNo auth
  • List the current working fields and workspace summary for an open PDF workspace. Returns `{"summary": ..., "fields": [...]}` for `workspace_id`, reflecting any in-workspace edits made via `add_field`, `update_field`, `update_fields`, `remove_field`, `remove_fields`, or `prune_fields`. Each field entry includes `id`, `name`, `type`, `page_index` (0-based), bounding-box percentages (`x`, `y`, `w`, `h`), `confidence`, `source` (`'template'`, `'acroform'`, `'ml'`, or `'agent'`), and `needs_name_review`. Filtering: pass a 0-based `page_index` to return only the fields on that single page, or omit `page_index` (pass `None`) to list fields across all pages in the workspace. When to use: - Use `list_fields` to inspect current field IDs, coordinates, or labels in an already-open workspace (for example, after editing fields or narrowing to one page) without re-running detection. - Use `open_pdf` to load a document for the first time and create a workspace. - Use `list_templates` to list saved, reusable account-level templates rather than the fields of an active workspace.
    ConnectorAPI key
  • List the current working fields and workspace summary for an open PDF workspace. Returns `{"summary": ..., "fields": [...]}` for `workspace_id`, reflecting any in-workspace edits made via `add_field`, `update_field`, `update_fields`, `remove_field`, `remove_fields`, or `prune_fields`. Each field entry includes `id`, `name`, `type`, `page_index` (0-based), bounding-box percentages (`x`, `y`, `w`, `h`), `confidence`, `source` (`'template'`, `'acroform'`, `'ml'`, or `'agent'`), and `needs_name_review`. Filtering: pass a 0-based `page_index` to return only the fields on that single page, or omit `page_index` (pass `None`) to list fields across all pages in the workspace. When to use: - Use `list_fields` to inspect current field IDs, coordinates, or labels in an already-open workspace (for example, after editing fields or narrowing to one page) without re-running detection. - Use `open_pdf` to load a document for the first time and create a workspace. - Use `list_templates` to list saved, reusable account-level templates rather than the fields of an active workspace.
    ConnectorAPI key
  • Batch-update multiple existing fields in the active workspace in a single call. Each item in `updates` is `{"field_id": ..., x?, y?, w?, h?, name?, field_type?, align?, vertical_align?}`. Only keys provided with non-`None` values overwrite the target field's attributes; omitted keys keep their existing values, and edited ML fields (`source="ml"`) are promoted to `source="agent"` (`confidence=1.0`). Partial-failure & persistence semantics: unknown `field_id`s are skipped and reported in `unknown_field_ids` while all valid updates in the batch are applied and listed in `updated`. However, an invalid `field_type`, `align`, or `vertical_align` raises an error and aborts the entire batch without saving partial edits. Changes persist immediately in `workspace_id` without affecting saved templates unless `save_template` is called. When to use: - Prefer `update_fields` over repeated `update_field` calls whenever renaming, repositioning, or resizing 2 or more fields at once. - Use `update_field` for a single field, or `add_field` to create new fields.
    Connector
    Destructive
    API key
  • Permanently delete a single false-positive field from the active workspace by its `field_id`. Permanence & unknown-id behavior: immediately removes `field_id` from `workspace_id` and returns `{"removed": 1, "fields_remaining": <count>}` (or `{"removed": 0, "fields_remaining": <count>, "unknown_field_ids": [field_id]}` if `field_id` is not found). Deletion is permanent within the active workspace — to restore a deleted field, re-add it with `add_field` or re-open the document with `open_pdf`. Saved account templates are unaffected unless `save_template` is called afterward. When to use: - Use `remove_field` to delete one specific false-positive field box (e.g. a stray box over printed text). - Use `remove_fields` to delete 2 or more known `field_id`s in a single batch call. - Use `prune_fields` for rule-based bulk filtering by `confidence_below`, `width_below`, `height_below`, `field_type`, or `page_index`.
    Connector
    Destructive
    API key
  • Permanently delete multiple fields by ID from the active workspace in a single batch mutation. ID-list, partial-failure & persistence semantics: deduplicates `field_ids`, deletes every matching field from `workspace_id`, and commits the updated workspace state immediately. Returns `{"removed": <count>, "fields_remaining": <count>}`. Any ID in `field_ids` that does not exist in the workspace is ignored during deletion and reported in sorted `unknown_field_ids` while all valid IDs in the batch are still removed (no error is raised for unknown IDs). Deletion is irreversible within the active workspace — removed fields can only be recovered via `add_field` or a fresh `open_pdf` call, and saved account templates are not altered unless `save_template` is called afterward. When to use: - Use `remove_fields` when deleting an explicit list of 2 or more known false-positive `field_id`s at once. - Use `remove_field` when deleting a single `field_id`. - Use `prune_fields` for criteria-based bulk removal by `confidence_below`, `width_below`, `height_below`, `field_type`, or `page_index` instead of listing individual IDs.
    Connector
    Destructive
    API key
  • Bulk-delete fields matching ALL given criteria (detection noise) in the active workspace. Filter & guardrail semantics: permanently deletes every field in `workspace_id` that satisfies **all** non-`None` filter criteria (`field_type`, `confidence_below`, `width_below`, `height_below`, `page_index`). At least one criterion **must** be provided — omitting all five criteria (`None`) is rejected with `{"error": ...}` to prevent accidentally deleting all fields. Thresholds (`confidence_below`, `width_below`, `height_below`) are strictly-less-than (`<`); `width_below` and `height_below` are in `%` of page width/height (`0.0`–`100.0`). Pass `exclude_ids` as a guardrail allowlist of `field_id`s that must be preserved even when they match the criteria. Returns `{"removed": <count>, "removed_ids": [...], "fields_remaining": <count>}` so deletions are auditable (and reversible via `add_field`). Does not affect saved templates unless `save_template` is called. When to use: - Use `prune_fields` for rule-based bulk cleanup of detection noise (e.g. tiny table cells or low-confidence boxes). - Use `remove_fields` to delete an explicit list of known `field_id`s, or `remove_field` to delete a single field by ID.
    Connector
    Destructive
    API key
  • Postkey: Lists the profile's posts, newest first, one page at a time: id, status, title, the start of the caption, type, keyword, time (time_means: posted, scheduled, planned, updated or created), the accounts each goes to, and can_edit (false: postkey_update_post would refuse it; for a draft, edit_note says why and what to do). Use it to find a post id; use postkey_get_post for one post's full caption, media and each account's outcome, postkey_list_waiting_for_approval for what waits for a person, and postkey_get_post_stats for views and likes. Pass next_cursor as cursor for the next page (null: the last page). Only the newest 1,000 posts are listed.
    ConnectorOAuth