Paydirt
NPM · PAYDIRT-MCP · SCANNED AUG 3
Agent-native installer and control plane for Paydirt iOS feedback
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security86
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability66
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2827 tokens (~128/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
- Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (86% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · paydirt-mcp
claude mcp add paydirt-ai-paydirt-mcp -- npx -y paydirt-mcp
codex mcp add paydirt-ai-paydirt-mcp -- npx -y paydirt-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"paydirt-ai-paydirt-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"paydirt-mcp"
],
"enabled": true
}
}
} openclaw mcp add paydirt-ai-paydirt-mcp --command npx --arg -y --arg paydirt-mcp
mcp_servers:
paydirt-ai-paydirt-mcp:
command: "npx"
args: ["-y", "paydirt-mcp"] {
"mcpServers": {
"paydirt-ai-paydirt-mcp": {
"command": "npx",
"args": [
"-y",
"paydirt-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +45
- Provenance: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Tool coverage: 100 → unverified ▼ functional
- License: unverified → pass ▲ functional
- Stability: unverified → 0.10 ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → good ▲ functional
- Licence: MIT functional
- 1 Aug 26 +15
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Schema quality: unverified functional
- First check of Tool coverage: 100 functional
- First check of Tool coverage: 86 functional
- 31 Jul 26 5
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
paydirt_add_feedback_form ~306
Use this when the user asks for a named feedback form at a screen, button, lifecycle moment, or in-app action. Creates or reuses a normalized-title match, preserves the placement verbatim, optionally resolves Slack, and returns exact Swift plus mandatory edit/build/test actions. Remote form creation alone is not completion.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The Paydirt app ID. Discover it with setup or list_apps rather than asking if it is already available. |
| custom_system_prompt | string | — | Optional guidance for AI follow-up questions. |
| initial_question | string | — | Optional first question. Defaults to “What would you like us to know?”. If supplied on a retry, the existing matching form is updated instead of duplicated. |
| placement | string | yes | The exact host-app location or action from the user, such as “Settings below Restore Purchases” or “after a successful export”. Preserve this text through implementation and reporting. |
| slack_channel | string | — | Optional Slack channel name (with or without #) or channel ID. If omitted, the contract still requires the agent to connect Slack and assign a channel before completion. |
| title | string | yes | The exact user-requested form title, such as “Post Export Feedback”. |
| trigger | string | yes | How presentation is triggered. Use user_tap for a button/menu item, in_app_action after an action succeeds, screen_appearance when opening a screen, or custom_condition for app-specific logic. |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_actions | array | yes | — |
| completion_requirements | object | yes | — |
| form | object | yes | — |
| form_action | string | yes | — |
| ios | object | yes | — |
| requested_placement | object | yes | — |
| slack | object | yes | — |
| success | boolean | yes | — |
No examples provided.
paydirt_ask ~123
Use this when the user asks a natural-language analytical question about their Paydirt feedback, such as pricing themes or feature requests. Reads actual responses and returns analysis without taking action.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| days | number | — | Number of days of data to analyze (default: 30) |
| form_id | string | — | Filter to a specific form (optional) |
| question | string | yes | Your question about the feedback (e.g., "What are users saying about pricing?" or "What features are most requested?") |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | — |
| days | number | yes | — |
| response_count | number | yes | — |
No examples provided.
paydirt_begin_setup ~225
Use this when installing Paydirt for a new user, machine, or iOS app and authentication has not been completed. Inspect the host first and pass its app identity, use cases, and subscription provider. Returns authorization_url, session_id, and exact finish_arguments immediately; it never launches a browser, sleeps, or polls.
| Name | Type | Req | Description |
|---|---|---|---|
| app_description | string | — | Optional app description to save when creating or repairing setup |
| app_name | string | — | Preferred app name to reuse or create during setup |
| bundle_id | string | — | Preferred iOS bundle ID to match during setup |
| subscription_product_ids | array | — | Native StoreKit auto-renewable product IDs. Required for a complete storekit integration. |
| subscription_provider | string | — | Subscription source of truth discovered in the host app. Use auto only when it could not be resolved before setup. |
| use_cases | array | — | Feedback experiences to install. Defaults to regular feedback, trial cancellation, and subscription cancellation. |
| uses_revenuecat | boolean | — | Deprecated compatibility input. Prefer subscription_provider. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| status | string | yes | — |
| success | boolean | yes | — |
No examples provided.
paydirt_connect_slack ~77
Use this when the user asks to connect Slack or setup requires Slack delivery. Returns the Slack OAuth URL. Authorization creates a new #paydirt-cancellation-feedback channel (numbered when the name is taken) and assigns every installed form automatically when workspace policy allows it.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| Name | Type | Req | Description |
|---|---|---|---|
| auth_url | string | yes | — |
No examples provided.
paydirt_create_app ~85
Use this when the user explicitly needs a separate Paydirt app and setup cannot reuse or create it. Creates a new app; list existing apps first when duplication is possible.
| Name | Type | Req | Description |
|---|---|---|---|
| app_description | string | — | Description of the app (optional) |
| bundle_id | string | — | iOS bundle ID (optional) |
| name | string | yes | Name of the app |
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | — |
| bundle_id | string|null | — | — |
| id | string | yes | — |
| name | string | yes | — |
No examples provided.
paydirt_create_form ~142
Use this when creating a low-level remote form without a host-app placement request. First confirm a matching form does not exist. Map subscription cancellation to cancellation, trial cancellation to trial_expiration, and regular feedback to custom; then wire the returned ID into iOS and assign Slack. Prefer paydirt_add_feedback_form for named screen or action placement.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| custom_system_prompt | string | — | Custom system prompt for AI (optional) |
| name | string | yes | Name of the form |
| prompt | string | yes | Initial prompt/question for the form |
| type | string | yes | Type of form |
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | — |
| enabled | boolean | — | — |
| id | string | yes | — |
| name | string | yes | — |
| prompt | string | yes | — |
| slack_channel_id | string|null | — | — |
| type | string | yes | — |
No examples provided.
paydirt_delete_form ~59
Use this when the user explicitly asks to permanently delete a specific Paydirt form. This is destructive and should only be called after inspecting the form when its identity is uncertain.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | The form ID to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| success | boolean | yes | — |
No examples provided.
paydirt_finish_setup ~234
Use this when the user has opened the authorization URL returned by paydirt_begin_setup. Checks one setup session and returns immediately. If pending, do not loop or sleep. When ready, securely saves credentials and returns the complete host-app installation, Slack, build, and verification contract.
| Name | Type | Req | Description |
|---|---|---|---|
| app_description | string | — | Optional app description to save when creating or repairing setup |
| app_name | string | — | Preferred app name to reuse or create during setup |
| bundle_id | string | — | Preferred iOS bundle ID to match during setup |
| session_id | string | yes | The session_id returned by paydirt_begin_setup. |
| subscription_product_ids | array | — | Native StoreKit auto-renewable product IDs. Required for a complete storekit integration. |
| subscription_provider | string | — | Subscription source of truth discovered in the host app. Use auto only when it could not be resolved before setup. |
| use_cases | array | — | Feedback experiences to install. Defaults to regular feedback, trial cancellation, and subscription cancellation. |
| uses_revenuecat | boolean | — | Deprecated compatibility input. Prefer subscription_provider. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| status | string | yes | — |
| success | boolean | yes | — |
No examples provided.
paydirt_get_app ~54
Use this when the agent needs the current identity, bundle ID, SDK key, or configuration for one known Paydirt app. Does not modify the app.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | — |
| bundle_id | string|null | — | — |
| id | string | yes | — |
| name | string | yes | — |
No examples provided.
paydirt_get_form ~51
Use this when the agent needs the current prompt, type, enabled state, or Slack assignment for one known form. Does not modify the form.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | yes | The form ID |
| Name | Type | Req | Description |
|---|---|---|---|
| form | object | yes | — |
No examples provided.
paydirt_get_responses ~141
Use this when the user or coding agent needs raw feedback conversations, exact Q/A turns, input type, subscription metadata, or a read-only inbox cursor. Defaults to completed conversations. Use since plus the newest updated_at for incremental reads; never take action from responses automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| form_id | string | — | Filter by form ID (optional) |
| limit | number | — | Maximum responses to return (default: 50) |
| since | string | — | Only return responses created at or after this ISO-8601 timestamp |
| status | string | — | Conversation status filter (default: completed) |
No output schema declared.
No examples provided.
paydirt_get_summary ~88
Use this when the user asks for an aggregate AI summary of recent Paydirt responses. Raw questions and answers remain the source of truth; this read-only summary is supplementary.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| days | number | — | Number of days to include (default: 7) |
| form_id | string | — | Filter by form ID (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | yes | — |
| response_count | number | yes | — |
| summary | string | yes | — |
| top_reasons | array | yes | — |
No examples provided.
paydirt_health_check ~36
Use this when diagnosing whether the Paydirt API is reachable and stored authentication is valid. Performs a read-only connectivity check.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| authenticated | boolean | yes | — |
| status | string | yes | — |
No examples provided.
paydirt_list_apps ~49
Use this when the user asks which Paydirt apps exist or when an agent must resolve an app ID after setup. Lists all apps for the authenticated Paydirt account without changing them.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
paydirt_list_forms ~53
Use this when the user asks which forms exist or the agent needs to resolve or deduplicate forms for a Paydirt app. Does not modify forms.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
No output schema declared.
No examples provided.
paydirt_list_slack_channels ~51
Use this when Slack is connected and the agent must resolve a requested channel name to its channel ID. Lists available channels without changing assignments.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| Name | Type | Req | Description |
|---|---|---|---|
| channels | array | yes | — |
| team_name | string | yes | — |
No examples provided.
paydirt_set_form_channel ~76
Use this when a form must deliver completed conversations to a specific Slack channel ID. Replaces that form’s current channel assignment and should be verified afterward.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| channel_id | string | yes | The Slack channel ID |
| form_id | string | yes | The form ID |
| Name | Type | Req | Description |
|---|---|---|---|
| form | object | yes | — |
No examples provided.
paydirt_setup ~255
Use this when an older client expects the single setup tool. Without session_id it starts setup and immediately returns authorization_url plus finish arguments; with session_id it checks once and returns pending, expired, or the complete installation contract. It never opens a browser or blocks. New agents should prefer paydirt_begin_setup and paydirt_finish_setup.
| Name | Type | Req | Description |
|---|---|---|---|
| app_description | string | — | Optional app description to save when creating or repairing setup |
| app_name | string | — | Preferred app name to reuse or create during setup |
| bundle_id | string | — | Preferred iOS bundle ID to match during setup |
| session_id | string | — | Setup session returned by the first call. When present, this call behaves like paydirt_finish_setup. |
| subscription_product_ids | array | — | Native StoreKit auto-renewable product IDs. Required for a complete storekit integration. |
| subscription_provider | string | — | Subscription source of truth discovered in the host app. Use auto only when it could not be resolved before setup. |
| use_cases | array | — | Feedback experiences to install. Defaults to regular feedback, trial cancellation, and subscription cancellation. |
| uses_revenuecat | boolean | — | Deprecated compatibility input. Prefer subscription_provider. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | — | — |
| status | string | yes | — |
| success | boolean | yes | — |
No examples provided.
paydirt_slack_status ~70
Use this when Slack authorization has finished and before declaring setup complete. Reports the created Paydirt cancellation feedback channel and whether every installed form is assigned. List or select channels only when automatic creation was blocked or the user requested another channel.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | The app ID |
| Name | Type | Req | Description |
|---|---|---|---|
| connected | boolean | yes | — |
| team_name | string|null | yes | — |
No examples provided.
paydirt_toggle_form ~77
Use this when the user asks to enable or disable an existing form remotely. Disabled forms are not shown by the SDK; calling again with the opposite value reverses the change.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | Whether the form should be enabled (true) or disabled (false) |
| form_id | string | yes | The form ID |
| Name | Type | Req | Description |
|---|---|---|---|
| form | object | yes | — |
No examples provided.
paydirt_update_app ~129
Use this when the user asks to change an existing Paydirt app’s identity, bundle ID, description, or AI context. Only supplied fields are updated.
| Name | Type | Req | Description |
|---|---|---|---|
| app_context_prompt | string | — | Context about the app for AI (optional) |
| app_description | string | — | Description of the app (optional) |
| app_id | string | yes | The app ID |
| bundle_id | string | — | iOS bundle ID (optional) |
| name | string | — | New name for the app (optional) |
| system_prompt | string | — | Custom system prompt for AI responses (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | string | yes | — |
| bundle_id | string|null | — | — |
| id | string | yes | — |
| name | string | yes | — |
No examples provided.
paydirt_update_form ~97
Use this when the user asks to change an existing form’s name, initial question, or AI follow-up guidance. Only supplied fields are updated.
| Name | Type | Req | Description |
|---|---|---|---|
| custom_system_prompt | string | — | New custom system prompt for AI (optional) |
| form_id | string | yes | The form ID |
| name | string | — | New name for the form (optional) |
| prompt | string | — | New prompt/question for the form (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| form | object | yes | — |
No examples provided.