From robots.txt to agents.json // web for AI-Agents

Why agents.json, not human-like UX? // Agents can do almost anything as humans do, but it’s an overhead

sbagency
5 min read1 day ago
https://www.linkedin.com/posts/y-combinator_wildcard-yc-w25-is-the-gateway-for-ai-agents-activity-7298476525874491392-CseP
https://www.ycombinator.com/launches/MrK-wildcard-make-apis-just-work-for-ai-agents
https://wild-card.ai/

The agents.json Specification is an open specification that formally describes contracts for API and agent interactions, built on top of the OpenAPI standard. The current version is 0.1.0.

Use the Wildcard Bridge Python package to load, parse, and run agents.json.

{
"agentsJson": "0.1.0",
"info": {
"title": "Giphy Agent Flows",
"version": "0.1.1",
"description": "A set of flows for common Giphy API operations, where the api_key parameter is handled outside of these flows."
},
"sources": [
{
"id": "giphy",
"path": "https://raw.githubusercontent.com/kmahorker/tmp/refs/heads/master/giphy/openapi.yaml"
}
],
"flows": [
{
"id": "get_trending_gifs_flow",
"title": "Get Trending GIFs",
"description": "Returns a list of the most relevant and engaging GIFs each day using /gifs/trending.",
"actions": [
{
"id": "fetch_trending_gifs",
"sourceId": "giphy",
"operationId": "giphy_get_gifs_trending"
}
],
"links": [
{
"origin": { "actionId": "get_trending_gifs_flow", "fieldPath": "parameters.limit" },
"target": { "actionId": "fetch_trending_gifs", "fieldPath": "parameters.limit" }
},
{
"origin": { "actionId": "get_trending_gifs_flow", "fieldPath": "parameters.offset" },
"target": { "actionId": "fetch_trending_gifs", "fieldPath": "parameters.offset" }
},
{
"origin": { "actionId": "get_trending_gifs_flow", "fieldPath": "parameters.rating" },
"target": { "actionId": "fetch_trending_gifs", "fieldPath": "parameters.rating" }
},
{
"origin": { "actionId": "get_trending_gifs_flow", "fieldPath": "parameters.random_id" },
"target": { "actionId": "fetch_trending_gifs", "fieldPath": "parameters.random_id" }
},
{
"origin": { "actionId": "get_trending_gifs_flow", "fieldPath": "parameters.bundle" },
"target": { "actionId": "fetch_trending_gifs", "fieldPath": "parameters.bundle" }
}
],
"fields": {
"parameters": [
{
"name": "limit",
"description": "Max number of GIFs to return (default 25).",
"required": false,
"type": "integer"
},
{
"name": "offset",
"description": "Starting position of results (default 0).",
"required": false,
"type": "integer"
},
{
"name": "rating",
"description": "Filters results by rating (g, pg, pg-13, r).",
"required": false,
"type": "string"
},
{
"name": "random_id",
"description": "ID for a specific user session or persona.",
"required": false,
"type": "string"
},
{
"name": "bundle",
"description": "Thread or bundle grouping for GIF renditions.",
"required": false,
"type": "string"
}
],
"responses": {
"success": {
"description": "A successful response returns trending GIF data."
}
}
}
},
{
"id": "search_gifs_flow",
"title": "Search GIFs",
"description": "Performs a search for GIFs using /gifs/search",
"actions": [
{
"id": "search_gifs",
"sourceId": "giphy",
"operationId": "giphy_get_gifs_search"
}
],
"links": [
{
"origin": { "actionId": "search_gifs_flow", "fieldPath": "parameters.q" },
"target": { "actionId": "search_gifs", "fieldPath": "parameters.q" }
},
{
"origin": { "actionId": "search_gifs_flow", "fieldPath": "parameters.limit" },
"target": { "actionId": "search_gifs", "fieldPath": "parameters.limit" }
},
{
"origin": { "actionId": "search_gifs_flow", "fieldPath": "parameters.offset" },
"target": { "actionId": "search_gifs", "fieldPath": "parameters.offset" }
},
{
"origin": { "actionId": "search_gifs_flow", "fieldPath": "parameters.rating" },
"target": { "actionId": "search_gifs", "fieldPath": "parameters.rating" }
},
{
"origin": { "actionId": "search_gifs_flow", "fieldPath": "parameters.lang" },
"target": { "actionId": "search_gifs", "fieldPath": "parameters.lang" }
}
],
"fields": {
"parameters": [
{
"name": "q",
"description": "Search query term or phrase.",
"required": true,
"type": "string"
},
{
"name": "limit",
"description": "Max number of GIFs to return (default 25).",
"required": false,
"type": "integer"
},
{
"name": "offset",
"description": "Starting position of results (default 0).",
"required": false,
"type": "integer"
},
{
"name": "rating",
"description": "Filters results by rating (g, pg, pg-13, r).",
"required": false,
"type": "string"
},
{
"name": "lang",
"description": "Specify default language for regional content; 2-letter ISO 639-1 standard.",
"required": false,
"type": "string"
}
],
"responses": {
"success": {
"description": "Search results for the requested GIF query."
}
}
}
},
{
"id": "translate_to_gif_flow",
"title": "Translate Phrase to GIF",
"description": "Converts a phrase to a single GIF using /gifs/translate",
"actions": [
{
"id": "translate_phrase_gif",
"sourceId": "giphy",
"operationId": "giphy_get_gifs_translate"
}
],
"links": [
{
"origin": { "actionId": "translate_to_gif_flow", "fieldPath": "parameters.s" },
"target": { "actionId": "translate_phrase_gif", "fieldPath": "parameters.s" }
},
{
"origin": { "actionId": "translate_to_gif_flow", "fieldPath": "parameters.weirdness" },
"target": { "actionId": "translate_phrase_gif", "fieldPath": "parameters.weirdness" }
}
],
"fields": {
"parameters": [
{
"name": "s",
"required": true,
"type": "string",
"description": "Text to translate into a GIF"
},
{
"name": "weirdness",
"type": "integer",
"description": "Value from 0-10 which makes results weirder as you go up the scale.",
"required": false
}
],
"responses": {
"success": {
"description": "A single translated GIF object."
}
}
}
},
{
"id": "random_gif_flow",
"title": "Random GIF",
"description": "Gets one random GIF with optional tag using /gifs/random",
"actions": [
{
"id": "fetch_random_gif",
"sourceId": "giphy",
"operationId": "giphy_get_gifs_random"
}
],
"links": [
{
"origin": { "actionId": "random_gif_flow", "fieldPath": "parameters.tag" },
"target": { "actionId": "fetch_random_gif", "fieldPath": "parameters.tag" }
},
{
"origin": { "actionId": "random_gif_flow", "fieldPath": "parameters.rating" },
"target": { "actionId": "fetch_random_gif", "fieldPath": "parameters.rating" }
}
],
"fields": {
"parameters": [
{
"name": "tag",
"type": "string",
"description": "Optional tag to bias the random GIF result.",
"required": false
},
{
"name": "rating",
"type": "string",
"description": "Filter results by rating (g, pg, pg-13, r).",
"required": false
}
],
"responses": {
"success": {
"description": "A single random GIF object."
}
}
}
},
{
"id": "get_trending_stickers_flow",
"title": "Get Trending Stickers",
"description": "Fetch trending stickers with /stickers/trending",
"actions": [
{
"id": "fetch_trending_stickers",
"sourceId": "giphy",
"operationId": "giphy_get_stickers_trending"
}
],
"links": [
{
"origin": { "actionId": "get_trending_stickers_flow", "fieldPath": "parameters.limit" },
"target": { "actionId": "fetch_trending_stickers", "fieldPath": "parameters.1.value" }
},
{
"origin": { "actionId": "get_trending_stickers_flow", "fieldPath": "parameters.offset" },
"target": { "actionId": "fetch_trending_stickers", "fieldPath": "parameters.2.value" }
},
{
"origin": { "actionId": "get_trending_stickers_flow", "fieldPath": "parameters.rating" },
"target": { "actionId": "fetch_trending_stickers", "fieldPath": "parameters.3.value" }
},
{
"origin": { "actionId": "get_trending_stickers_flow", "fieldPath": "parameters.random_id" },
"target": { "actionId": "fetch_trending_stickers", "fieldPath": "parameters.4.value" }
},
{
"origin": { "actionId": "get_trending_stickers_flow", "fieldPath": "parameters.bundle" },
"target": { "actionId": "fetch_trending_stickers", "fieldPath": "parameters.5.value" }
}
],
"fields": {
"parameters": [
{
"name": "limit",
"description": "Max number of stickers to return (default 25).",
"required": false,
"type": "integer"
},
{
"name": "offset",
"description": "Starting position of results (default 0).",
"required": false,
"type": "integer"
},
{
"name": "rating",
"description": "Filters results by rating (g, pg, pg-13, r).",
"required": false,
"type": "string"
},
{
"name": "random_id",
"description": "ID/proxy for a specific user session.",
"required": false,
"type": "string"
},
{
"name": "bundle",
"description": "If you want only certain sticker renditions.",
"required": false,
"type": "string"
}
],
"responses": {
"success": {
"description": "A successful response returns trending sticker data."
}
}
}
},
{
"id": "search_suggestions_flow",
"title": "Search Suggestions",
"description": "Retrieves related tags for the given term using /tags/related/{term}.",
"actions": [
{
"id": "fetch_search_suggestions",
"sourceId": "giphy",
"operationId": "giphy_get_tags_related_by_term"
}
],
"links": [
{
"origin": { "actionId": "search_suggestions_flow", "fieldPath": "parameters.term" },
"target": { "actionId": "fetch_search_suggestions", "fieldPath": "parameters.1.value" }
}
],
"fields": {
"parameters": [
{
"name": "term",
"required": true,
"type": "string",
"description": "The text for which you want related tags."
}
],
"responses": {
"success": {
"description": "A list of related terms returned by the Giphy API."
}
}
}
}
],
"additionalProperties": true
}

--

--

sbagency
sbagency

Written by sbagency

Tech/biz consulting, analytics, research for founders, startups, corps and govs.

No responses yet