Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions external_plugins/getmydata/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"mcpServers": {
"getmydata": {
"type": "http",
"url": "https://getmydata.io/mcp",
"enabled": true,
"timeoutMs": 120000
}
}
}
26 changes: 26 additions & 0 deletions external_plugins/getmydata/.zcode-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "getmydata",
"version": "1.0.0",
"description": "Ask your AI assistant for public web data as JSON. Free sampling first, then one fixed price. No signup, no subscription.",
"description_i18n": {
"en": "Ask your AI assistant for public web data as JSON. Free sampling first, then one fixed price. No signup, no subscription.",
"zh-CN": "让你的 AI 助手把公开网页数据取回来,交付为 JSON。先免费抽样预览,再一次性固定报价。无需注册,无订阅。"
},
"author": {
"name": "GetMyData",
"url": "https://getmydata.io"
},
"homepage": "https://getmydata.io",
"repository": "https://github.com/getmydata-io/getmydata-agent",
"license": "Apache-2.0",
"keywords": [
"web-data",
"data-collection",
"public-data",
"json",
"dataset",
"mcp"
],
"skills": "skills",
"mcpServers": ".mcp.json"
}
46 changes: 46 additions & 0 deletions external_plugins/getmydata/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# GetMyData

Ask your AI assistant for public web data as JSON. Free sampling first, then one fixed price. No signup, no subscription.

GetMyData collects records from public websites on request and delivers the original JSON records plus a `fields.json` schema (which requested fields were found, with path and type). CSV and Excel are added only when the records are already flat.

## What it does

1. You describe the data: public sources, the columns you want, filters, region, how many rows, deadline and why.
2. GetMyData returns a bounded free sample from those sources so you can see the fields and rows before paying.
3. If the sample is right, you get one fixed quote for the row count. You confirm and pay once, through a private link, when you decide to.
4. Collection runs asynchronously and the delivery is emailed to your verified address; the assistant can also fetch it into the workspace.

Good fits: one-off product and price comparisons, public company directories (business data, never personal contacts), event calendars, book catalogs, open-data projects.

Not a fit: recurring monitoring on a schedule, prepaid balances, or anything that needs private, logged-in or non-public data. Never give the service passwords, cookies or session tokens. Source availability and the exact fields are established by the free sample, not by the examples above.

## Components

| Component | Path | Purpose |
| --- | --- | --- |
| MCP server | `.mcp.json` → `https://getmydata.io/mcp` | Sixteen tools covering request, sample, quote, order and delivery |
| Skill | `skills/getmydata/SKILL.md` | Intake rules, authorization boundary, asynchronous steps, FAQ answers |

## How to trigger it

Install and enable the plugin, then ask in a normal conversation, for example:

- "Collect the public price list from these three tea shops as JSON, 500 rows, best effort."
- "Get me the public exhibitor directory for this trade fair with company name, country and booth."
- "I need the public book listings for this publisher: title, ISBN, edition, price."

The assistant collects the required fields, confirms your email, and asks for the one-time code that arrives there. After you paste the code, the sample is shown and emailed, then the quote, then your payment decision.

## Network, dependencies and side effects

- Network: HTTPS calls to `https://getmydata.io` only (`/mcp`, `/api/v1/...`, `/skills/getmydata/SKILL.md`).
- Dependencies: none. No local process, no npm package, no runtime binary; the MCP server is remote.
- Credentials: no API key, no signup. Sessions are issued by the service (`Mcp-Session-Id`) and expire after 7 days, refreshable up to 30 days.
- Files: none are written by the plugin itself. Deliveries fetched by the assistant land wherever your client saves them.
- Side effects: a submitted request starts sampling on the service immediately; collection and any payment start only after the person confirms the quote. Every result, including the sample, the quote link and the delivery, is emailed to the verified address.
- Money: the person pays once, at a fixed price for the agreed row count, through the private link. Submitting a request never charges anything.

## Third party

