[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"learn-lesson-ai-agent-web-data-mcp-give-an-agent-a-scraper":3},{"course":4,"lesson":67,"index":180,"outline":181,"prev":212,"next":213},{"slug":5,"order":6,"level":7,"time":8,"card_text":9,"seo":10,"hero":16,"outcomes":26,"who":35,"syllabus":46,"faq":49,"lessonCount":66},"ai-agent-web-data-mcp",2,"Comfortable editing a config file","6 lessons, about 60 minutes","Your agent is confidently wrong about prices because it has never seen one. What MCP is, how to connect a server, how to design tools a model can actually use, and the guardrails you need before you let it loose.",{"title":11,"description":12,"keywords":13,"og_title":14,"og_description":15},"MCP for AI Agents: A Free 6-Lesson Course on Live Web Data","What MCP is, how to connect a server to Claude, how to design tools an agent can use, and how to give an agent live web data without it inventing prices. Free, ungated.","mcp tutorial, model context protocol, ai agent web data, mcp server claude, give agent live data, mcp tools design, agent web scraping","A free course on giving AI agents live web data via MCP","Six written lessons: the protocol, the failure modes, connecting a server, designing usable tools, and the guardrails.",{"badge":17,"title":18,"subtitle":19,"cta_primary":20,"cta_secondary":23},"Course two","Give your AI agent live web data via MCP","Ask an assistant what a product costs today and you will usually get a number. It is often wrong, and it is always wrong in the same way: the model is reconstructing a plausible price from training data rather than looking at a page. This course is about closing that gap properly — what the Model Context Protocol actually is, how to wire a server into a client, how to design tools a model can use without hand-holding, and what to put in place before an agent spends your money.",{"label":21,"url":22},"Start with lesson one","/learn/ai-agent-web-data-mcp/what-is-mcp",{"label":24,"url":25},"See our MCP skill","/skills",{"title":27,"items":28},"What you will be able to do",[29,30,31,32,33,34],"Explain MCP to a colleague in two sentences without using the word \"ecosystem\"","Tell the difference between a model that does not know something and a model that has been given a tool badly","Connect an MCP server to a client and verify that the tools are actually registered","Write a tool description a model picks correctly on the first attempt","Give an agent the ability to fetch a real price from a real page","Put a spend cap, a rate limit and an injection boundary in place before any of this touches production",{"title":36,"for_title":37,"for":38,"not_title":42,"not_for":43},"Who this is for","Written for",[39,40,41],"Developers building on Claude, ChatGPT or an agent framework who need the agent to see the live web","Technical founders evaluating whether MCP is worth adopting","Data teams who already have an API and are deciding whether to expose it to agents","Not written for",[44,45],"Anyone looking for a no-code agent builder — this assumes a config file and a terminal","Readers who want the full specification; this is the working subset, and the spec is linked where it matters",{"title":47,"intro":48},"The six lessons","Lessons one and two are concepts and cost nothing to read. From three onwards you will want a client installed.",{"badge":50,"title":51,"description":52,"items":53},"FAQ","Before you start","The questions that come up in the first ten minutes.",[54,57,60,63],{"title":55,"description":56},"Do I need to know what MCP is already?","No. Lesson one assumes nothing beyond having used an AI assistant. If you already know what a tool call is, skim it and start at lesson two.",{"title":58,"description":59},"Is this Claude-specific?","MCP is an open protocol and the concepts transfer to any client that implements it. The concrete configuration examples use Claude because that is the client most readers will have in front of them, and the differences elsewhere are mostly about where the config file lives.",{"title":61,"description":62},"Do I need a Scrapewise account?","Only for lesson five, which walks through pointing an agent at a real scraper. Everything else works against any MCP server, including ones you write yourself in an afternoon.",{"title":64,"description":65},"Can I just use a web search tool instead?","Sometimes, and lesson two is explicit about when. Search gives an agent a summary of a page; a scraper gives it the specific field from a specific page. For \"what is the general sentiment on X\" search is better. For \"what does this exact URL charge today\" it is not.",6,{"slug":68,"nav_title":69,"title":70,"summary":71,"time":72,"needs_account":73,"seo":74,"blocks":78,"takeaways":170,"next_step":176},"give-an-agent-a-scraper","Giving an agent a scraper","Giving an agent a real price feed","A worked example. Connect the ScrapeWise MCP server to a client, let the agent read a live scraper's output, and watch where the hand-off between \"the data is right\" and \"the answer is right\" actually breaks.","12 min",true,{"title":75,"description":76,"keywords":77},"Connect a Live Scraper to an AI Agent Over MCP (Worked Example)","Step-by-step: give a Claude or ChatGPT agent access to a running price scraper over MCP, verify the numbers it quotes, and handle the failure cases.","mcp scraper, ai agent price data, claude mcp web scraping, connect scraper to llm, live product data for agents",[79,87,92,111,118,123,131,135,156,165],{"type":80,"variant":81,"title":82,"text":83,"cta":84},"callout","product","This lesson uses a Scrapewise account","The method generalises to any data source — the shape is the same whichever backend you wire up. But the commands below are specific, so you will want an account to follow along. A new one starts with five free requests and no card.",{"label":85,"url":86},"Create an account","https://portal.scrapewise.ai/register",{"type":88,"paragraphs":89},"prose",[90,91],"The previous four lessons were about the protocol and the writing. This one is the whole loop with a real feed behind it: a scraper that already runs on a schedule, exposed to an agent, with the verification step that tells you whether to trust what comes back.","The order matters. Build the feed first and check it by hand, then connect it. Connecting an unverified feed to an agent means you now have two things that might be wrong and no way to tell which.",{"type":93,"title":94,"items":95},"steps","Wiring it up",[96,99,102,105,108],{"title":97,"text":98},"Have a scraper that already produces rows","Course one covers this end to end. The short version: a scraper with a product URL list, a schema with the fields you care about, and at least one completed run whose output you have eyeballed. If you have not looked at the rows yourself, do that before going further.",{"title":100,"text":101},"Create an API key","In the portal, generate a key scoped to what the agent needs. Keep it out of your repository and out of anything you paste into a chat window — put it in the client config file or an environment variable.",{"title":103,"text":104},"Add the server to your client config","Same shape as lesson three: an entry under mcpServers with the command and the key passed as an environment variable. Restart the client fully afterwards — a reload is not enough in most clients.",{"title":106,"text":107},"Confirm the tools appear","Open the tool list in your client before asking a question. If the tools are not listed, nothing you ask will reach them, and the model will cheerfully answer from memory instead.",{"title":109,"text":110},"Ask a question you already know the answer to","Pick a product whose current price you have open in another tab. Ask the agent. Compare. This single step catches market mismatches, stale caches and currency confusion in about ten seconds.",{"type":112,"title":113,"intro":114,"language":115,"code":116,"caption":117},"code","A config entry with the key in the environment","The exact server command is in the docs; the structure is what matters here.","json","{\n  \"mcpServers\": {\n    \"scrapewise\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@scrapewise/mcp\"],\n      \"env\": {\n        \"SCRAPEWISE_API_KEY\": \"sw_live_...\"\n      }\n    }\n  }\n}","Restart the client after editing. Then check the tool list before asking anything.",{"type":88,"title":119,"paragraphs":120},"What the agent can now do that it could not before",[121,122],"With a feed behind it, the useful questions stop being \"what does this cost\" and start being comparative and historical, because the agent can read many rows at once: which of our SKUs are priced above every competitor we track, which competitor moved most this week, which products went out of stock at two retailers on the same day.","Those are questions a human would answer with a pivot table and twenty minutes. The agent answers them in a sentence, and — this is the part that matters — it can show you the rows it used.",{"type":124,"title":125,"items":126},"list","Four failures you will hit, and what each looks like",[127,128,129,130],"The agent answers without calling anything. The tool list is empty, or the description does not connect to the question. Check the list first, then the description.","The numbers are right but old. The scraper has not run since its last schedule. Always surface the capture time in the answer so this is visible rather than silent.","The agent quotes a price for the wrong market. The source URL resolved to a different country's storefront. Check which URL is on the link list, not which one you typed into your browser.","The agent summarises confidently over half the rows. A run partially failed and returned fewer products than usual. This is the dangerous one, because the answer looks fine. Course one's lesson on silent failure is the fix.",{"type":80,"variant":132,"title":133,"text":134},"warning","Make the agent cite rows, every time","Put it in your system prompt: when answering from the feed, name the products and the capture timestamp. An agent that has to cite is an agent you can audit in two seconds. An agent that returns a clean paragraph with no provenance is one you will eventually act on when it is wrong, and you will not know why.",{"type":136,"title":137,"intro":138,"headers":139,"rows":143},"table","Worked example: three questions to ask before you trust it","Once the tools register, ask these three in this order, before the agent goes anywhere near a real task. Each one is chosen because its failure is informative rather than merely annoying.",[140,141,142],"Ask","A good answer","What a bad answer is telling you",[144,148,152],[145,146,147],"\"List the tools you have and say what each one returns.\"","The tool names, each with the shape of its result","If it invents a tool, or describes one you never connected, you are in a stale session — restart before going further",[149,150,151],"\"What is the price of X?\" — a product you checked in a browser one minute ago","Your figure, its currency, and the time it was captured","A near miss, right magnitude and wrong number, almost always means an old row rather than a broken tool",[153,154,155],"\"How many rows did that run return, and when did it run?\"","A count and a timestamp, both taken from the payload","Vagueness here means the counts are not in the payload at all, and every summary you get after this point is unfalsifiable",{"type":124,"title":157,"intro":158,"items":159},"What usually goes wrong","The feed being right and the answer being right are two separate claims, and this is where people stop distinguishing them.",[160,161,162,163,164],"Connecting a feed you have not verified by hand. When the answer comes back wrong you then have two suspects and no way to separate them.","Asking an open question first. \"How are we priced against the market?\" produces a fluent paragraph nobody can check. Start with something that has exactly one right answer.","Accepting a summary that cites nothing. An agent summarising a half-failed run sounds exactly like an agent summarising a complete one, and the shortfall is invisible unless row counts are in the payload and required in the answer.","Letting it aggregate silently. \"On average you are 4% above market\" across 380 of 1,200 SKUs is a different sentence from the same claim across 1,180, and the denominator will not be volunteered.","Treating the first good answer as proof. One correct response establishes that the path is wired, not that it is reliable. The failure you actually care about arrives on the morning a run half-completes.",{"type":88,"title":166,"paragraphs":167},"Where this stops being a toy",[168,169],"The step up is giving the agent a standing job rather than answering questions. A morning summary of every competitor move above a threshold. A check before a promotion goes out. A Slack message when a tracked product goes out of stock at the retailer you compete hardest with.","All of those are the same tools, called on a trigger instead of by a person. Which is exactly the point at which cost and guardrails stop being theoretical — the subject of the last lesson.",[171,172,173,174,175],"Verify the feed by hand before connecting it, or you will not know which half is wrong.","Check the tool list appears before asking the agent anything.","First question should be one you already know the answer to.","Require the agent to cite rows and capture times in every answer.","The dangerous failure is a confident summary over a partially failed run.",{"text":177,"label":178,"url":179},"An agent that can fetch is an agent that can spend, and one that reads pages it does not control. Both need limits.","Lesson 6: guardrails, cost and untrusted content","/learn/ai-agent-web-data-mcp/guardrails-cost-and-untrusted-content",4,[182,189,195,200,206,207],{"slug":183,"navTitle":184,"title":185,"summary":186,"time":187,"needsAccount":188},"what-is-mcp","What MCP is","What MCP actually is, in plain terms","The Model Context Protocol described without jargon: what problem it solves, its three primitives, and when it is the wrong tool.","9 min",false,{"slug":190,"navTitle":191,"title":192,"summary":193,"time":194,"needsAccount":188},"why-agents-get-live-data-wrong","Why agents get it wrong","Why your agent's answer about a price is wrong","Four distinct failure modes that all look identical from the outside, and how to tell which one you have before you try to fix it.","10 min",{"slug":196,"navTitle":197,"title":198,"summary":199,"time":194,"needsAccount":188},"connect-an-mcp-server","Connecting a server","Connecting an MCP server and proving it works","The config for local and remote servers, the four things that go wrong, and how to verify the tools registered rather than assuming.",{"slug":201,"navTitle":202,"title":203,"summary":204,"time":205,"needsAccount":188},"design-tools-an-agent-can-use","Designing usable tools","Designing tools an agent can actually use","A connected server is not a useful server. The model only sees your tool names, descriptions and parameter schemas, so those three things are the entire user interface. Here is what makes a tool get called correctly and what makes it get ignored.","11 min",{"slug":68,"navTitle":69,"title":70,"summary":71,"time":72,"needsAccount":73},{"slug":208,"navTitle":209,"title":210,"summary":211,"time":205,"needsAccount":188},"guardrails-cost-and-untrusted-content","Guardrails and cost","Guardrails, cost control and untrusted content","Live web access turns an agent into something that can spend money and read text written by strangers. Neither is a reason not to do it. Both are reasons to put limits in before you need them.",{"slug":201,"navTitle":202,"title":203,"summary":204,"time":205,"needsAccount":188},{"slug":208,"navTitle":209,"title":210,"summary":211,"time":205,"needsAccount":188},1791047867067]