@myapihq/cli 2.4.1 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/crm/companies.js +1 -5
- package/dist/commands/crm/contacts.js +1 -6
- package/dist/commands/domain-validation.test.d.ts +1 -0
- package/dist/commands/domain-validation.test.js +36 -0
- package/dist/commands/domain.d.ts +14 -0
- package/dist/commands/domain.js +20 -1
- package/dist/commands/funnel-validation.test.d.ts +1 -0
- package/dist/commands/funnel-validation.test.js +86 -0
- package/dist/commands/funnel.d.ts +12 -0
- package/dist/commands/funnel.js +59 -15
- package/dist/commands/payments.js +12 -2
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.js +51 -2
- package/dist/commands/skill-checksum.test.d.ts +1 -0
- package/dist/commands/skill-checksum.test.js +48 -0
- package/dist/config-envkey.test.d.ts +1 -0
- package/dist/config-envkey.test.js +145 -0
- package/dist/config.js +41 -5
- package/dist/errors.js +11 -0
- package/dist/index.js +6 -1
- package/dist/sdk-transport.test.d.ts +1 -0
- package/dist/sdk-transport.test.js +138 -0
- package/dist/sdk-version.test.d.ts +1 -0
- package/dist/sdk-version.test.js +24 -0
- package/dist/skills/my-api-hq/SKILL.md +1 -1
- package/dist/skills/my-api-hq/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-audience-api/README.md +40 -0
- package/dist/skills/my-audience-api/SKILL.md +139 -0
- package/dist/skills/my-audience-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-audience-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-auth-api/SKILL.md +1 -1
- package/dist/skills/my-auth-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-company-api/README.md +35 -0
- package/dist/skills/my-company-api/SKILL.md +110 -0
- package/dist/skills/my-company-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-company-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-container-api/README.md +34 -0
- package/dist/skills/my-container-api/SKILL.md +77 -0
- package/dist/skills/my-container-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-container-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-crm-api/SKILL.md +3 -3
- package/dist/skills/my-crm-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-database-api/SKILL.md +1 -1
- package/dist/skills/my-database-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-domain-api/SKILL.md +1 -1
- package/dist/skills/my-domain-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-email-api/SKILL.md +1 -1
- package/dist/skills/my-email-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-email-verify-api/SKILL.md +1 -1
- package/dist/skills/my-email-verify-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-function-api/SKILL.md +104 -0
- package/dist/skills/my-function-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-funnel-api/SKILL.md +2 -2
- package/dist/skills/my-funnel-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-git-api/SKILL.md +1 -1
- package/dist/skills/my-git-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-image-api/SKILL.md +1 -1
- package/dist/skills/my-image-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-llm-api/SKILL.md +6 -11
- package/dist/skills/my-llm-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-payments-api/SKILL.md +85 -0
- package/dist/skills/my-payments-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-people-api/README.md +35 -0
- package/dist/skills/my-people-api/SKILL.md +107 -0
- package/dist/skills/my-people-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-people-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-pixel-api/README.md +38 -0
- package/dist/skills/my-pixel-api/SKILL.md +90 -0
- package/dist/skills/my-pixel-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-pixel-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-queue-api/README.md +34 -0
- package/dist/skills/my-queue-api/SKILL.md +78 -0
- package/dist/skills/my-queue-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-queue-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-storage-api/SKILL.md +1 -1
- package/dist/skills/my-storage-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-task-api/README.md +36 -0
- package/dist/skills/my-task-api/SKILL.md +74 -0
- package/dist/skills/my-task-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-task-api/openapi/.gitkeep +0 -0
- package/dist/skills/my-url-to/README.md +32 -0
- package/dist/skills/my-url-to/SKILL.md +55 -0
- package/dist/skills/my-url-to/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-url-to/openapi/.gitkeep +0 -0
- package/dist/skills/my-webhook-api/SKILL.md +1 -1
- package/dist/skills/my-webhook-api/claude/.claude-plugin/plugin.json +1 -0
- package/dist/skills/my-workflow-api/SKILL.md +1 -1
- package/dist/skills/my-workflow-api/claude/.claude-plugin/plugin.json +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
# my-company-api
|
|
3
|
+
|
|
4
|
+
Queryable company database for account-based targeting and B2B firmographics. Search companies by industry, size, country, revenue, or keyword.
|
|
5
|
+
|
|
6
|
+
## What it does
|
|
7
|
+
|
|
8
|
+
- Filter the company database by attributes (industry, employee_bucket, revenue_bucket, country, ...)
|
|
9
|
+
- Fetch a single company, optionally with embedded people for one-call enrichment
|
|
10
|
+
- Feed results into `my-audience-api` to save reusable account lists
|
|
11
|
+
- Complement `my-people-api` for combined account-based + contact-based targeting
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Find target companies
|
|
17
|
+
myapi company search --industry fintech --country GB,DE --employee-bucket 51-200
|
|
18
|
+
|
|
19
|
+
# Single company with embedded people
|
|
20
|
+
myapi company get company_06 --include-people 5
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Authentication
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
export MYAPI_KEY=mak_...
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Requires `api_key` and `org_id` from **myapihq**.
|
|
30
|
+
|
|
31
|
+
## Documentation
|
|
32
|
+
|
|
33
|
+
Full filter contract and audience integration: see `SKILL.md`.
|
|
34
|
+
|
|
35
|
+
Run `myapi company --help` for inline reference.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: my-company-api
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: >
|
|
5
|
+
Company database backed by the Goldfox crawl. Filter companies by Goldfox confidence tier, country/TLD consistency, behavioral page signals (has_careers_page, has_investors_page, has_shop_page, has_c_level, has_decision_maker), legal-entity status, headcount, and source-URL count. Account-based targeting and B2B firmographics.
|
|
6
|
+
triggers: [companies, accounts, firmographics, abm, search, filter, goldfox, careers signal, investors, c-level, shop, b2b targeting]
|
|
7
|
+
checksum: sha256-67dd4b65a9b0cc7acf7c1e4262bc66d2b58ff11ed227a24299924e0b620712f0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# MyCompanyAPI
|
|
11
|
+
|
|
12
|
+
A queryable company database for account-based targeting and B2B firmographics, sourced from the **Goldfox** crawl. Filter by confidence tier, country consistency, behavioral page signals, and quality thresholds — get back companies with rich signal data (headcount estimates, source count, careers/investors/shop presence, legal-entity flag).
|
|
13
|
+
|
|
14
|
+
## Capabilities
|
|
15
|
+
<!-- llm:start -->
|
|
16
|
+
Use when:
|
|
17
|
+
|
|
18
|
+
- Doing account-based targeting (pick companies first, find decision-makers second)
|
|
19
|
+
- Researching market segments by behavioral signals ("companies in DE with a careers page AND a c-level present")
|
|
20
|
+
- Combining with `my-audience-api` to save a company filter as a reusable audience
|
|
21
|
+
|
|
22
|
+
Filter contract — shared with `my-people-api` and the `filter` field of `my-audience-api`, minus people-only fields (`seniority`, `email_type`, `min_link_confidence`). OR within an array; AND across fields. **Empty filter = all rows with default confidence=high.**
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"confidence": ["high"],
|
|
27
|
+
"country": ["US", "DE"],
|
|
28
|
+
"country_consistent": true,
|
|
29
|
+
"tld_class": ["cctld"],
|
|
30
|
+
"has_c_level": true,
|
|
31
|
+
"has_decision_maker": true,
|
|
32
|
+
"has_careers_page": true,
|
|
33
|
+
"has_investors_page": false,
|
|
34
|
+
"has_shop_page": false,
|
|
35
|
+
"is_registered_entity": true,
|
|
36
|
+
"min_headcount": 5,
|
|
37
|
+
"min_source_count": 3,
|
|
38
|
+
"keyword": "platform",
|
|
39
|
+
"include_people": 3,
|
|
40
|
+
"limit": 100,
|
|
41
|
+
"offset": 0
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Allowed values:
|
|
46
|
+
- **confidence**: `high` (default) / `low` / `very_low`
|
|
47
|
+
- **tld_class**: `cctld`, `generic`, `vanity`, `low_trust`, `other`
|
|
48
|
+
- **country**: ISO 3166-1 alpha-2; consensus across TLD + address + phone
|
|
49
|
+
- **keyword**: substring match on the company's domain
|
|
50
|
+
- **include_people**: 0–10; embed up to N people per company in the result
|
|
51
|
+
|
|
52
|
+
Behavioral signals (booleans):
|
|
53
|
+
- `has_c_level` — row has ≥1 person with seniority = c_level
|
|
54
|
+
- `has_decision_maker` — row has ≥1 person with seniority ∈ (c_level, vp_director)
|
|
55
|
+
- `has_careers_page` — `/careers`, `/jobs`, `/stellen`, `/karriere` etc. (growth-stage proxy)
|
|
56
|
+
- `has_investors_page` — `/investors`, `/ir/` (mature/public proxy)
|
|
57
|
+
- `has_shop_page` — `/shop`, `/store`, `/products`, `/cart` (e-commerce proxy)
|
|
58
|
+
- `is_registered_entity` — name has a recognized legal suffix (GmbH/Ltd/Inc/SARL/…)
|
|
59
|
+
- `country_consistent` — TLD + address + phone all agree on country (highest-trust geo)
|
|
60
|
+
<!-- llm:end -->
|
|
61
|
+
|
|
62
|
+
## Commands
|
|
63
|
+
<!-- generated:start -->
|
|
64
|
+
| Command | What it does |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `myapi company search [--confidence <csv>] [--country <csv>] [--country-consistent] [--tld-class <csv>] [--has-c-level] [--has-decision-maker] [--has-careers-page] [--has-investors-page] [--has-shop-page] [--is-registered-entity] [--keyword <text>] [--min-headcount N] [--min-source-count N] [--include-people N] [--limit N] [--offset N]` | Filter companies; returns id/domain/name/country/confidence/headcount/sources/signals table |
|
|
67
|
+
| `myapi company get <company_id> [--include-people N]` | Get a single company, optionally with embedded people |
|
|
68
|
+
<!-- generated:end -->
|
|
69
|
+
|
|
70
|
+
The `signals` column in the search table compactly shows which behavioral booleans are true (e.g. `c-level,dm,careers`).
|
|
71
|
+
|
|
72
|
+
## Examples
|
|
73
|
+
<!-- llm:start -->
|
|
74
|
+
```bash
|
|
75
|
+
# 1. Registered DE companies with a careers page (growth signal)
|
|
76
|
+
myapi company search --country DE --is-registered-entity --has-careers-page --limit 20
|
|
77
|
+
|
|
78
|
+
# 2. E-commerce in FR/IT — companies with shop pages
|
|
79
|
+
myapi company search --country FR,IT --has-shop-page --confidence high
|
|
80
|
+
|
|
81
|
+
# 3. High-source-count companies (more validated rows) with embedded people
|
|
82
|
+
myapi company search --min-source-count 5 --include-people 3 --json | jq '.companies[0]'
|
|
83
|
+
|
|
84
|
+
# 4. Single company with up to 5 embedded people
|
|
85
|
+
myapi company get auroracloud.com --include-people 5
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### End-to-end recipe — ABM target account list
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Save filter as audience (companies)
|
|
92
|
+
AID=$(myapi audience create "EU growth-stage SaaS" \
|
|
93
|
+
--source company \
|
|
94
|
+
--filter '{"country":["DE","FR","GB","NL"],"has_careers_page":true,"has_decision_maker":true,"min_source_count":3}' \
|
|
95
|
+
--json | jq -r .id)
|
|
96
|
+
|
|
97
|
+
# Pull members for outreach planning
|
|
98
|
+
myapi audience members $AID --limit 50 --json > accounts.json
|
|
99
|
+
```
|
|
100
|
+
<!-- llm:end -->
|
|
101
|
+
|
|
102
|
+
## Notes
|
|
103
|
+
|
|
104
|
+
- Goldfox confidence tiers matter: `high` (default) is the curated 96.4% of rows; widen with `low` only for spot-check work, and `very_low` rows usually get dropped.
|
|
105
|
+
- `seniority`, `email_type`, and `min_link_confidence` are people-only — passing them on company search is silently ignored.
|
|
106
|
+
- `include_people` only works on company search/get; people-source already embeds company by default.
|
|
107
|
+
- `keyword` is a substring match on the company's **domain** — use `--keyword stripe` to find domains containing "stripe".
|
|
108
|
+
- For a persistent account list, use `my-audience-api` with `--source company`.
|
|
109
|
+
|
|
110
|
+
Run `myapi company --help` for full flag reference.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-company-api",
|
|
3
|
+
"description": "Company database backed by the Goldfox crawl. Filter companies by confidence tier, country/TLD consistency, behavioral page signals (has_careers_page, has_investors_page, has_shop_page, has_c_level, has_decision_maker), legal-entity status, headcount, and source-URL count.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"status": "preview",
|
|
6
|
+
"published": true
|
|
7
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
# my-container-api
|
|
3
|
+
|
|
4
|
+
Run containers on demand — long-running services, background workers, and scheduled jobs. The heavier-duty sibling of edge functions, for native dependencies, long execution, and full dynamic apps.
|
|
5
|
+
|
|
6
|
+
## What it does
|
|
7
|
+
|
|
8
|
+
- Register a container and get a scoped API key (delivered to the runtime as `MYAPI_KEY`)
|
|
9
|
+
- Deploy a pre-built image to managed cloud infrastructure
|
|
10
|
+
- Three types: `service` (HTTP, scales to zero), `worker` (always-on), `job` (runs to completion, cron-capable)
|
|
11
|
+
- **Bind a custom domain** — serve a dynamic app at `app.yourbrand.com` over HTTPS
|
|
12
|
+
- Recent runtime logs
|
|
13
|
+
|
|
14
|
+
## Quickstart
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
myapi container create --name api --type service --port 8080
|
|
18
|
+
myapi container deploy <id> registry.example.com/my-app:v1
|
|
19
|
+
myapi container domain <id> app.yourbrand.com
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Authentication
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
export MYAPI_KEY=mak_...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Requires `api_key` + `org_id` from **myapihq**. Custom domains require the parent domain registered via **mydomainapi**.
|
|
29
|
+
|
|
30
|
+
## Documentation
|
|
31
|
+
|
|
32
|
+
Full command reference, the custom-domain rules, and the container/funnel/function split: see `SKILL.md`.
|
|
33
|
+
|
|
34
|
+
Run `myapi container --help` for inline reference.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: my-container-api
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: >
|
|
5
|
+
Run containers on demand — long-running services, background workers, and scheduled jobs. The heavier-duty sibling of edge functions, for native deps and long execution.
|
|
6
|
+
triggers: [container, cloud run, dynamic app, custom domain app, service, worker, scheduled job, deploy container, docker image]
|
|
7
|
+
checksum: sha256-ce30765b31f9c29012dcfc13b538cf47bb90e21bc015b4cfc75c1e55b21b4d75
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# MyContainerAPI
|
|
11
|
+
|
|
12
|
+
A container runs a pre-built image on managed cloud infrastructure. Three types: a **service** (HTTP server, scales to zero), a **worker** (always-on background process), or a **job** (runs to completion — the only type that takes a cron schedule). Containers are the heavier-duty sibling of edge functions (`myapi fn`) — use them for native dependencies, long execution, or a full dynamic app.
|
|
13
|
+
|
|
14
|
+
## Capabilities
|
|
15
|
+
<!-- llm:start -->
|
|
16
|
+
The lifecycle is **create → deploy → (optionally) bind a custom domain**.
|
|
17
|
+
|
|
18
|
+
- `create` registers the container and issues a **scoped API key**, returned once. The running container receives it as the `MYAPI_KEY` env var, so your code calls other MyAPI slots with no token handling. Deploy rotates this key.
|
|
19
|
+
- `deploy` ships a pre-built image reference to the runtime and makes the container live at a generated URL.
|
|
20
|
+
- `domain` puts the container on a **custom domain** — how you serve a dynamic app at `app.yourbrand.com`.
|
|
21
|
+
|
|
22
|
+
### Custom domains (dynamic apps)
|
|
23
|
+
|
|
24
|
+
`myapi container domain <id> <domain>` binds a custom domain to a **deployed** container, served over HTTPS automatically. This is the path for a dynamic backend on a real domain — distinct from `my-funnel-api`, which serves static sites.
|
|
25
|
+
|
|
26
|
+
Get it right:
|
|
27
|
+
|
|
28
|
+
- **Deploy first.** Binding a domain to a container that has never deployed fails (422) — there is nothing running to route to.
|
|
29
|
+
- **Register the parent domain first.** The domain's MyAPI-managed parent must already be registered via `my-domain-api`. Binding `app.synthesisdaily.com` requires `synthesisdaily.com` registered in MyAPI; otherwise 422.
|
|
30
|
+
- **One domain per container.** Re-binding, or binding a hostname already taken, fails (409).
|
|
31
|
+
- `--remove` unbinds. `myapi container get <id>` shows the bound `custom_domain`.
|
|
32
|
+
<!-- llm:end -->
|
|
33
|
+
|
|
34
|
+
## Commands
|
|
35
|
+
<!-- generated:start -->
|
|
36
|
+
| Command | What it does |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `myapi container create --name <name> [--type service\|worker\|job] [--cron <expr>] [--cpu <n>] [--memory <size>] [--port <n>] [--env K=V,...]` | Register a container, get its scoped API key (once) |
|
|
39
|
+
| `myapi container deploy <id> <image-ref>` | Ship a pre-built image and go live (rotates the scoped key) |
|
|
40
|
+
| `myapi container list` | List containers in your org |
|
|
41
|
+
| `myapi container get <id>` | Inspect a container (status, URL, custom domain) |
|
|
42
|
+
| `myapi container logs <id> [--tail <n>]` | Recent runtime logs, newest first |
|
|
43
|
+
| `myapi container domain <id> <domain>` | Bind a custom domain (`--remove` to unbind) |
|
|
44
|
+
| `myapi container delete <id>` | Soft-delete and revoke its scoped API key |
|
|
45
|
+
<!-- generated:end -->
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
<!-- llm:start -->
|
|
49
|
+
```bash
|
|
50
|
+
# 1. Register a service container
|
|
51
|
+
myapi container create --name api --type service --port 8080
|
|
52
|
+
# → prints a scoped API key ONCE — save it if your code needs it
|
|
53
|
+
|
|
54
|
+
# 2. Deploy a pre-built image
|
|
55
|
+
myapi container deploy <id> registry.example.com/my-app:v1
|
|
56
|
+
|
|
57
|
+
# 3. Serve it on a custom domain. The parent domain must already be
|
|
58
|
+
# registered: myapi domain register synthesisdaily.com
|
|
59
|
+
myapi container domain <id> app.synthesisdaily.com
|
|
60
|
+
# → app.synthesisdaily.com now serves the container over HTTPS
|
|
61
|
+
|
|
62
|
+
myapi container get <id> # shows status, URL, custom_domain
|
|
63
|
+
myapi container logs <id> --tail 100
|
|
64
|
+
|
|
65
|
+
# Unbind the custom domain
|
|
66
|
+
myapi container domain <id> --remove
|
|
67
|
+
```
|
|
68
|
+
<!-- llm:end -->
|
|
69
|
+
|
|
70
|
+
## Notes
|
|
71
|
+
|
|
72
|
+
- The scoped API key is shown **once** at create, and again (rotated) on every deploy. Save it if your code needs it.
|
|
73
|
+
- A `worker` is forced to ≥1 instance; a `service` scales to zero; only a `job` accepts `--cron`.
|
|
74
|
+
- Custom domains need a deployed container **and** a MyAPI-registered parent domain — see `my-domain-api`.
|
|
75
|
+
- Containers are for dynamic apps and native deps. For static sites use `my-funnel-api`; for edge functions use `my-function-api`.
|
|
76
|
+
|
|
77
|
+
Run `myapi container --help` for the full flag reference.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-container-api",
|
|
3
|
+
"description": "Run containers on demand — long-running services, background workers, and scheduled jobs. The heavier-duty sibling of edge functions, for native deps and long execution.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"status": "preview",
|
|
6
|
+
"published": true
|
|
7
|
+
}
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
The canonical store of engaged contacts + companies for an org. Auto-ingests from inbound webhooks via a configurable dot-path. Fixed lifecycle_stage enum (cold | warm | qualified | customer | churned). Append-only event timeline with reserved kinds. Soft delete + restore. Promote-from-Goldfox closes the discovery → engagement loop.
|
|
6
6
|
triggers: [crm, contact, company, lead, engagement, pipeline, lifecycle, qualified, customer, webhook ingest, promote]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-0ee12d579c51b300ff227a094c2082a2c6f3bf83d2d97ab16cb2f47ad3667fd6
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyCRMAPI
|
|
@@ -69,11 +69,11 @@ If a contact doesn't exist for the matched email, it's auto-created with `source
|
|
|
69
69
|
|
|
70
70
|
### Goldfox enrichment (deferred)
|
|
71
71
|
|
|
72
|
-
A
|
|
72
|
+
A contact promoted from Goldfox carries a `goldfox_person_id`. In v2 the GET response will join live, embedding the row as `goldfox_person`; today that field is null. Goldfox-only fields are not yet filterable in CRM search.
|
|
73
73
|
|
|
74
74
|
### Search filter — re-engagement semantics
|
|
75
75
|
|
|
76
|
-
`--max-last-engagement-days N` returns contacts last engaged *more than* N days ago
|
|
76
|
+
`--max-last-engagement-days N` returns contacts last engaged *more than* N days ago, and intentionally **includes contacts with no engagement at all** (promoted-but-never-emailed Goldfox leads) — the natural targets of a re-engagement campaign. To separate "never tried" from "tried and went cold," layer `--source goldfox` or post-filter the JSON.
|
|
77
77
|
|
|
78
78
|
### Failure modes
|
|
79
79
|
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
"name": "my-crm-api",
|
|
3
3
|
"description": "The canonical store of engaged people + companies. Auto-ingest from inbound webhooks (configurable dot-path). Fixed lifecycle_stage enum, soft delete, event timeline.",
|
|
4
4
|
"version": "1.0.0",
|
|
5
|
+
"status": "ga",
|
|
5
6
|
"published": true
|
|
6
7
|
}
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Per-org KV store with named namespaces, JSON values up to 256 KB, prefix-scan listing, and compare-and-swap via etag. The substrate for any stateful agent-built app on MyAPI — user tables, session stores, idempotency keys, per-user lookup maps.
|
|
6
6
|
triggers: [database, kv, key value, namespace, store, state, etag, cas, session, idempotency]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-247b0efe4af6d1eebc320a11b9b7ce3f5b1aa6a2f86fa80631bb3fec1e0a8d22
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyDatabaseAPI
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Register new domains and manage edge settings. Required before a funnel can go live on a custom URL.
|
|
6
6
|
triggers: [domain, register domain, dns, custom domain, edge, cdn, security level, browser check, renew, namecheap]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-067ab2cc412c1f1f34aaeeec5890f9eb77f680f5b2d1c847e376336702cd8344
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyDomainAPI
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Send transactional and bulk email from your own domain. Create mailboxes, send/receive messages, generate AI templates, and manage warmup.
|
|
6
6
|
triggers: [email, mailbox, send email, transactional email, template, warmup, inbox, outbox, ses, sender reputation]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-fa1eb6ee9e24935266643ceeecf7a748747b23377a0bfe256f76b71b62bd6349
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyEmailAPI
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Synchronous single-address email verification — syntax + DNS + Microsoft GetCredentialType probe. Returns a verdict in <1s for ~50% of inputs; the rest get verdict='unknown' with smtp_recommended=true. The pre-send quality gate for any outbound campaign.
|
|
6
6
|
triggers: [email verify, email validation, deliverability, smtp, syntax check, dns mx, microsoft, mx lookup, bounce prevention]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-a8f4d3fa04436c997d02d1d33f262190166e59e3e890b1c40a877bbd49ad3f00
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyEmailVerifyAPI
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: my-function-api
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: >
|
|
5
|
+
Deploy JavaScript functions to the MyAPI edge runtime (Cloudflare Workers). Register a function, upload a single-file JS bundle, get a live HTTP invocation URL or run it on a cron schedule. Each function gets a scoped capability key for cross-slot calls.
|
|
6
|
+
triggers: [function, deploy function, edge function, serverless, cloudflare worker, cron, scoped api key, capability key, invocation url, bundle]
|
|
7
|
+
checksum: sha256-ada0a52fdd9c0ba14ca86496e1c5c42e8b018155c3e8c83edba071fa6bd0b7e9
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# MyFunctionAPI
|
|
11
|
+
|
|
12
|
+
Deploy backend code without running a server. Register a function, upload a single-file JS bundle, and it goes live on the MyAPI edge runtime (Cloudflare Workers) with a public invocation URL — or runs on a cron schedule. Each function carries a scoped capability key so it can call other MyAPI slots with its own authority.
|
|
13
|
+
|
|
14
|
+
The full loop is live: **create → deploy → invoke → inspect runs → set secrets**.
|
|
15
|
+
|
|
16
|
+
## Capabilities
|
|
17
|
+
<!-- llm:start -->
|
|
18
|
+
**Two-step lifecycle: register, then deploy.** `myapi fn create --name <slug>` persists the function record and mints a `scoped_api_key`, returned **exactly once** (save it if you need it). `myapi fn deploy <id> <bundle.js>` uploads a single-file JavaScript bundle (≤4MB); the backend wraps it with the MYAPI shim and ships it to Cloudflare Workers. After deploy the function has a live `invocation_url`.
|
|
19
|
+
|
|
20
|
+
**Scoped key = capability key.** It is **org-locked**. By default it inherits the deployer's slot grants; narrow it at create time with `--scope <slot>[,<slot>...]` (comma-separated, e.g. `--scope email,storage`) — the primary way to deploy a deliberately narrow function. Grants can never exceed the caller's, so a function never out-reaches the credential that created it. It is rejected with `403 SCOPE_FORBIDDEN` at `/hq/*`, `/admin/*`, `/internal/*`. **Deploy rotates this key** — the fresh value is printed once on every deploy. (Minting a narrow account key first — `myapi keys create --grant ...` — is only needed when the *deploy credential itself* must be constrained, e.g. handing deploy rights to another system.)
|
|
21
|
+
|
|
22
|
+
**HTTP or cron triggers.** Default is `http` — the function gets a public invocation URL once deployed. Pass `--cron "<expr>"` at create time to run on a schedule (e.g. `"0 8 * * *"`) instead.
|
|
23
|
+
|
|
24
|
+
**Secrets via Worker Secrets.** `myapi fn env <id> <name> <value>` sets a secret (Stripe key, API token, …) as a Cloudflare Worker Secret on a deployed function. The value is encrypted at rest by Cloudflare and never stored or echoed by MyAPI. The function must already be deployed.
|
|
25
|
+
|
|
26
|
+
**Inspect invocations.** `myapi fn runs <id>` lists recent invocation records (most recent first, up to 100) with status, duration, and any error message.
|
|
27
|
+
|
|
28
|
+
Name rules (validated client- and server-side, kept identical):
|
|
29
|
+
- `^[a-z0-9][a-z0-9-]{0,49}$` — kebab-case, 1-50 chars
|
|
30
|
+
- Reserved server-side: `www`, `api`, `admin`, `system`, `default`
|
|
31
|
+
<!-- llm:end -->
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
<!-- generated:start -->
|
|
35
|
+
| Command | What it does |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `myapi fn create --name <name> [--cron <expr>] [--scope <slot>[,<slot>...]]` | Register a function record + receive scoped API key (returned once). `--scope` narrows the key's slot grants |
|
|
38
|
+
| `myapi fn deploy <id> <bundle.js>` | Upload a single-file JS bundle (≤4MB) and go live; rotates the scoped key |
|
|
39
|
+
| `myapi fn env <id> <name> <value>` | Set a Worker Secret on a deployed function |
|
|
40
|
+
| `myapi fn runs <id>` | List recent invocation records (status, duration, errors) |
|
|
41
|
+
| `myapi fn list` | List functions in your org |
|
|
42
|
+
| `myapi fn get <id>` | Inspect a function (name, trigger, invocation URL) |
|
|
43
|
+
| `myapi fn delete <id>` | Soft-delete the record + revoke the scoped key |
|
|
44
|
+
<!-- generated:end -->
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
<!-- llm:start -->
|
|
48
|
+
```bash
|
|
49
|
+
# Register an HTTP function (invocation_url is empty until you deploy)
|
|
50
|
+
myapi fn create --name my-app-api
|
|
51
|
+
# → Function created: fn_abc123
|
|
52
|
+
# Scoped API key (returned once — save it if you need it):
|
|
53
|
+
# hq_live_... (scoped keys are not visually distinct from account keys)
|
|
54
|
+
|
|
55
|
+
# Deploy a single-file JS bundle → goes live, scoped key is rotated
|
|
56
|
+
myapi fn deploy fn_abc123 ./dist/bundle.js
|
|
57
|
+
# → Deployed function fn_abc123
|
|
58
|
+
# Invocation URL: https://fn-abc123.<...>.workers.dev
|
|
59
|
+
# Scoped API key was rotated. New value (returned once): hq_live_...
|
|
60
|
+
|
|
61
|
+
# Set a secret (encrypted at rest by Cloudflare; never echoed)
|
|
62
|
+
myapi fn env fn_abc123 STRIPE_KEY sk_live_...
|
|
63
|
+
|
|
64
|
+
# Inspect recent invocations
|
|
65
|
+
myapi fn runs fn_abc123
|
|
66
|
+
|
|
67
|
+
# Register a cron function instead of HTTP
|
|
68
|
+
myapi fn create --name daily-report --cron "0 8 * * *"
|
|
69
|
+
|
|
70
|
+
# Register with a narrowed key — the function can only call email + storage
|
|
71
|
+
myapi fn create --name mailer --scope email,storage
|
|
72
|
+
|
|
73
|
+
# List + inspect
|
|
74
|
+
myapi fn list
|
|
75
|
+
myapi fn get fn_abc123
|
|
76
|
+
|
|
77
|
+
# Delete (revokes the scoped key — future calls with it return 401)
|
|
78
|
+
myapi fn delete fn_abc123
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Using the scoped key
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Save the key returned at create/deploy time
|
|
85
|
+
SCOPED_KEY="hq_live_..."
|
|
86
|
+
|
|
87
|
+
# Call slots the key was granted — works (within its org + grants)
|
|
88
|
+
curl -H "Authorization: Bearer $SCOPED_KEY" \
|
|
89
|
+
https://api.myapihq.com/database/orgs/$ORG_ID/namespaces
|
|
90
|
+
|
|
91
|
+
# Calling /hq/* with it — denied (403 SCOPE_FORBIDDEN)
|
|
92
|
+
curl -H "Authorization: Bearer $SCOPED_KEY" \
|
|
93
|
+
https://api.myapihq.com/hq/orgs
|
|
94
|
+
# → 403 {"error":{"code":"SCOPE_FORBIDDEN"}}
|
|
95
|
+
```
|
|
96
|
+
<!-- llm:end -->
|
|
97
|
+
|
|
98
|
+
## Notes
|
|
99
|
+
|
|
100
|
+
- The bundle is a **single JavaScript file** (≤4MB). Bundle your dependencies before deploy (esbuild/rollup/etc.).
|
|
101
|
+
- `--cron` is set at create time; the trigger type is fixed for the function's lifetime.
|
|
102
|
+
- Deploy rotates the scoped key on every call — re-capture the printed value if other systems use it.
|
|
103
|
+
|
|
104
|
+
Run `myapi fn --help` or `myapi fn <subcommand> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Create and publish websites (funnels) to the edge. Push raw HTML to any slug and it goes live instantly on your org's domain or preview subdomain.
|
|
6
6
|
triggers: [funnel, landing page, website, page, publish, push, slug, html, edge, preview subdomain, makeautonomous]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-3b463d6ac52fba7d44f89195b5704b02903ffdd9a677655f9c1bff0f13b25ab4
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyFunnelAPI
|
|
@@ -19,7 +19,7 @@ Funnels are the publishing surface. You create a funnel under an org (one comman
|
|
|
19
19
|
|
|
20
20
|
By default, your funnel lives on a free preview subdomain (`*.makeautonomous.com`) you get with every org. To serve on a custom domain, register and assign one via **mydomainapi** first.
|
|
21
21
|
|
|
22
|
-
Every funnel auto-provisions a **webhook** at creation
|
|
22
|
+
Every funnel auto-provisions a **webhook** at creation (`org_webhook_id`), and exposes two public proxy endpoints your HTML can call without an API key: a **form submit** at `POST /funnel/funnels/{id}/submit/{slug}` (delivers through that webhook — CRM upsert + bound workflows fire automatically), and an **analytics/event ingest** for pageviews and click tracking. Bind individual slugs to other destinations with `myapi funnel form ... --capture-to webhook:<id>`.
|
|
23
23
|
<!-- llm:end -->
|
|
24
24
|
|
|
25
25
|
## Commands
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Hosted git repositories over HTTP. Create repos, read history (log/show/tree/blob/diff), and write atomically (commit/branch/tag/merge) — no clone needed. Real `git clone`/`push` also work over HTTPS with your API key as the password.
|
|
6
6
|
triggers: [git, repo, repository, clone, push, commit, branch, tag, merge, diff, version control, source control, vcs]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-a059c8f2b59205a1d66ecf70556b60fa3a3606044aaa54e242344ea652efb5e9
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyGitAPI
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Generate AI images from a text prompt. Async — submit a prompt, the CLI polls until the image is ready, then returns a public CDN URL. Image lands automatically in your org's storage.
|
|
6
6
|
triggers: [image, generate image, ai image, hero image, logo, illustration, watercolor, prompt, cyberpunk, ratio, aspect ratio]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-17f496ae8c575743872e87c5c3b281e621b3557ef3ff9eeb0b3d664ec4212e57
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyImageAPI
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: my-llm-api
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.1
|
|
4
4
|
description: >
|
|
5
5
|
Two-surface LLM primitive. Raw chat completion against self-hosted
|
|
6
6
|
open-source models (you pick the model), and objective verbs
|
|
7
7
|
(classify / extract / summarize / draft) that hide the model behind a
|
|
8
8
|
task. Pricing in cents per 1M tokens; charged from your MyAPI balance.
|
|
9
9
|
triggers: [llm, completion, chat, embed, embedding, inference, classify, extract, summarize, draft, qwen]
|
|
10
|
-
checksum: sha256-
|
|
10
|
+
checksum: sha256-6c399da099802637c68eda61ba85a23286ff3dca8f50c391e80ab442777c17c4
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# MyLLMAPI
|
|
@@ -15,9 +15,9 @@ checksum: sha256-pending
|
|
|
15
15
|
A two-surface LLM gateway:
|
|
16
16
|
|
|
17
17
|
- **Raw** — `complete` / `embed` / `models`. You pick a self-hosted catalog model (run `myapi llm models` for the live list). Proprietary models are not callable here.
|
|
18
|
-
- **Verbs** — `classify` / `extract` / `summarize` / `draft`. You ask for a task done; the model is implementation detail
|
|
18
|
+
- **Verbs** — `classify` / `extract` / `summarize` / `draft`. You ask for a task done; the model is implementation detail.
|
|
19
19
|
|
|
20
|
-
Pricing is
|
|
20
|
+
Pricing is cents per 1M tokens at the actual upstream rate, debited from your MyAPI balance.
|
|
21
21
|
|
|
22
22
|
## Capabilities
|
|
23
23
|
<!-- llm:start -->
|
|
@@ -25,10 +25,7 @@ Use this for workflow tasks — summarize a doc, classify an inbound email, extr
|
|
|
25
25
|
|
|
26
26
|
**Don't use this as your own model.** If you're an agent reading this, you already have a more capable model than what's exposed here. Reach for the LLM verbs when you're scripting a recurring step where a small/cheap model is the right tool — not for one-shot reasoning you can just do yourself.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- **Raw `complete`** — full control: pick the model, build the `messages` array, set `max_tokens`/`temperature`/`stop`. Use when shape matters.
|
|
31
|
-
- **Verbs** — you want a *result* (label, JSON, summary, draft). Use when you don't care which model runs underneath.
|
|
28
|
+
Reach for raw `complete` when shape matters (you build the `messages` array and set `max_tokens`/`temperature`/`stop`); reach for a verb when you want a *result* and don't care which model produced it.
|
|
32
29
|
|
|
33
30
|
### Raw `complete` request
|
|
34
31
|
```json
|
|
@@ -87,7 +84,7 @@ Shared usage block on every verb:
|
|
|
87
84
|
{ "tier_used": "fast", "tokens_in": 65, "tokens_out": 37, "cost_cents": 0.005 }
|
|
88
85
|
```
|
|
89
86
|
|
|
90
|
-
The model/provider is **never** named in the verb response
|
|
87
|
+
The model/provider is **never** named in the verb response — the verb is the contract.
|
|
91
88
|
|
|
92
89
|
### OpenAI-compatible drop-in
|
|
93
90
|
|
|
@@ -103,8 +100,6 @@ r = client.chat.completions.create(model="<model-id>",
|
|
|
103
100
|
messages=[{"role":"user","content":"Hi"}])
|
|
104
101
|
```
|
|
105
102
|
|
|
106
|
-
Use raw `complete` for first-party code; the compat path for existing OpenAI/LangChain tooling.
|
|
107
|
-
|
|
108
103
|
<!-- llm:end -->
|
|
109
104
|
|
|
110
105
|
## Commands
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
"name": "my-llm-api",
|
|
3
3
|
"description": "Self-hosted open-source LLM: raw chat completions (you pick the model) + objective verbs (classify/extract/summarize/draft). Billed in cents per 1M tokens from your balance. Use in workflow steps, not for your own reasoning.",
|
|
4
4
|
"version": "1.0.0",
|
|
5
|
+
"status": "ga",
|
|
5
6
|
"published": true
|
|
6
7
|
}
|