Skip to main content
Glama

sapiens_repertorio

Acervo pessoal de filme/série/anime/jogo/jogo de tabuleiro/livro/música/pessoa (Repertório, o segundo cérebro do user). Reads: list (filtros mediaType/status), search (texto em title/genres/tags), get (detalhe), popArticles, resolve (busca capa/ano/id nos providers server-side: OMDb/IGDB-Twitch/AniList/Google Books/iTunes/Wikidata). Mutations (qualquer logado, mexem no PRÓPRIO acervo): add_item, update_item (status/rating/tags/note/isPublic), remove_item. CAPTURA ONE-SHOT travada na lista de providers: quando o user fala natural ('acabei de ver Duna 2, nota 9', 'tô jogando Hollow Knight', 'li tal livro'), (1) infira mediaType e status (assisti/zerei/li=completed, quero=backlog, tô jogando/vendo=active, dropei=dropped) e rating se citado; (2) chame action=resolve {mediaType, query}, escolha o candidato certo e faça add_item passando SÓ o source + externalId DELE + os campos pessoais (status/rating/tags/note). O servidor re-resolve no provider e grava título/capa/ano canônicos, você NÃO manda título/capa nem inventa externalId. (3) Se o resolve não achar (lista vazia/providerKeyMissing), NÃO dá pra adicionar: diga ao user que não encontrou nos providers (não fabrique entry manual). Upsert/dedup por (userId, source, externalId). Só pergunte se ambíguo entre candidatos. FERRAMENTAS DE IA (Repertório de Ferramentas): fluxo separado (vêm do catálogo aitag, não dos providers de mídia). action=search_tools {query} acha a ferramenta no catálogo e devolve o toolId; action=add_tool {toolId, favorite?, rating?, note?} grava como mediaType 'tool' (estar no acervo já é 'usei'; favorite=true liga a estrela). Use quando o user fala 'adiciona o Midjourney/Cursor no meu repertório de ferramentas' ou 'uso tal ferramenta de IA'. Cada ferramenta aponta pra página dela no aitag. CATÁLOGO (ADMIN, o dono): action=catalog_tool cadastra no AItag uma ferramenta OPEN SOURCE que ainda não está lá {toolId, name, githubUrl, categoryEn, descriptionEn, descriptionPt, e de preferência reviewEn/reviewPt, websiteUrl, tags}; devolve created, toolId e a url aitag.app/tool/. Idempotente: o mesmo repo (mesmo com outro toolId) devolve a ficha existente e só preenche a análise que estiver vazia, nunca sobrescreve. Rode search_tools antes; é a porta da skill achado. action=admin_tool (ADMIN, SÓ sob ordem explícita do dono: nota e afiliado são gesto dele) faz o que o aitag.app/admin faz, fechada inclusive: {toolId + só os campos a mudar: referralUrl (link de afiliado), nota (0-100), isCurated, isActive, isOpenSource, name, websiteUrl, githubUrl, categoryEn, descriptionEn/Pt, reviewEn/Pt, tags, xUrl, brandHandle, links (os endereços extras da ficha: pesos, pacote do ComfyUI, licença, doc; até 8, a lista troca a inteira)}. Ficha existente recebe os campos que vierem e sobrescreve; ficha nova pede name, categoryEn, descriptionEn, descriptionPt e websiteUrl (sem tracking, é dele que sai o screenshot). O servidor recusa e manda pro aitag.app/admin: o mesmo site ou repo com outro toolId (aponta a ficha que existe), outro nome, outro site ou outro repo numa ficha existente, referralUrl fora do site da ferramenta e de rede de afiliado que fale pela marca, e mexer em link, site ou no-ar de ficha com permanência paga. Devolve created, mudou e a url. SAPIENS (pessoas, ombros de gigantes; a aba no site chama Sapiens): mediaType 'person' cataloga gente que inspira (cineasta, mangaká, cientista, escritor) via Wikidata. Mesmo fluxo de mídia: resolve {mediaType:'person', query:'Osamu Tezuka'} → add_item com source 'wikidata' + o QID do candidato. O servidor grava foto, ocupações, bio e o link da Wikipedia; entra como completed (estar no acervo = me inspira). Use quando o user fala 'adiciona o Miyazaki nas minhas inspirações/nos meus sapiens/no meu repertório'. JOGO DE TABULEIRO (e de cartas; a aba no site chama Tabuleiro): mediaType 'boardgame', porque 'game' é videogame e o IGDB não conhece tabuleiro. Também via Wikidata: resolve {mediaType:'boardgame', query:'Galactic Cruise'} → add_item com source 'wikidata' + o QID do candidato. Busque pelo título em inglês, que é como a Wikidata cadastra; o designer vem no campo authors do candidato e separa homônimos. O servidor grava designers, editoras e o link da página do jogo no BGG. Lançamento muito recente pode ainda não estar na Wikidata: resolve vazio = diga isso à pessoa, não fabrique. Use quando o user fala 'joguei Catan', 'quero jogar Rebirth', 'adiciona esse jogo de tabuleiro'.

Input Schema

NameRequiredDescriptionDefault
nameNoPra catalog_tool/admin_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes).
notaNoPra admin_tool: a nota da ficha no AItag, inteiro de 0 a 100. Ordena o catálogo.
noteNoNota pessoal sobre a obra.
tagsNo
xUrlNoPra admin_tool: o perfil da ferramenta no X (https://x.com/<handle>).
limitNo
linksNoPra admin_tool: os outros endereços que a pessoa vem buscar e o site não cobre, na ordem da página (bloco 'Onde achar', abaixo da análise): os pesos de cada checkpoint, o pacote do ComfyUI, a licença, a doc. label curto (até 40: 'Turbo weights', 'ComfyUI repack'), url https pública. O repo do githubUrl já aparece sozinho, não repita. A lista troca a inteira; vazia tira todos. O post da casa aponta pra ficha, e é daqui que a pessoa segue: ficha de modelo aberto leva os pesos aqui.
queryNoTexto pra action=search.
actionYes
itemIdNorepertorioItems:_id (obrigatório pra get/update_item/remove_item).
ratingNo0-10, nota da OBRA. Pra update_item: passe null pra remover rating. Pessoa (mediaType person) não leva rating: dar nota pra gente soa esquisito, o que ela fez ganha nota na ficha de cada obra. Não mande nem pergunte nota de pessoa.
sourceNoPra add_item: o source EXATO de um candidato do action=resolve (manual=filme/série via OMDb, anilist, twitch=jogo, googlebooks, itunes, wikidata=pessoa ou jogo de tabuleiro). Não invente.
statusNo
tagsEnNoPra catalog_tool/admin_tool: até 10 tags em inglês.
tagsPtNoPra catalog_tool/admin_tool: até 10 tags em português.
toolIdNoPra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>). Pra admin_tool: o toolId da ficha a editar (o do search_tools) ou o da ficha nova.
userIdNousers:_id (obrigatório pra list/search/lists). Descobre via sapiens_meta action=whoami.
favoriteNoPra add_tool: marca a ferramenta como favorita (estrela). Estar no acervo já é 'usei'; favorita é o eixo separado de 'curto/indico'.
isActiveNoPra admin_tool: false tira a ficha do ar sem apagar.
isPublicNo
reviewEnNoPra catalog_tool/admin_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google.
reviewPtNoPra catalog_tool/admin_tool: a análise editorial em português.
githubUrlNoPra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe. Pra admin_tool: opcional; vindo, a ficha vira open source.
isCuratedNoPra admin_tool: Staff Pick (curadoria da casa).
mediaTypeNo
categoryEnNoPra catalog_tool/admin_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+.
categoryPtNoPra catalog_tool/admin_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria.
externalIdNoPra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID: id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId).
websiteUrlNoPra catalog_tool/admin_tool: a homepage do projeto (https), sem tracking: é dela que sai o screenshot. Ausente, vale o githubUrl.
brandHandleNoPra admin_tool: o @ da marca, sem o @.
referralUrlNoPra admin_tool: o link do botão Visitar, com o código de afiliado do dono (https). Tem que cair no site da ferramenta (agensi.io/r/X sobre agensi.io) ou em rede de afiliado com a marca do site no subdomínio (<marca>.sjv.io, <marca>.pxf.io, <marca>.partnerlinks.io); tolt.link só troca link que já estava nele. Fora disso o servidor recusa e o link entra pelo aitag.app/admin. Ausente na ficha nova, vale o websiteUrl.
isOpenSourceNoPra admin_tool: liga ou desliga o selo open source. Ausente na ficha nova, vale true se veio githubUrl.
descriptionEnNoPra catalog_tool/admin_tool: uma frase do que a ferramenta faz, em inglês (até 400).
descriptionPtNoPra catalog_tool/admin_tool: a mesma frase em português (até 400).
containsSpoilersNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / links
      Added value: +{
      +  "description": "Pra admin_tool: os outros endereços que a pessoa vem buscar e o site não cobre, na ordem da página (bloco 'Onde achar', abaixo da análise): os pesos de cada checkpoint, o pacote do ComfyUI, a licença, a doc. label curto (até 40: 'Turbo weights', 'ComfyUI repack'), url https pública. O repo do githubUrl já aparece sozinho, não repita. A lista troca a inteira; vazia tira todos. O post da casa aponta pra ficha, e é daqui que a pessoa segue: ficha de modelo aberto leva os pesos aqui.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "label",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
  2. Changed20 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "list",
      -  "search",
      -  "get",
      -  "popArticles",
      -  "resolve",
      -  "add_item",
      -  "update_item",
      -  "remove_item",
      -  "search_tools",
      -  "add_tool",
      -  "catalog_tool"
      -]New value: +[
      +  "list",
      +  "search",
      +  "get",
      +  "popArticles",
      +  "resolve",
      +  "add_item",
      +  "update_item",
      +  "remove_item",
      +  "search_tools",
      +  "add_tool",
      +  "catalog_tool",
      +  "admin_tool"
      +]
    • addedInput schema / properties / brandHandle
      Added value: +{
      +  "description": "Pra admin_tool: o @ da marca, sem o @.",
      +  "type": "string"
      +}
    • changedInput schema / properties / categoryEn / description
      Previous value: -"Pra catalog_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+."New value: +"Pra catalog_tool/admin_tool: UMA destas, exata: Text & Writing, Image & Design, Video & Animation, Voice & Audio, Coding & Development, Marketing & SEO, Data Analysis & Productivity, Research & Education, Agents & Bots, Creative Automation, Privacy & Web3, Experimental Tools, Technical Utilities, Aggregators & Meta Tools, Adult 18+."
    • changedInput schema / properties / categoryPt / description
      Previous value: -"Pra catalog_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria."New value: +"Pra catalog_tool/admin_tool: opcional; ausente, o servidor copia a de uma vizinha da mesma categoria."
    • changedInput schema / properties / descriptionEn / description
      Previous value: -"Pra catalog_tool: uma frase do que a ferramenta faz, em inglês (até 400)."New value: +"Pra catalog_tool/admin_tool: uma frase do que a ferramenta faz, em inglês (até 400)."
    • changedInput schema / properties / descriptionPt / description
      Previous value: -"Pra catalog_tool: a mesma frase em português (até 400)."New value: +"Pra catalog_tool/admin_tool: a mesma frase em português (até 400)."
    • changedInput schema / properties / githubUrl / description
      Previous value: -"Pra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe."New value: +"Pra catalog_tool: o repo, https://github.com/<owner>/<repo>. É a chave do dedup: o mesmo repo com outro toolId devolve a ficha que já existe. Pra admin_tool: opcional; vindo, a ficha vira open source."
    • addedInput schema / properties / isActive
      Added value: +{
      +  "description": "Pra admin_tool: false tira a ficha do ar sem apagar.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / isCurated
      Added value: +{
      +  "description": "Pra admin_tool: Staff Pick (curadoria da casa).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / isOpenSource
      Added value: +{
      +  "description": "Pra admin_tool: liga ou desliga o selo open source. Ausente na ficha nova, vale true se veio githubUrl.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / name / description
      Previous value: -"Pra catalog_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes)."New value: +"Pra catalog_tool/admin_tool: o nome do produto como o projeto escreve (HyperFrames, não hyperframes)."
    • addedInput schema / properties / nota
      Added value: +{
      +  "description": "Pra admin_tool: a nota da ficha no AItag, inteiro de 0 a 100. Ordena o catálogo.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / referralUrl
      Added value: +{
      +  "description": "Pra admin_tool: o link do botão Visitar, com o código de afiliado do dono (https). Tem que cair no site da ferramenta (agensi.io/r/X sobre agensi.io) ou em rede de afiliado com a marca do site no subdomínio (<marca>.sjv.io, <marca>.pxf.io, <marca>.partnerlinks.io); tolt.link só troca link que já estava nele. Fora disso o servidor recusa e o link entra pelo aitag.app/admin. Ausente na ficha nova, vale o websiteUrl.",
      +  "type": "string"
      +}
    • changedInput schema / properties / reviewEn / description
      Previous value: -"Pra catalog_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google."New value: +"Pra catalog_tool/admin_tool: a análise editorial em inglês, 3 a 5 frases na voz da casa. É o gate de indexação da página: sem ela, a ficha fica fora do Google."
    • changedInput schema / properties / reviewPt / description
      Previous value: -"Pra catalog_tool: a análise editorial em português."New value: +"Pra catalog_tool/admin_tool: a análise editorial em português."
    • changedInput schema / properties / tagsEn / description
      Previous value: -"Pra catalog_tool: até 10 tags em inglês."New value: +"Pra catalog_tool/admin_tool: até 10 tags em inglês."
    • changedInput schema / properties / tagsPt / description
      Previous value: -"Pra catalog_tool: até 10 tags em português."New value: +"Pra catalog_tool/admin_tool: até 10 tags em português."
    • changedInput schema / properties / toolId / description
      Previous value: -"Pra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>)."New value: +"Pra add_tool: o toolId EXATO de um candidato do action=search_tools (catálogo aitag). Dedup por (userId, source aitag, externalId=toolId). Pra catalog_tool: o toolId NOVO da ficha, em kebab-case minúsculo (vira o endereço aitag.app/tool/<toolId>). Pra admin_tool: o toolId da ficha a editar (o do search_tools) ou o da ficha nova."
    • changedInput schema / properties / websiteUrl / description
      Previous value: -"Pra catalog_tool: a homepage do projeto (https). Ausente, vale o githubUrl."New value: +"Pra catalog_tool/admin_tool: a homepage do projeto (https), sem tracking: é dela que sai o screenshot. Ausente, vale o githubUrl."
    • addedInput schema / properties / xUrl
      Added value: +{
      +  "description": "Pra admin_tool: o perfil da ferramenta no X (https://x.com/<handle>).",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / externalId / description
      Previous value: -"Pra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID — id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId)."New value: +"Pra add_item: o externalId EXATO do candidato do resolve (imdbID p/ manual, id do provider p/ resto). NÃO fabrique/UUID: id que não resolve no provider é rejeitado. Dedup por (userId, source, externalId)."
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses the permission model (any logged-in user for mutations, admin-only catalog/admin operations), deduplication by userId/source/externalId, server-side re-resolution, idempotent catalog behavior, refusal cases for mismatched admin edits, and the no-fabrication rule. These are exactly the behavioral details an agent needs and are consistent with readOnlyHint=false and openWorldHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and organized by subdomain, but it is extremely dense, uses many parentheticals and all-caps warnings, and packs multiple distinct workflows into one block. Much of the length is justified by 12 actions and 35 parameters, but readability and conciseness clearly suffer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-action, 35-parameter tool with no output schema, the description covers the critical flows, preconditions, dedup behavior, and several return/refusal outcomes. It still does not explain the return shape for core reads such as list, search, get, or popArticles, leaving some output context implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema description coverage, the schema already explains most fields; the description adds important cross-field workflow meaning such as status inference ("assisti/zerei/li=completed"), person having no rating, boardgame searched by English title, links replacing the whole list, and referralUrl constraints. It does not add meaning for every parameter, such as limit, isPublic, containsSpoilers, tags, or note, so it is strong but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise resource ("Acervo pessoal de filme/série/anime/jogo/jogo de tabuleiro/livro/música/pessoa") and then enumerates the read actions, mutations, AI-tool flows, Sapiens/people flow, and boardgame flow. An agent can tell exactly what this tool covers and how its subdomains differ, even though it is unusually broad.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance for natural-language capture, AI tools ("adiciona o Midjourney"), Sapiens, and board games, and it states when admin actions are allowed ("SÓ sob ordem explícita do dono"). It also names preconditions such as running search_tools before catalog_tool, asking only when ambiguous, and not fabricating entries when resolve returns empty.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.