Server definition
- Hash
- sha256:d8e5c3d3a4f689cd681cf79f4e75f9550df0ce62b6a90a162a4138f20698878b
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Read-only access to the JENRIKS daily photoblog: one photograph per day since January 1, 2006, alternating between Jens Herrmann and Erik Hehrmann. Use search_photos to find photos by keyword, place, category, photographer, tag or year; get_photo for one post by date (YYYY-MM-DD) or page URL; get_latest_photo for today's post; random_photo for serendipity; get_site_overview for totals, categories and section URLs. Every result carries a permanent page URL and the photographer credit. Photographs are copyrighted: credit the photographer, link the page, and send licensing questions to https://jenriks.com/contact/. search_photos pages with cursor/next_cursor; get_latest_photo takes an optional photographer (Erik or Jens) and get_site_overview an optional include list (photographers, categories, years, sections, license).",
"tools": [
{
"description": "Return today's JENRIKS photo (the newest post), or the newest post by one photographer when photographer is set. A new photo appears every day at 00:00 Europe/Berlin.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"photographer": {
"description": "Latest post by this photographer; omit for the newest post overall",
"enum": [
"Erik",
"Jens"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "get_latest_photo",
"outputSchema": {
"properties": {
"photo": {
"properties": {
"categories": {
"items": {
"type": "string"
},
"type": "array"
},
"credit": {
"description": "Ready-made credit line: photographer, JENRIKS, page URL",
"type": "string"
},
"date": {
"description": "Publication date, YYYY-MM-DD",
"format": "date",
"type": "string"
},
"geo": {
"description": "WGS 84 coordinates of the location when the post carries them, otherwise null",
"properties": {
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": [
"object",
"null"
]
},
"image": {
"properties": {
"full": {
"description": "1600 px long edge",
"format": "uri",
"type": "string"
},
"thumbnail": {
"description": "400 px long edge",
"format": "uri",
"type": [
"string",
"null"
]
}
},
"required": [
"full"
],
"type": "object"
},
"location": {
"description": "City and country when known",
"type": [
"string",
"null"
]
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"url": {
"description": "Permanent page URL",
"format": "uri",
"type": "string"
}
},
"required": [
"title",
"photographer",
"date",
"url",
"categories",
"tags",
"image",
"credit"
],
"type": "object"
}
},
"required": [
"photo"
],
"type": "object"
}
},
{
"description": "Return one JENRIKS post by publication date (YYYY-MM-DD) or by page URL / path (/YYYY/MM/DD/slug/).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"date": {
"description": "YYYY-MM-DD",
"type": "string"
},
"url": {
"description": "Page URL or path, e.g. /2026/09/04/liminal-space/",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "get_photo",
"outputSchema": {
"properties": {
"date": {
"type": "string"
},
"found": {
"type": "boolean"
},
"hint": {
"type": "string"
},
"photo": {
"properties": {
"categories": {
"items": {
"type": "string"
},
"type": "array"
},
"credit": {
"description": "Ready-made credit line: photographer, JENRIKS, page URL",
"type": "string"
},
"date": {
"description": "Publication date, YYYY-MM-DD",
"format": "date",
"type": "string"
},
"geo": {
"description": "WGS 84 coordinates of the location when the post carries them, otherwise null",
"properties": {
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": [
"object",
"null"
]
},
"image": {
"properties": {
"full": {
"description": "1600 px long edge",
"format": "uri",
"type": "string"
},
"thumbnail": {
"description": "400 px long edge",
"format": "uri",
"type": [
"string",
"null"
]
}
},
"required": [
"full"
],
"type": "object"
},
"location": {
"description": "City and country when known",
"type": [
"string",
"null"
]
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"url": {
"description": "Permanent page URL",
"format": "uri",
"type": "string"
}
},
"required": [
"title",
"photographer",
"date",
"url",
"categories",
"tags",
"image",
"credit"
],
"type": "object"
},
"url": {
"type": "string"
}
},
"required": [
"found"
],
"type": "object"
}
},
{
"description": "Totals, photographers, categories with counts, posts per year, section URLs, URL pattern and license terms. Pass include to keep only some of those blocks next to the totals and dates.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"include": {
"description": "Blocks to keep besides site, description, totals and dates; omit for everything",
"items": {
"enum": [
"photographers",
"categories",
"years",
"sections",
"license"
],
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"required": [],
"type": "object"
},
"name": "get_site_overview",
"outputSchema": {
"properties": {
"categories": {
"items": {
"properties": {
"name": {
"type": "string"
},
"photos": {
"type": "integer"
}
},
"required": [
"name",
"photos"
],
"type": "object"
},
"type": "array"
},
"description": {
"type": "string"
},
"first_date": {
"format": "date",
"type": "string"
},
"latest_date": {
"format": "date",
"type": "string"
},
"license": {
"type": "string"
},
"photographers": {
"items": {
"properties": {
"full_name": {
"type": "string"
},
"name": {
"type": "string"
},
"page": {
"format": "uri",
"type": "string"
},
"photos": {
"type": "integer"
}
},
"required": [
"name",
"full_name",
"photos",
"page"
],
"type": "object"
},
"type": "array"
},
"sections": {
"additionalProperties": {
"format": "uri",
"type": "string"
},
"type": "object"
},
"site": {
"type": "string"
},
"total_photos": {
"type": "integer"
},
"url_pattern": {
"type": "string"
},
"years": {
"items": {
"properties": {
"photos": {
"type": "integer"
},
"year": {
"type": "string"
}
},
"required": [
"year",
"photos"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"site",
"description",
"total_photos",
"first_date",
"latest_date",
"photographers",
"categories",
"years",
"sections",
"url_pattern",
"license"
],
"type": "object"
}
},
{
"description": "Return a random JENRIKS photo, optionally limited to a photographer, category or year.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"type": "string"
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"year": {
"minimum": 2005,
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "random_photo",
"outputSchema": {
"properties": {
"found": {
"type": "boolean"
},
"hint": {
"type": "string"
},
"photo": {
"properties": {
"categories": {
"items": {
"type": "string"
},
"type": "array"
},
"credit": {
"description": "Ready-made credit line: photographer, JENRIKS, page URL",
"type": "string"
},
"date": {
"description": "Publication date, YYYY-MM-DD",
"format": "date",
"type": "string"
},
"geo": {
"description": "WGS 84 coordinates of the location when the post carries them, otherwise null",
"properties": {
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": [
"object",
"null"
]
},
"image": {
"properties": {
"full": {
"description": "1600 px long edge",
"format": "uri",
"type": "string"
},
"thumbnail": {
"description": "400 px long edge",
"format": "uri",
"type": [
"string",
"null"
]
}
},
"required": [
"full"
],
"type": "object"
},
"location": {
"description": "City and country when known",
"type": [
"string",
"null"
]
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"url": {
"description": "Permanent page URL",
"format": "uri",
"type": "string"
}
},
"required": [
"title",
"photographer",
"date",
"url",
"categories",
"tags",
"image",
"credit"
],
"type": "object"
},
"pool_size": {
"type": "integer"
}
},
"required": [
"found"
],
"type": "object"
}
},
{
"description": "Search the JENRIKS archive (one photo per day since 2006). Free-text query matches title, place, categories, tags and photographer; filters narrow by photographer, category, year and location. Returns permanent page URLs, credits, coordinates and image URLs, newest first. Page with offset, or with the opaque cursor from next_cursor (cursor wins when both are sent).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "One of: Abstract, Architecture, B&W, Humans, Landscapes, Macro, Nature, News, Street, Studio, Time exposure",
"type": "string"
},
"cursor": {
"description": "Opaque page token from next_cursor; overrides offset",
"type": "string"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"location": {
"description": "City or country name, e.g. \"Iceland\"",
"type": "string"
},
"offset": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"query": {
"description": "Free text, e.g. \"harbour\", \"Barcelona\", \"fog\"",
"type": "string"
},
"year": {
"description": "Four-digit publication year",
"minimum": 2005,
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "search_photos",
"outputSchema": {
"properties": {
"cursor": {
"description": "Echo of the cursor this page was fetched with, when one was sent",
"type": "string"
},
"has_more": {
"description": "True when another page exists",
"type": "boolean"
},
"links": {
"properties": {
"next": {
"description": "The same request with cursor=next_cursor and no offset; null on the last page",
"format": "uri",
"type": [
"string",
"null"
]
},
"self": {
"description": "This request",
"format": "uri",
"type": "string"
}
},
"required": [
"self"
],
"type": "object"
},
"next_cursor": {
"description": "Opaque token for the next page; null on the last page. Send it back as cursor.",
"type": [
"string",
"null"
]
},
"next_offset": {
"description": "Kept for offset paging; present when more matches exist",
"type": "integer"
},
"offset": {
"description": "Offset of the first returned row; 0 when a cursor was used",
"minimum": 0,
"type": "integer"
},
"photos": {
"items": {
"properties": {
"categories": {
"items": {
"type": "string"
},
"type": "array"
},
"credit": {
"description": "Ready-made credit line: photographer, JENRIKS, page URL",
"type": "string"
},
"date": {
"description": "Publication date, YYYY-MM-DD",
"format": "date",
"type": "string"
},
"geo": {
"description": "WGS 84 coordinates of the location when the post carries them, otherwise null",
"properties": {
"latitude": {
"maximum": 90,
"minimum": -90,
"type": "number"
},
"longitude": {
"maximum": 180,
"minimum": -180,
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": [
"object",
"null"
]
},
"image": {
"properties": {
"full": {
"description": "1600 px long edge",
"format": "uri",
"type": "string"
},
"thumbnail": {
"description": "400 px long edge",
"format": "uri",
"type": [
"string",
"null"
]
}
},
"required": [
"full"
],
"type": "object"
},
"location": {
"description": "City and country when known",
"type": [
"string",
"null"
]
},
"photographer": {
"enum": [
"Erik",
"Jens"
],
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"type": "string"
},
"url": {
"description": "Permanent page URL",
"format": "uri",
"type": "string"
}
},
"required": [
"title",
"photographer",
"date",
"url",
"categories",
"tags",
"image",
"credit"
],
"type": "object"
},
"type": "array"
},
"returned": {
"minimum": 0,
"type": "integer"
},
"total_matches": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"total_matches",
"offset",
"returned",
"photos",
"has_more",
"next_cursor"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d8e5c3d3a4f689cd681cf79f4e75f9550df0ce62b6a90a162a4138f20698878b | sha256sum