refactor: remove pricing field from TPMJS specification
Remove pricing field from the entire project as it doesn't make sense for tool metadata: - Remove TpmjsPricingSchema and TpmjsPricing type from types package - Remove pricing from TpmjsRichSchema validation - Remove pricing from validateTpmjsField check - Remove pricing documentation from /spec page - Remove pricing examples from /publish page - Remove pricing from HOW_TO_PUBLISH_A_TOOL.md - Remove pricing from @tpmjs/createblogpost example package.json The pricing field was removed from Tier 3 (Rich) metadata as it's not relevant for tool discovery and integration. Tools can document pricing in their README or documentation links instead. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
251442f1d4
commit
4dc53338f2
5 changed files with 0 additions and 86 deletions
|
|
@ -133,10 +133,6 @@ Complete metadata for maximum visibility:
|
||||||
"type": "api-key",
|
"type": "api-key",
|
||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
"pricing": {
|
|
||||||
"model": "pay-per-use",
|
|
||||||
"cost": "$0.001 per request"
|
|
||||||
},
|
|
||||||
"frameworks": ["vercel-ai", "langchain"],
|
"frameworks": ["vercel-ai", "langchain"],
|
||||||
"links": {
|
"links": {
|
||||||
"documentation": "https://docs.example.com",
|
"documentation": "https://docs.example.com",
|
||||||
|
|
@ -316,9 +312,6 @@ Here's the complete `package.json` from the published example:
|
||||||
"required": false,
|
"required": false,
|
||||||
"type": "api-key"
|
"type": "api-key"
|
||||||
},
|
},
|
||||||
"pricing": {
|
|
||||||
"model": "free"
|
|
||||||
},
|
|
||||||
"frameworks": ["vercel-ai", "langchain"],
|
"frameworks": ["vercel-ai", "langchain"],
|
||||||
"links": {
|
"links": {
|
||||||
"documentation": "https://tpmjs.com/tools/createblogpost",
|
"documentation": "https://tpmjs.com/tools/createblogpost",
|
||||||
|
|
@ -362,7 +355,6 @@ Here's the complete `package.json` from the published example:
|
||||||
| Field | Type | Description |
|
| Field | Type | Description |
|
||||||
|-------|------|-------------|
|
|-------|------|-------------|
|
||||||
| `authentication` | object | Auth requirements |
|
| `authentication` | object | Auth requirements |
|
||||||
| `pricing` | object | Pricing information |
|
|
||||||
| `frameworks` | array | Compatible frameworks |
|
| `frameworks` | array | Compatible frameworks |
|
||||||
| `links` | object | Related URLs |
|
| `links` | object | Related URLs |
|
||||||
| `tags` | array | Additional tags |
|
| `tags` | array | Additional tags |
|
||||||
|
|
@ -393,23 +385,6 @@ If your tool requires authentication:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Pricing Models
|
|
||||||
|
|
||||||
```json
|
|
||||||
"pricing": {
|
|
||||||
"model": "free" // or "pay-per-use", "subscription", "freemium"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
For paid tools, add cost information:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"pricing": {
|
|
||||||
"model": "pay-per-use",
|
|
||||||
"cost": "$0.001 per request"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Quality Score
|
## Quality Score
|
||||||
|
|
||||||
Your tool gets a quality score based on:
|
Your tool gets a quality score based on:
|
||||||
|
|
|
||||||
|
|
@ -169,10 +169,6 @@ export default function PublishPage(): React.ReactElement {
|
||||||
"type": "api-key",
|
"type": "api-key",
|
||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
"pricing": {
|
|
||||||
"model": "pay-per-use",
|
|
||||||
"cost": "$0.001 per request"
|
|
||||||
},
|
|
||||||
"frameworks": ["vercel-ai", "langchain"],
|
"frameworks": ["vercel-ai", "langchain"],
|
||||||
"links": {
|
"links": {
|
||||||
"documentation": "https://docs.example.com",
|
"documentation": "https://docs.example.com",
|
||||||
|
|
|
||||||
|
|
@ -313,29 +313,6 @@ export default function SpecPage(): React.ReactElement {
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
|
||||||
<h4 className="text-lg font-semibold text-foreground mb-2">
|
|
||||||
<code>pricing</code>
|
|
||||||
</h4>
|
|
||||||
<p className="text-sm text-foreground-secondary mb-2">
|
|
||||||
Pricing information. Fields:
|
|
||||||
</p>
|
|
||||||
<ul className="list-disc list-inside space-y-1 text-sm text-foreground-secondary ml-4">
|
|
||||||
<li>
|
|
||||||
<code className="text-foreground">model</code> - "free", "freemium",
|
|
||||||
"paid", or "enterprise"
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<code className="text-foreground">freeLimit</code> - Description of free
|
|
||||||
tier limits (optional)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<code className="text-foreground">paidUrl</code> - Pricing page URL
|
|
||||||
(optional)
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h4 className="text-lg font-semibold text-foreground mb-2">
|
<h4 className="text-lg font-semibold text-foreground mb-2">
|
||||||
<code>frameworks</code>
|
<code>frameworks</code>
|
||||||
|
|
@ -448,11 +425,6 @@ export default function SpecPage(): React.ReactElement {
|
||||||
"envVar": "SENTIMENT_API_KEY",
|
"envVar": "SENTIMENT_API_KEY",
|
||||||
"docsUrl": "https://docs.example.com/auth"
|
"docsUrl": "https://docs.example.com/auth"
|
||||||
},
|
},
|
||||||
"pricing": {
|
|
||||||
"model": "freemium",
|
|
||||||
"freeLimit": "1000 requests/month",
|
|
||||||
"paidUrl": "https://example.com/pricing"
|
|
||||||
},
|
|
||||||
"frameworks": ["vercel-ai", "langchain"],
|
"frameworks": ["vercel-ai", "langchain"],
|
||||||
"links": {
|
"links": {
|
||||||
"documentation": "https://docs.example.com",
|
"documentation": "https://docs.example.com",
|
||||||
|
|
@ -579,19 +551,6 @@ export default function SpecPage(): React.ReactElement {
|
||||||
<td className="py-3 px-4">No</td>
|
<td className="py-3 px-4">No</td>
|
||||||
<td className="py-3 px-4">Auth requirements</td>
|
<td className="py-3 px-4">Auth requirements</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr className="border-b border-border">
|
|
||||||
<td className="py-3 px-4">
|
|
||||||
<code className="text-foreground">pricing</code>
|
|
||||||
</td>
|
|
||||||
<td className="py-3 px-4">object</td>
|
|
||||||
<td className="py-3 px-4">
|
|
||||||
<Badge variant="success" size="sm">
|
|
||||||
Rich
|
|
||||||
</Badge>
|
|
||||||
</td>
|
|
||||||
<td className="py-3 px-4">No</td>
|
|
||||||
<td className="py-3 px-4">Pricing model and details</td>
|
|
||||||
</tr>
|
|
||||||
<tr className="border-b border-border">
|
<tr className="border-b border-border">
|
||||||
<td className="py-3 px-4">
|
<td className="py-3 px-4">
|
||||||
<code className="text-foreground">frameworks</code>
|
<code className="text-foreground">frameworks</code>
|
||||||
|
|
|
||||||
|
|
@ -84,9 +84,6 @@
|
||||||
"required": false,
|
"required": false,
|
||||||
"type": "api-key"
|
"type": "api-key"
|
||||||
},
|
},
|
||||||
"pricing": {
|
|
||||||
"model": "free"
|
|
||||||
},
|
|
||||||
"frameworks": ["vercel-ai", "langchain"],
|
"frameworks": ["vercel-ai", "langchain"],
|
||||||
"links": {
|
"links": {
|
||||||
"documentation": "https://tpmjs.com/tools/createblogpost",
|
"documentation": "https://tpmjs.com/tools/createblogpost",
|
||||||
|
|
|
||||||
|
|
@ -55,17 +55,6 @@ export const TpmjsAuthenticationSchema = z.object({
|
||||||
|
|
||||||
export type TpmjsAuthentication = z.infer<typeof TpmjsAuthenticationSchema>;
|
export type TpmjsAuthentication = z.infer<typeof TpmjsAuthenticationSchema>;
|
||||||
|
|
||||||
/**
|
|
||||||
* Pricing information schema
|
|
||||||
*/
|
|
||||||
export const TpmjsPricingSchema = z.object({
|
|
||||||
model: z.enum(['free', 'freemium', 'paid', 'enterprise']),
|
|
||||||
freeLimit: z.string().optional(),
|
|
||||||
paidUrl: z.string().url().optional(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export type TpmjsPricing = z.infer<typeof TpmjsPricingSchema>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* External links schema
|
* External links schema
|
||||||
*/
|
*/
|
||||||
|
|
@ -111,7 +100,6 @@ export const TpmjsRichSchema = TpmjsMinimalSchema.extend({
|
||||||
parameters: z.array(TpmjsParameterSchema).optional(),
|
parameters: z.array(TpmjsParameterSchema).optional(),
|
||||||
returns: TpmjsReturnsSchema.optional(),
|
returns: TpmjsReturnsSchema.optional(),
|
||||||
authentication: TpmjsAuthenticationSchema.optional(),
|
authentication: TpmjsAuthenticationSchema.optional(),
|
||||||
pricing: TpmjsPricingSchema.optional(),
|
|
||||||
frameworks: z
|
frameworks: z
|
||||||
.array(z.enum(['vercel-ai', 'langchain', 'llamaindex', 'haystack', 'semantic-kernel']))
|
.array(z.enum(['vercel-ai', 'langchain', 'llamaindex', 'haystack', 'semantic-kernel']))
|
||||||
.optional(),
|
.optional(),
|
||||||
|
|
@ -151,7 +139,6 @@ export function validateTpmjsField(tpmjs: unknown): ValidationResult {
|
||||||
data.parameters ||
|
data.parameters ||
|
||||||
data.returns ||
|
data.returns ||
|
||||||
data.authentication ||
|
data.authentication ||
|
||||||
data.pricing ||
|
|
||||||
data.frameworks ||
|
data.frameworks ||
|
||||||
data.links ||
|
data.links ||
|
||||||
data.tags ||
|
data.tags ||
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue