Server definition
- Hash
- sha256:c596b2668d368492acc597943d263726b51e1731389742027d6d66bb713db9d4
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Return a short bio about Cameron Rye, the portfolio owner.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_about",
"outputSchema": null
},
{
"description": "Return what Cameron is currently working on, learning, building, reading, and up to in life — the live /now page sections.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_now",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"body": {
"type": "string"
},
"status": {
"type": "string"
},
"title": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
},
"required": [
"title",
"status"
],
"type": "object"
},
"type": "array"
},
"url": {
"type": "string"
}
},
"required": [
"url",
"sections"
],
"type": "object"
}
},
{
"description": "Return the full markdown body and frontmatter of a post by slug.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_post",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"body": {
"type": "string"
},
"frontmatter": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"slug": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"frontmatter",
"body",
"url"
],
"type": "object"
}
},
{
"description": "Return the full markdown body and frontmatter of a project by slug.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_project",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"body": {
"type": "string"
},
"frontmatter": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"slug": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"frontmatter",
"body",
"url"
],
"type": "object"
}
},
{
"description": "Return live, PII-free operational stats for rye.dev: recent Core Web Vitals p75s, 30-day pageviews, trailing-30d uptime %, top-reacted pages, and the last deploy. Same data the homepage pulse strip shows.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "get_pulse",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"pulse": {
"additionalProperties": false,
"properties": {
"asOf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"deploy": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildSeconds": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"completedAt": {
"type": "number"
},
"message": {
"type": "string"
},
"sha": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"sha",
"message",
"branch",
"status",
"buildSeconds",
"completedAt"
],
"type": "object"
},
{
"type": "null"
}
]
},
"pageviews": {
"additionalProperties": false,
"properties": {
"days": {
"type": "number"
},
"series": {
"items": {
"type": "number"
},
"type": "array"
},
"total": {
"type": "number"
}
},
"required": [
"days",
"total",
"series"
],
"type": "object"
},
"topReacted": {
"items": {
"additionalProperties": false,
"properties": {
"count": {
"type": "number"
},
"path": {
"type": "string"
}
},
"required": [
"path",
"count"
],
"type": "object"
},
"type": "array"
},
"uptime": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"avgMs": {
"type": "number"
},
"days": {
"type": "number"
},
"pct": {
"type": "number"
}
},
"required": [
"pct",
"avgMs",
"days"
],
"type": "object"
},
{
"type": "null"
}
]
},
"webVitals": {
"items": {
"additionalProperties": false,
"properties": {
"metric": {
"type": "string"
},
"p75": {
"type": "number"
},
"rating": {
"type": "string"
},
"unit": {
"type": "string"
}
},
"required": [
"metric",
"p75",
"unit",
"rating"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"asOf",
"webVitals",
"pageviews",
"uptime",
"topReacted",
"deploy"
],
"type": "object"
},
"url": {
"type": "string"
}
},
"required": [
"url",
"pulse"
],
"type": "object"
}
},
{
"description": "Return Cameron's reading list — books currently reading, finished, or abandoned, with notes. Filter by status if given.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"status": {
"enum": [
"reading",
"finished",
"abandoned"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_reading",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"books": {
"items": {
"additionalProperties": false,
"properties": {
"author": {
"type": "string"
},
"finished": {
"type": "string"
},
"notes": {
"type": "string"
},
"started": {
"type": "string"
},
"status": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"author",
"status"
],
"type": "object"
},
"type": "array"
},
"url": {
"type": "string"
}
},
"required": [
"url",
"books"
],
"type": "object"
}
},
{
"description": "Return up to N most recent published blog posts.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "list_posts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"posts": {
"items": {
"additionalProperties": false,
"properties": {
"date": {
"type": "string"
},
"description": {
"type": "string"
},
"slug": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"slug",
"title",
"description",
"date",
"tags"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"posts"
],
"type": "object"
}
},
{
"description": "Return all portfolio projects with their slug, title, and short description.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_projects",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projects": {
"items": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"slug",
"title",
"description"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"projects"
],
"type": "object"
}
},
{
"description": "Case-insensitive substring match across title, description, and tags. Returns up to 10 matches.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_posts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"matches": {
"items": {
"additionalProperties": false,
"properties": {
"date": {
"type": "string"
},
"description": {
"type": "string"
},
"slug": {
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"slug",
"title",
"description",
"date",
"tags"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"matches"
],
"type": "object"
}
},
{
"description": "Semantic (vector similarity) search across blog posts and projects — the same Cloudflare Vectorize retrieval the Ask chatbot uses, without the LLM call. Broader than search_posts (which only does exact substring matching on title/description/tags): finds conceptually related content even when the query words never appear verbatim. Returns scored chunks with deep-link URLs.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"default": 5,
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"query": {
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_site",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"score": {
"type": "number"
},
"snippet": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url",
"score",
"snippet"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Send Cameron a message through the site contact form. Subject to the same validation and per-IP rate limits as the contact form itself.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"email": {
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"message": {
"type": "string"
},
"name": {
"type": "string"
},
"subject": {
"type": "string"
}
},
"required": [
"name",
"email",
"subject",
"message"
],
"type": "object"
},
"name": "submit_contact",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"success": {
"type": "boolean"
}
},
"required": [
"success",
"id"
],
"type": "object"
}
},
{
"description": "Subscribe an email address to the newsletter. Sends a confirmation email; the subscription only becomes active once confirmed. Same validation and per-IP rate limits as the signup form.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"email": {
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"source": {
"maxLength": 50,
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"name": "subscribe_newsletter",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"message": {
"type": "string"
},
"success": {
"type": "boolean"
}
},
"required": [
"success",
"message"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c596b2668d368492acc597943d263726b51e1731389742027d6d66bb713db9d4 | sha256sum