GetMyData

Public web data as rows from any public website. Free sample first, then one fixed-price payment.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
83%
Naming quality
98%
Poisoning risk
100%
Permission match
90%
Protocol compliance
100%

Findings (1)

  • LOWTool 'fetch_delivery' suggests web access but openWorldHint=falsein fetch_delivery

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,031Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (3.15% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "getmydata": {
      "url": "https://getmydata.io/mcp"
    }
  }
}

Remote endpoints

https://getmydata.io/mcpstreamable-http

What it can do

Tool inventory

Tools (16)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟑refresh_session(idempotency_key)

Before session expiry, renew using the current Mcp-Session-Id. Save the returned header/token. A session is valid for 7 days; each refresh extends it by up to 7 days, never beyond a hard lifetime of thirty days from initialization; request and delivery expiries do not change.

Input Schema

{
  "type": "object",
  "properties": {
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "idempotency_key"
  ],
  "additionalProperties": false
}
🟑submit_requisition(human_email, sources, fields, dedup_keys, row_target, ...)

Request public web data as rows when browsing it yourself is impractical. Free sample first, one-off payment by the person, no signup or subscription. Collect every required field from the person first (sources, fields, filters, geo, row_target, deadline, language, description) and generate search_keywords yourself; missing or invalid fields are returned as error.missing/error.invalid (HTTP 422) and are not clarified by the service. The service is subject to applicable law. You are responsible for using the data lawfully and must not use the service for abuse such as harassment, spam or fraud. Do not send account passwords, cookies or session tokens. Save the returned request capability privately. The person must verify their email with a one-time code before the sample is shown (ask them to give you the code); sampling starts meanwhile. Then sampling runs asynchronously and every result is emailed to them.

Input Schema

{
  "type": "object",
  "properties": {
    "human_email": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "dedup_keys": {
      "type": "array",
      "maxItems": 10,
      "uniqueItems": true,
      "items": {
        "type": "string"
      },
      "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication."
    },
    "row_target": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "row_commitment": {
      "type": "string",
      "enum": [
        "best_effort",
        "guaranteed"
      ],
      "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows)."
    },
    "filters": {
      "type": "object",
      "description": "Required; {} when none."
    },
    "geo": {
      "type": "string",
      "description": "Required; \"\" when not location-specific."
    },
    "deadline": {
      "type": "string",
      "description": "Required: ISO 8601 date-time or \"none\"."
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "zh",
        "fr",
        "ru",
        "es",
        "ar",
        "de",
        "ja",
        "ko",
        "it"
      ],
      "description": "Required: the person’s language."
    },
    "description": {
      "type": "string",
      "description": "Required: plain description of the data wanted and its purpose."
    },
    "search_keywords": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it."
    },
    "coupon_code": {
      "type": "string",
      "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order."
    },
    "channel_id": {
      "type": "string",
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used."
    },
    "prior_request_capability": {
      "type": "string",
      "description": "Optional valid capability for an accepted, positively paid prior request with the same email."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "human_email",
    "sources",
    "fields",
    "filters",
    "geo",
    "row_target",
    "row_commitment",
    "deadline",
    "language",
    "description",
    "idempotency_key"
  ]
}
🟒get_request(request_id, request_capability)

Read the current request, questions, sample and next action. After accepted payment, remind the customer about returned renewal/referral codes and expiry; pending codes are not ready. When next_action is wait, check again after suggested_check_after_seconds via a scheduled task if available; never loop. The person is emailed on every result.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  },
  "required": [
    "request_id",
    "request_capability"
  ]
}
🟑revise_requisition(request_id, request_capability, human_email, sources, fields, ...)

