Agents & MCP
Farmarks exposes farmers-market vendors as tools any assistant can call. Vendors declare what they can actually do — customisation options with prices, lead times, minimums, delivery reach, what's in season — and the engine answers against that, so a quote is grounded in the vendor's own rules rather than in a model's guess.
Endpoints
MCP (JSON-RPC 2.0 over HTTP)
https://farmarks.com/mcpDiscovery manifest
https://farmarks.com/agent/discoveryInstructions for assistants
https://farmarks.com/llms.txtREST bridge
https://farmarks.com/agent/tools/find_vendorsOne vendor's agent card
https://farmarks.com/agent/vendors/%7BvendorId%7D/cardAuthentication
Send Authorization: Bearer <key>. Read tools work without a key at a lower rate limit; anything that commits a person or a vendor needs one, because every write has to trace back to a real Farmarks account.
Create a key from your assistant settings. The secret is shown once and stored only as a hash — we cannot recover it, and neither can anyone who reads our database.
{
"mcpServers": {
"farmarks": {
"url": "https://farmarks.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY_HERE"
}
}
}
}Scopes
A key's scopes are intersected with what its owner actually is. A shopper's key cannot hold vendor.manage however politely it asks.
discovery.read- Search vendors and markets. Granted to anonymous callers.
vendor.read- Read a vendor's full capability profile and catalogue.
market.read- Market days, hours, and who is attending.
organizer.read- Open booths, application terms, and demand signals.
request.write- Send a vendor a structured request on a person's behalf.
preorder.write- Place a pre-order against published catalogue prices.
subscription.write- Start a standing order or CSA-style box.
engagement.write- Claim a coupon or follow a vendor.
vendor.manage- Act as a vendor you own. Never granted to a shopper's key.
Tools
Loading the live tool list…
Try it
Every tool is also reachable over plain REST, for callers that would rather not speak JSON-RPC. Same engine, same scopes, same answers.
curl -s https://farmarks.com/agent/tools/find_vendors \
-H 'content-type: application/json' \
-d '{
"occasion": "birthday",
"customization": ["engraving"],
"quantity": 40,
"needBy": "2026-09-18",
"limit": 5
}'curl -s https://farmarks.com/mcp \
-H 'content-type: application/json' \
-H 'authorization: Bearer YOUR_KEY_HERE' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Rules of the road
- A quote is only firm when we say so. Every quote carries
firmandrequiresHumanApproval. Iffirmis false, present it as an estimate — the vendor has not agreed to it. - Vendors set their own ceilings. Nothing is auto-accepted above the value and quantity limits a vendor configured, no matter how the request is phrased.
- Claims are labelled. A credential is
self_declareduntil a market organizer checks it. Don't present the two as equivalent. - No card payments here. Shoppers pay vendors directly at the stand. Pre-orders reserve goods; they don't take money.
- Empty results are useful. When nothing matches, the ask is recorded as anonymous demand for market organizers. Tell the person that — it's how a market learns what it's missing.
Are you a vendor?
You don't need any of this. Fill in your assistant profile by tapping through a few lists, and every tool above starts answering for your stand.