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:
Ajax Davis 2025-12-01 04:57:21 +10:00
parent d839536eb0
commit a6ec7df800
5 changed files with 0 additions and 86 deletions

View file

@ -133,10 +133,6 @@ Complete metadata for maximum visibility:
"type": "api-key",
"required": true
},
"pricing": {
"model": "pay-per-use",
"cost": "$0.001 per request"
},
"frameworks": ["vercel-ai", "langchain"],
"links": {
"documentation": "https://docs.example.com",
@ -316,9 +312,6 @@ Here's the complete `package.json` from the published example:
"required": false,
"type": "api-key"
},
"pricing": {
"model": "free"
},
"frameworks": ["vercel-ai", "langchain"],
"links": {
"documentation": "https://tpmjs.com/tools/createblogpost",
@ -362,7 +355,6 @@ Here's the complete `package.json` from the published example:
| Field | Type | Description |
|-------|------|-------------|
| `authentication` | object | Auth requirements |
| `pricing` | object | Pricing information |
| `frameworks` | array | Compatible frameworks |
| `links` | object | Related URLs |
| `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
Your tool gets a quality score based on:

View file

@ -169,10 +169,6 @@ export default function PublishPage(): React.ReactElement {
"type": "api-key",
"required": true
},
"pricing": {
"model": "pay-per-use",
"cost": "$0.001 per request"
},
"frameworks": ["vercel-ai", "langchain"],
"links": {
"documentation": "https://docs.example.com",

View file

@ -313,29 +313,6 @@ export default function SpecPage(): React.ReactElement {
</ul>
</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>
<h4 className="text-lg font-semibold text-foreground mb-2">
<code>frameworks</code>
@ -448,11 +425,6 @@ export default function SpecPage(): React.ReactElement {
"envVar": "SENTIMENT_API_KEY",
"docsUrl": "https://docs.example.com/auth"
},
"pricing": {
"model": "freemium",
"freeLimit": "1000 requests/month",
"paidUrl": "https://example.com/pricing"
},
"frameworks": ["vercel-ai", "langchain"],
"links": {
"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">Auth requirements</td>
</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">
<td className="py-3 px-4">
<code className="text-foreground">frameworks</code>

View file

@ -84,9 +84,6 @@
"required": false,
"type": "api-key"
},
"pricing": {
"model": "free"
},
"frameworks": ["vercel-ai", "langchain"],
"links": {
"documentation": "https://tpmjs.com/tools/createblogpost",

View file

@ -55,17 +55,6 @@ export const TpmjsAuthenticationSchema = z.object({
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
*/
@ -111,7 +100,6 @@ export const TpmjsRichSchema = TpmjsMinimalSchema.extend({
parameters: z.array(TpmjsParameterSchema).optional(),
returns: TpmjsReturnsSchema.optional(),
authentication: TpmjsAuthenticationSchema.optional(),
pricing: TpmjsPricingSchema.optional(),
frameworks: z
.array(z.enum(['vercel-ai', 'langchain', 'llamaindex', 'haystack', 'semantic-kernel']))
.optional(),
@ -151,7 +139,6 @@ export function validateTpmjsField(tpmjs: unknown): ValidationResult {
data.parameters ||
data.returns ||
data.authentication ||
data.pricing ||
data.frameworks ||
data.links ||
data.tags ||