The MCP tool directory.
Each row is one tool from one provider. Tools sharing a name across providers (e.g. search) are listed separately because they aren't interchangeable.
[ 3869 tools indexed ]
[ all tools ]
30 / 3869
divide
[ remote ]Division calculator that divides first number by second number
division
[ remote ]Divides the first number by the second number
dkim_analytics
[ remote ]Get DKIM analytics for a specific domain
dmarc_aggregate_detailed_stats
[ remote ]Get DMARC aggregate report detailed statistics for a date range
dmarc_aggregate_per_country
[ remote ]Get DMARC aggregate report broken down by country
dmarc_aggregate_per_host
[ remote ]Get DMARC aggregate report per sending host with compliance status
dmarc_aggregate_per_org
[ remote ]Get DMARC aggregate report per reporting organization
dmarc_aggregate_per_result
[ remote ]Get DMARC aggregate report grouped by pass/fail result
dmarc_aggregate_per_sending_source
[ remote ]Get DMARC aggregate report grouped by sending source (IP/source)
dmarc_charts_app
[ remote ]Interactive DMARC charts and analytics — opens a visual dashboard with pie/bar charts for DMARC pass/fail results by country, and domain health score cards.
dmarc_forensic_data
[ remote ]Get DMARC forensic (RUF failure) report data
dns_lookup
[ remote ]Lookup a DNS record for a domain. type must be one of: dmarc, spf, dkim, bimi, mx, a, aaaa, cname, txt, ns, soa, caa, ptr, mtasts
dns_lookup_app
[ remote ]Interactive DNS lookup tool — opens a tabbed UI for DNS lookups, WHOIS, DMARC record generator, and SPF record generator. Use this when the user wants to explore DNS records interactively.
doc
[ remote ]Full documentation for Ahrefs API v3 and the corresponding MCP tools. You must use this tool to get the input schema for any other tool. The documentation is returned in OpenAPI format. It can be used to craft a request to the API v3 directly, or to the MCP server. Online documentation for the Ahrefs API v3 is also available at https://docs.ahrefs.com/docs/api/reference/introduction
docfork_read_url
[ remote ]Fetches and returns the full content of a documentation page as markdown. This is ESSENTIAL for getting complete, detailed information after searching. Always use this to read URLs from docfork_search_docs results to get the actual documentation content.
docfork_search_docs
[ remote ]Search documentation across GitHub repositories or the web. For targeted searches INSIDE a specific library's documentation, use the docforkIdentifier parameter (author/repo format). Extract from GitHub URLs (e.g., github.com/facebook/react → 'facebook/react') and include in ALL subsequent searches about that library for focused, accurate results.
docs_edit
[ remote ]Apply Google Docs batchUpdate requests to edit documents — insert or delete text, tables, text styles, headings, images, page breaks, and positional content (https://developers.google.com/docs/api/reference/rest/v1/documents/batchUpdate). Examples: append text {"insertText":{"endOfSegmentLocation":{},"text":"..."}}, insert 3x3 table {"insertTable":{"rows":3,"columns":3,"endOfSegmentLocation":{}}}, or replace every occurrence {"replaceAllText":{"containsText":{"text":"old","matchCase":true},"replaceText":"new"}}. Requires Read & Write FGAC access. Doc comments live in Drive API — use comments_read / comments_add. Create new documents with google_api_modify (POST v1/documents). Inserted text inherits the target paragraph's style; add updateParagraphStyle NORMAL_TEXT sweep when replacing body content. Deletes are auto-verified: response ends with "verified" or returns a warning plus the actual end index if a delete applied only partially (ranges crossing table boundaries may do this despite success).
docs_read
[ remote ]Fetch the full Markdown of one documentation page by the `slug` from a documentation search result. The response URL is the page's citable source. Use `index` for the documentation landing page. This operation requires no authentication.
docs_read
[ remote ]Fetch the full Markdown of one documentation page by the `slug` from a documentation search result. The response URL is the page's citable source. Use `index` for the documentation landing page. This operation requires no authentication.
docs_read_document
[ remote ]Read a Google Docs document exposed by the user's FGAC rules. Returns the raw Docs API document resource (title, body content as structured JSON). Large documents: trim with the optional "fields" mask (e.g. "title,body.content"), or read in windows by passing offset and a limit sized to YOUR tool-result budget (chars of serialized JSON, max 200000/call) — each response reports total_chars and next_offset; concatenate data strings in offset order. To edit the document use docs_edit; comments live in the Drive API — use comments_read.
docs_search
[ remote ]Search the documentation by keyword and return ranked sections with deep links, page slugs, and matching snippets. Use `docs_read` with a result's `slug` to fetch the full page. Set `contents` to `highlights` to include matching passages. This operation requires no authentication.
docs_search
[ remote ]Search the documentation by keyword and return ranked sections with deep links, page slugs, and matching snippets. Use `docs_read` with a result's `slug` to fetch the full page. Set `contents` to `highlights` to include matching passages. This operation requires no authentication.
documents_archive
[ remote ]Archive a document by ID. Uses PandaDoc delete endpoint with forever=false for reversible deletion.
documents_audit_trail_get
[ remote ]Retrieve audit trail for a document.
documents_content_get
[ remote ]Returns the textual content of a document in plaintext or markdown format.
documents_create
[ remote ]# Create document Create a new PandaDoc document. Pass a single `request` object and set its `source` to choose how the document is created: - `source: "template"` — from an existing template. Required: `template_uuid`. Also accepts `name`, `recipients`, `fields`, `tokens`, `metadata`, `tags`, `images`, `pricing_tables`, `tables`, `texts`, `folder_uuid`, `owner`, `detect_title_variables`, `content_placeholders`. - `source: "markdown"` — from markdown content. Required: `name`, `document_markdown`. Also accepts `recipients` (individual recipients only; groups are not supported), `role_fields`, `folder_uuid`. - `source: "file"` — from a downloadable PDF or DOCX file URL. Required: `name`, `url`. Also accepts `recipients`, `parse_form_fields`, `fields`, `tokens`, `metadata`, `tags`, `folder_uuid`, `owner`. The schema is polymorphic on `source`: each source accepts **only** its own parameters. Passing a parameter that belongs to another source is rejected by validation, so you never need to guess which fields are ignored. ## Template Create a document populated from an existing PandaDoc template. Optionally set fields, tokens, pricing tables, recipients, and other template data. ## File Create a document from a PDF or DOCX file referenced by `url`. The URL must be directly downloadable (no auth, no HTML interstitials) — presigned S3/GCS/Azure URLs or direct CDN links work best; Google Drive and Dropbox share links do not (they return HTML, not the file). Creation is asynchronous: the document starts in Uploaded status and transitions to Draft after some time (or to Error if the file is invalid). Poll `documents_status_get` until Draft, then edit or send. To parse fillable PDF form fields, set `parse_form_fields: true` and provide `fields` mapping **every** form field name to a recipient role — omitting any causes failure. ## Markdown Create a new document in PandaDoc from markdown when there is only text representing the document content. Document content must be generated according to the guidelines below. The response includes a `document_url` field with a direct URL to open the created document in PandaDoc. Document creation is asynchronous. After this tool returns, the document starts in Uploaded status and transitions to Draft after some time (or to Error if creation fails). The document must be in Draft status before it can be edited or sent. ### Markdown guidelines You can use standard CommonMark and GitHub-Flavored Markdown (tables, strikethrough, etc), plus the following custom extensions: #### Custom Syntax Extensions ##### 1. Variables Variables are placeholder values that the document creator fills in PandaDoc before sending to recipients. Prioritize variables over fields for any value that the sender controls or pre-fills, even if it may be visible to recipients. **Syntax:** `[VariableName]` or `[Variable.Name]` or `[Multi.Part.Variable]` - Can include underscores, numbers, and multiple dot-separated parts **Use variables for values controlled by the document creator:** - Document metadata: `[Effective.Date]`, `[Agreement.Number]`, `[Contract.Value]` - Company/sender information: `[Company.Name]`, `[Company.Address]` - Pre-calculated values: `[Invoice.Total]`, `[Discount.Amount]` - Recipient information already known: `[Recipient.CompanyName]`, `[Recipient.FirstName]` **Key principle:** If the sender controls the value, use a variable. ##### 2. Fields Fields are interactive form elements that recipients fill in or interact with during the signing process. Recipients see these as input boxes, checkboxes, or signature areas. **Use fields for values controlled by the recipient:** - Recipient signatures: `[[signature]]` - Recipient personal data they must enter: `[[text]]`, `[[email]]`, `[[phone]]`, `[[date]]` - Recipient choices/consents: `[[checkbox]]` - Information only the recipient knows or decides **Key principle:** If the recipient controls the value, use a field. Fields can be prefilled with default values, but are typically left empty for the recipient to fill. **Syntax:** `[[field_type attributes]]` **Field Types:** - `text` - Text input field - `email` - Email input field - `phone` - Phone number input field (**`format` is required** — see below) - `number` - Number input field - `date` - Date input field - `checkbox` - Checkbox field - `signature` - Digital signature field - `dropdown` - Dropdown selection field (**`option` is required** — see below) **Attributes (HTML-style):** - `required="true"` - Makes field required - `placeholder="text"` - Placeholder text - `checked="true"` - Pre-checked (checkbox only) - `value="timestamp"` - For date fields, use UNIX timestamp with millisecond precision (e.g., value="1718406000000"). For other fields, use plain text (e.g., value="John Doe"). - `format="US"` or `format="international"` - **Required for `phone` fields.** Must be exactly `"US"` or `"international"`. There is no default — omitting it causes a validation error. - `date_format="yyyy/MM/dd"` - Date format in ICU notation (e.g., `"dd/MM/yyyy"`, `"MM-dd-yyyy"`). Defaults to `"yyyy/MM/dd"` if omitted. - `option="Text"` - **Required for `dropdown` fields.** Repeatable — add one per option (e.g., `option="Yes" option="No"`). To assign a stable UUID to an option, use `option="uuid:Text"` format. - `id="Client_Text1"` - Specify an external ID that describes who should fill this field and what it represents (e.g., `id="Client_Signature"`, `id="Landlord_FullName"`, `id="Buyer_Email"`). Use the pattern `<RecipientRole>_<FieldPurpose>` so the field can later be assigned to the correct recipient. Multiple fields MAY share the same ID (they'll be synced — when one is filled, all are filled with the same value), but they MUST have the same type and attributes. **Examples:** - `[[text placeholder="Enter name"]]` - `[[email required="true" placeholder="Email address"]]` - `[[phone format="US"]]` - `[[phone format="international"]]` - `[[number]]` - `[[date required="true" value="1718406000000"]]` - `[[date date_format="dd/MM/yyyy"]]` - `[[checkbox checked="true"]]` - `[[dropdown option="Yes" option="No"]]` - `[[dropdown option="Yes" option="No" value="Yes" placeholder="Choose..."]]` **Important:** Fields with the same ID must have the same type and attributes. For example, you cannot have `[[text id="Field1"]]` and `[[email id="Field1"]]` in the same document as well as `[[text id="Field2" placeholder="Full Legal Name" ]]` and `[[text id="Field2"]]` because they have different attributes. **Dropdown constraints:** - At least one `option` attribute is required. - Option texts must be unique within the dropdown. - If `value` is set, it must match one of the defined option texts exactly; otherwise a validation error occurs. ##### 3. Standalone Checkboxes Checkboxes use GFM syntax but can appear anywhere, not just in lists: - `[ ]` - Unchecked - `[x]` - Checked - Can be used inline, standalone, or in task lists ##### 4. Page Breaks **Syntax:** `---` (three hyphens) creates a page break. **IMPORTANT:** Page breaks should be rare and intentional. Most documents don't need page breaks. Only use `---` when content **must** be on separate pages for a specific reason: - Legal/structural requirement - Document structure demands it **Do NOT use `---`:** - Between sections (use headings: `## Section Title`) - As visual decoration (use blank lines) - Simply because there's a section transition ### Limitations (Features NOT Supported) **Do NOT include:** - Blockquotes inside lists - Images inside links inline with text (e.g., `[](link)`)
documents_details_get
[ remote ]Retrieve document structure: recipients, fields, tokens, pricing, and per-recipient signing progress. Does not return extracted metadata — use `documents_metadata_get` for that.
documents_fields_assign
[ remote ]Assign, reassign, or unassign document fields to recipients. The document must be in draft status. Provide a list of field-to-recipient mappings. Set recipient_id to null to unassign a field. Use get document details to obtain field UUIDs (fields[].uuid) and recipient IDs (recipients[].id).
documents_list
[ remote ]Paginated document listing with structured filters. Examples: 'list 50 Draft docs' · 'documents infolder abc-123 tagged onboarding' · 'page 3 of my docs' For natural-language queries, prefer ``ai_search`` if available.
documents_metadata_batch_get
[ remote ]Returns metadata for a list of 1-40 documents in a single request — the batch variant of `documents_metadata_get`. Prefer this tool over calling `documents_metadata_get` in a loop. The response is `{count, results[]}`; each entry is keyed by `document_id` and discriminated by `status` (`ok`, `extraction_pending`, `extraction_failed`, `extraction_not_started`, `not_found`, `access_denied`, `internal_error`). A failure for one document does not fail the whole request.