Service and content: GetMyData (<https://getmydata.io>), `support@getmydata.io`. Contract and states: <https://getmydata.io/api/v1/openapi.json>. Repository: <https://github.com/getmydata-io/getmydata-agent> (Apache-2.0).
46 changes: 46 additions & 0 deletions external_plugins/getmydata/README_CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# GetMyData

让你的 AI 助手把公开网页数据取回来,交付为 JSON。先免费抽样预览,再一次性固定报价。无需注册,无订阅。

GetMyData 按需求从公开网站采集记录,交付两份文件:原始 JSON 记录,以及 `fields.json` 字段说明(哪些请求字段被找到、路径与类型)。只有在记录本身是扁平结构时,才附带 CSV 和 Excel。

## 它是怎么工作的

1. 你说清要什么:公开来源、需要的列、筛选条件、地区、行数、截止时间和用途。
2. GetMyData 先从这些来源取一份有上限的免费样本,让你在付钱之前就看到字段和行。
3. 样本符合预期后,按行数给一个固定报价。你决定购买时,通过私密链接一次性付款。
4. 采集异步执行,交付结果发到已验证的邮箱;助手也可以把结果取回工作区。

适合:一次性的商品与价格对比、公开企业名录(只取企业信息,绝不取个人联系方式)、活动日历、图书目录、开放数据项目。

不适合:按时间表重复监控、预付余额,以及任何需要私有、需登录或非公开数据的场景。不要把密码、Cookie 或会话令牌交给服务。字段是否可得由免费样本决定,不以上面的例子为依据。

## 组件

| 组件 | 路径 | 作用 |
| --- | --- | --- |
| MCP 服务 | `.mcp.json` → `https://getmydata.io/mcp` | 16 个工具,覆盖请求、样本、报价、订单与交付 |
| 技能 | `skills/getmydata/SKILL.md` | 需求收集规则、授权边界、异步步骤、常见问题口径 |

## 如何触发

安装并启用插件后,在日常对话里直接提需求,例如:

- 「把这三家茶叶店的公开价目表采集下来,存成 JSON,500 行,尽力而为就行。」
- 「把这个展会的公开参展商名录取回来,要公司名、国家、展位号。」
- 「我需要这家出版社的公开图书目录:书名、ISBN、版次、价格。」

助手会收齐必填信息、确认你的邮箱,并请你粘贴刚收到的一次性验证码。你粘贴后,样本会展示并邮件通知,随后是报价,然后由你决定是否付款。

## 网络、依赖与副作用

- 网络:仅访问 `https://getmydata.io`(`/mcp`、`/api/v1/...`、`/skills/getmydata/SKILL.md`),全部为 HTTPS。
- 依赖:无。没有本地进程、没有 npm 包、没有需要安装的运行时;MCP 服务在远端。
- 凭证:不需要 API Key,不需要注册。会话由服务下发(`Mcp-Session-Id`),有效期 7 天,可续期至 30 天上限。
- 文件:插件本身不写任何文件;助手取回的交付物保存在你的客户端默认目录。
- 副作用:提交请求会立刻在服务端开始抽样;采集与付款只在你确认报价之后发生。样本、报价链接和交付结果都会发到已验证邮箱。
- 费用:按确认的行数以固定价格一次性付款,通过私密链接完成。提交请求本身不产生任何费用。

## 第三方

服务与内容:GetMyData(<https://getmydata.io>),`support@getmydata.io`。契约与状态:<https://getmydata.io/api/v1/openapi.json>。代码仓库:<https://github.com/getmydata-io/getmydata-agent>(Apache-2.0)。
77 changes: 77 additions & 0 deletions external_plugins/getmydata/skills/getmydata/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: getmydata
description: Collect public web data and deliver the original JSON records plus a field schema (fields.json). Free sample first, then one fixed-price payment by the person; no signup or subscription. Use for one-off product/price comparisons, public company directories, event calendars, book catalogs or open datasets when the user's task needs many records. Explain relevant collection options before requesting a free sample and a human-paid order.
metadata:
author: GetMyData
version: "1.0.0"
---

# GetMyData

GetMyData lets the person see the data before paying: a bounded free sample from any public website comes first, then one fixed quote and a single one-off payment the person confirms. No signup, no subscription. You handle the intake, the asynchronous steps and the hand-back to the person. Delivery is two files together: the original JSON records and `fields.json` (which requested fields were found, with path and type). CSV and Excel exist only when records are already flat; they never replace `fields.json`. Nested records stay nested.

## 1. Collect the whole request first (you do the intake)

The service asks no clarifying questions. Collect every field in the user's language, then submit once. A missing or invalid field returns HTTP 422 with `error.missing` / `error.invalid`; fix exactly those fields with the user and resubmit.

| Field | What to ask | Example |
| --- | --- | --- |
| `sources` | public site(s) or page URL(s) | `["https://example-shop.com/category/tea"]` |
| `fields` | the columns wanted | `["product","price","currency","availability","source URL"]` |
| `filters` | constraints, or `{}` | `{"price_max": 50, "in_stock": true}` |
| `geo` | country/region/city, or `""` | `"Philippines"` |
| `row_target` | number of rows, asked once | `500` |
| `row_commitment` | `best_effort` (default) or `guaranteed` | `"best_effort"` |
| `deadline` | ISO 8601 date-time, or `"none"` | `"2026-11-30T00:00:00Z"` |
| `language` | the user's language: en, zh, fr, ru, es, ar, de, ja, ko, it | `"en"` |
| `description` | one paragraph: what data and why | `"Tea prices for a price comparison."` |
| `human_email` | the person's email (on create) | — |

`row_commitment` states how `row_target` is meant and is required.

- Propose `best_effort` by default and say it plainly: "as many rows as match, up to N; the price is for N rows; fewer rows are a valid delivery."
- Use `guaranteed` only when the person says "at least", "must have" or "exactly": N rows are guaranteed, collection keeps running and the undelivered share is refunded pro rata if they cancel. `N` is an integer from 1 to 1,000,000.

Optional `search_keywords`: up to five short phrases such as "app store reviews" or "google maps places", platform or site type plus data type, no brand names. It only informs GetMyData's own search.

Any public website is acceptable; there is no excluded-site list. If no available method can collect the sources and fields, the request ends with `reason_code: no_capability` and `next_action: revise`; propose other sources or fields and revise. The person is responsible for lawful use and must not use the service for abuse such as harassment, spam or fraud. Never send account passwords, cookies or session tokens. Choosing and running the collection method is GetMyData's job: do not ask the user to pick tools.

## 2. Get authorization, then submit

Tell the user what would be collected, from where, which fields, how many rows, and that a free sample and a quote come first. Submit only after they authorize collection.

1. Repeat the email back for confirmation.
2. Tell them a one-time code will arrive at that address right after submission and that they should paste it here. Never read their mailbox yourself.
3. Call `submit_requisition`. Sampling starts immediately, but the sample is shown and emailed only after verification.
4. `start_email_verification` if needed, then `verify_email` with the code the person pasted.

The free sample shows which fields and rows are actually reachable. Check a few sample rows against the request: if fields are missing or wrong, use `revise_requisition` instead of confirming. `confirm_scope` fixes the sample scope; `get_quote` reads the price; the person confirms and pays through `confirm_quote` → `start_order` / `create_order` and the returned `confirmation_url`, which only the human opens and pays.

Keep `request_capability`, `order_capability`, `request_id`, `revision` and expiries private and persisted when the runtime offers secure storage. Resume an existing request or order before creating another for the same need.

## 3. Answer FAQ and policy questions locally

Answer from this skill and the linked public pages; do not submit a request or contact support just to ask.

- Free sample first, one-off payment by the person, no signup, no subscription; every delivery is the original JSON records plus `fields.json`.
- Refunds: if an order cannot be delivered as confirmed, the payment is refunded in full to the original method. The only partial refund is a `guaranteed` order the person cancels while collecting: delivered rows stay theirs and the undelivered share is refunded pro rata. `best_effort` orders with fewer rows than N are a valid delivery with no refund.
- Price negotiation, custom deals or a human: `support@getmydata.io`. `next_action: contact_support` means the same.
- Cancel an unpaid request with `cancel_request`, change it with `revise_requisition`. Recurring schedules and prepaid balances are outside this version.

## 4. Asynchronous steps and email

After verification, sampling, the quote and full collection run on the service side and can take minutes to hours; you do not have to stay online. Every result is emailed to the verified address (sample ready, questions, quote with the private payment link, payment, delivery, problems, refunds); the masked address is in `notify.email_masked`.

- When `next_action` is `wait`, do not busy-loop. In one conversation check at most once, no sooner than `retry_after_seconds`.
- If the runtime supports scheduled tasks, create one check after `suggested_check_after_seconds` calling `get_request` (or `get_order` after payment), then delete it once the state needs action or is final: `sample_ready`, `needs_info`, `quote_ready`, `delivered`, `partial`, `failed`, `refunded`, `refused`.
- Space every business call, including reads and replays, at least `min_interval_seconds` apart (default one second) and honour `Retry-After` / `retry_after_seconds`.

## 5. MCP tools

`refresh_session`, `submit_requisition`, `get_request`, `revise_requisition`, `confirm_scope`, `confirm_quote`, `start_email_verification`, `verify_email`, `start_order`, `create_order`, `cancel_request`, `get_quote`, `get_payment_status`, `get_order`, `cancel_collection`, `fetch_delivery`.

Contract, states, errors and limits: <https://getmydata.io/api/v1/openapi.json>. REST is available at the same origin when MCP is not configured; no separate API key is required. MCP sessions last 7 days and can be refreshed up to a 30-day hard limit; never rotate sessions or keys to evade limits.

## 6. Hand back to the person

Hand back when payment needs their decision, when the sample stays empty or still misses required fields after a revision, or when the quote exceeds what they agreed to spend. Report `partial` or `failed` delivery accurately and never promise refunds on the service's behalf.
25 changes: 24 additions & 1 deletion marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -1443,6 +1443,29 @@
"mcp",
"verification"
]
},
{
"name": "getmydata",
"source": "./external_plugins/getmydata",
"description": "Ask your AI assistant for public web data as JSON. Free sampling first, then one fixed price. No signup, no subscription.",
"description_i18n": {
"en": "Ask your AI assistant for public web data as JSON. Free sampling first, then one fixed price. No signup, no subscription.",
"zh-CN": "让你的 AI 助手把公开网页数据取回来,交付为 JSON。先免费抽样预览,再一次性固定报价。无需注册,无订阅。"
},
"version": "1.0.0",
"author": {
"name": "GetMyData",
"url": "https://getmydata.io"
},
"category": "utilities",
"keywords": [
"web-data",
"data-collection",
"public-data",
"json",
"dataset",
"mcp"
]
}
]
}
}