Revise an unpaid request using the current expected_revision with the full set of required fields. Existing samples and quotes are replaced. Use it when next_action is revise (including reason_code no_capability: try other sources or fields).

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "human_email": {
      "type": "string"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Public page URLs or site names. Any public website is accepted when a collection method exists; otherwise the request ends with reason_code no_capability."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "dedup_keys": {
      "type": "array",
      "maxItems": 10,
      "uniqueItems": true,
      "items": {
        "type": "string"
      },
      "description": "Optional compound key of requested field names, all available in the confirmed sample. Empty means canonical whole-row deduplication."
    },
    "row_target": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "row_commitment": {
      "type": "string",
      "enum": [
        "best_effort",
        "guaranteed"
      ],
      "description": "best_effort (default to propose): as many as match, up to row_target. guaranteed: row_target rows; a shortfall keeps collecting until reached or cancelled (pro-rata refund of undelivered rows)."
    },
    "filters": {
      "type": "object",
      "description": "Required; {} when none."
    },
    "geo": {
      "type": "string",
      "description": "Required; \"\" when not location-specific."
    },
    "deadline": {
      "type": "string",
      "description": "Required: ISO 8601 date-time or \"none\"."
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "zh",
        "fr",
        "ru",
        "es",
        "ar",
        "de",
        "ja",
        "ko",
        "it"
      ],
      "description": "Required: the person’s language."
    },
    "description": {
      "type": "string",
      "description": "Required: plain description of the data wanted and its purpose."
    },
    "search_keywords": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "description": "Optional hint only: up to five short phrases (platform or site type plus data type, e.g. \"app store reviews\", \"google maps places\"; do not put a specific app, product or brand name). GetMyData generates its own search for the collection method; these only inform it."
    },
    "coupon_code": {
      "type": "string",
      "description": "Optional single code applied when the quote is prepared; more codes go in coupon_codes on create_order."
    },
    "channel_id": {
      "type": "string",
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
      "description": "The first successful request freezes the session channel, including no channel. Subsequent requests inherit it; this grants no discounts. When omitted, the channel bound to coupon_code (if any) is used."
    },
    "prior_request_capability": {
      "type": "string",
      "description": "Optional valid capability for an accepted, positively paid prior request with the same email."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    },
    "expected_revision": {
      "type": "integer"
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key",
    "sources",
    "fields",
    "filters",
    "geo",
    "row_target",
    "row_commitment",
    "deadline",
    "language",
    "description"
  ]
}
🟑confirm_scope(request_id, request_capability, expected_revision, sample_id, idempotency_key)

Confirm the current immutable sample_id and revision and request a fixed quote. The quote is prepared asynchronously and emailed to the person with the payment link; check get_request on a schedule, never in a loop. After the final quote, use start_order or create_order to read the confirmation link.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "expected_revision": {
      "type": "integer"
    },
    "sample_id": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key"
  ]
}
βšͺconfirm_quote(request_id, request_capability, quote_id, expected_revision, idempotency_key)

Record final quote confirmation for quote_id and revision. Use start_order next; start_order also records this selection if not already confirmed.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "quote_id": {
      "type": "string"
    },
    "expected_revision": {
      "type": "integer"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ]
}
🟑start_email_verification(request_id, request_capability, human_email, idempotency_key)

Send (or resend) the one-time code that verifies the person’s email for this request. Needed before the sample is shown (sampling itself starts at once), and again before payment if the verification is older than the re-verify window. human_email may be corrected only before it is verified. Use when next_action is start_email_verification (email_verification.state not_sent, unavailable, expired, replaced or attempts_exceeded after resend_after). Ask the person to give you the code and to check spam; if the state stays unavailable after requesting a new code once, ask them to contact [email protected]; this code email contains no price or link (the later quote email contains the private payment link).

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "human_email": {
      "type": "string",
      "format": "email"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "idempotency_key"
  ],
  "additionalProperties": false
}
🟑verify_email(request_id, request_capability, otp, idempotency_key)

Submit the code the person read from their email. A wrong code returns otp_invalid with attempts_remaining. On success the sample becomes visible once ready (or, at quote time, the order confirmation link is issued). Results are then emailed to the verified address; check get_request later instead of polling continuously.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "otp": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "otp",
    "idempotency_key"
  ],
  "additionalProperties": false
}
🟑start_order(request_id, request_capability, quote_id, expected_revision, human_email, ...)

