Use case
AI agents
An agent that answers about brand identities from the archive, not from memory: it searches by name, reads the record, and answers from its fields. A missing field is null, never a placeholder, so the agent can’t mix up what’s known and what isn’t.
Endpoints
- GET /api/v1/search/suggest
- GET /api/v1/brands/{slug}counts as a pull
- Products
- Search, identity data
- Pulls
- One per brand asked about
- Tools
- Ready-made JSON definitions
The problem, and the fix
A language model guesses a brand’s colours or when its logo changed, and states the guess with confidence.
Give the agent two tools: search_brands searches by name and returns slugs, and get_brand reads the record. Answers are JSON with stable fields, all described in the reference. Both tool definitions are ready, with an OpenAPI spec and a docs index for models, in Docs for AI (Arabic).
Who it’s for
Design assistants
«What are this brand’s colours?» answered from its guidelines.
Content agents
An article or deck with the brand’s current logo and right name.
Search and research
A brand’s identity history with its versions and dates.
Try it
Type a brand and pick a question. You see the two calls the agent makes, as real requests, what came back, and an answer from the fields alone.
No language model: questions have a fixed shape, so you can see the calls an agent makes, what comes back, and an answer that says “unknown” when a field is null.
Build it
- 01
Get a key
Open a developer account in the console and make a key. The free plan is enough to start, and the key stays on your server in an environment variable.
- 02
Define the two tools
search_brandswithq, andget_brandwithslug. - 03
Run them on your server
When the model asks for a tool, your code calls Wasmenia with the key and returns the answer as it is.
- 04
Tell it what an empty field means
In the instructions: a
nullfield is unknown, so say «unknown». - 05
Keep what it read
A brand’s record isn’t read twice in the same conversation.
The two tools
tools.json
[ { "name": "search_brands", "description": "Search Wasmenia's archive of logos by brand name, in Arabic or English. Returns up to 8 matches, closest first, each with its slug.", "input_schema": { "type": "object", "properties": { "q": { "type": "string", "minLength": 2, "maxLength": 120 } }, "required": ["q"] } }, { "name": "get_brand", "description": "Read one brand's record by its slug: names, country, colours, current logo files and older versions. Fields the archive does not know are null. Each call counts as one pull.", "input_schema": { "type": "object", "properties": { "slug": { "type": "string" } }, "required": ["slug"] } }]How many pulls it costs
Search isn’t counted, and each get_brand call is one pull. Keep the record by slug during the conversation, so ten questions about one brand are one pull.
Questions
When is the MCP server coming?
It isn’t built, and has no date. If it matters to you, tell us what you’re building on the ways-to-connect page.
Does the agent read text from brands?
Descriptions and names are text written by the archive or the brands. Treat them as data, not instructions to the model.
Products it uses
Identity data
The name in both languages, other names, colours and their source, fonts and guidelines.
Search
Up to 8 suggestions by name as people type, in Arabic or English.
Docs for AI
The two tool definitions, the OpenAPI spec, and the docs index for models.