Select the final quote and read the human confirmation link issued for the verified email (no second code). Save order_id and order_capability before passing confirmation_url to the person.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "quote_id": {
      "type": "string"
    },
    "expected_revision": {
      "type": "integer"
    },
    "human_email": {
      "type": "string",
      "format": "email"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ],
  "additionalProperties": false
}
🟑create_order(request_id, request_capability, quote_id, expected_revision, otp, ...)

Read or update the order for the final quote. Pass explicitly available renewal, referral or channel codes in coupon_codes before payment starts. Tell the person which codes were added and their valid/invalid status. Give confirmation_url to the person to review codes and pay themselves. Never submit payment for them. Save order_id and order_capability before passing confirmation_url to the person. After payment, use get_order even if the original session is lost.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "quote_id": {
      "type": "string"
    },
    "expected_revision": {
      "type": "integer"
    },
    "otp": {
      "type": "string",
      "description": "Deprecated; ignored."
    },
    "coupon_codes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "quote_id",
    "expected_revision",
    "idempotency_key"
  ],
  "additionalProperties": false
}
πŸ”΄cancel_request(request_id, request_capability, expected_revision, idempotency_key)

Cancel an unpaid request and release unused coupons where payment has not started. Paid orders require support.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    },
    "expected_revision": {
      "type": "integer"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "request_id",
    "request_capability",
    "expected_revision",
    "idempotency_key"
  ]
}
🟒get_quote(request_id, request_capability)

Read the quote or estimated waiting time, without payment credentials.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  },
  "required": [
    "request_id",
    "request_capability"
  ]
}
🟒get_payment_status(request_id, request_capability)

Check email verification, order creation and verified payment status. After payment, return this request’s coupon notifications and a separate delivery token when files are ready.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    },
    "request_capability": {
      "type": "string"
    }
  },
  "required": [
    "request_id",
    "request_capability"
  ]
}
🟒get_order(order_id, order_capability)

Use the order_capability saved at order creation to read paid order status and obtain or renew a delivery token. It works with a new valid session if the original session expired; a current session is required. No email recovery; keep this credential private until file retention ends. After an original full refund, top-level add_on describes any separate purchase. If add_on.delivery_available is true, next_action is fetch_delivery and the renewed token can list/download only extra.* files; delivery.rows_url is null. The original refund status and original-file 410 remain unchanged.

Input Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted."
    },
    "order_capability": {
      "type": "string"
    }
  },
  "required": [
    "order_id",
    "order_capability"
  ],
  "additionalProperties": false
}
πŸ”΄cancel_collection(order_id, order_capability, idempotency_key)

Only when the person explicitly asks: stop continued collection of a guaranteed-N order whose get_order status is collecting. Rows delivered so far stay available, the order settles as partial, and the undelivered share is refunded pro rata to the original payment method; the person is emailed. Tell them the refund amount shown in collection.refund first.

Input Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q."
    },
    "order_capability": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 32,
      "maxLength": 200
    }
  },
  "required": [
    "order_id",
    "order_capability",
    "idempotency_key"
  ],
  "additionalProperties": false
}
🟒fetch_delivery(order_id, delivery_token, format, offset, limit)

After payment, use the delivery token to list files or read rows. Use json, csv, xlsx, fields.json, or rows pages; a paid excess-rows add-on has its own extra.json, extra.csv, extra.xlsx and extra.fields.json. XLSX is returned as base64 bytes with its content type. All rows pages for a file count once per token; a full download counts once each. On expiry or download_limit, call get_order with your order capability for a fresh token. A current session is required and the delivery token is bound to it. If the original session expired, initialize a new one and call get_order first.

Input Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Order number, e.g. GMD7K3P9Q. Lowercase or hyphenated input (gmd-7k3p9q) is accepted."
    },
    "delivery_token": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "list",
        "rows",
        "json",
        "csv",
        "xlsx",
        "fields.json",
        "extra.json",
        "extra.csv",
        "extra.xlsx",
        "extra.fields.json"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "order_id",
    "delivery_token"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools