Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the weclapp Cloud ERP in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Read and write weclapp Cloud ERP data: customers, suppliers, contacts and leads, quotations, sales orders, invoices, articles, stock, purchase orders, tasks and time records. Popular ERP for German SMBs.
Try asking
Example prompts for weclapp Cloud ERP
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → weclapp Cloud ERP, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
weclapp Cloud ERP + Microsoft Copilot
Read and write weclapp Cloud ERP data: customers, suppliers, contacts and leads, quotations, sales orders, invoices, articles, stock, purchase orders, tasks and time records. Popular ERP for German SMBs.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
WECLAPP_TENANT, WECLAPP_API_TOKEN
Step 1 — Get credentials
- In weclapp, open your user menu → My settings → API and copy the API token into
WECLAPP_API_TOKEN. Each user has one token; generating a new one invalidates the old one. - Set
WECLAPP_TENANTto the first part of your weclapp address only: foracme.weclapp.com, enteracme. - Install the connector. It works with weclapp's REST API v2, where customers and suppliers both live under parties.
Permissions follow the user: the token acts as the weclapp user it belongs to. Records that user's role cannot see are missing from the results, and a write the role does not allow is refused with 403. Use a user with read access to sales, CRM and articles, and write access to whatever the AI should change.
What it does: 60 tools that read customers, suppliers, contact persons and leads, quotations, sales orders, sales invoices, recurring invoices, opportunities, articles and stock, and that write back to weclapp:
- create and edit customers, suppliers, contact persons and leads;
- create and edit quotations and sales orders with their positions, change their status, cancel an order and create the invoice for an order;
- edit sales invoices, for example the responsible user or the due date;
- create and edit tasks, add comments to any record and book working time;
- create and edit articles and their sales prices, and book stock in and out;
- create purchase orders to suppliers.
Recurring invoices and opportunities are read-only.
Confirm first: every write changes your live ERP, so the AI reads the record, tells you what will change and waits for your yes. Edits change only the fields that are sent, and a test run (dryRun) lets weclapp check a change without saving it. With the record's version, weclapp refuses a change if someone else edited the record in the meantime. Stock bookings take effect at once, and every invoice created from an order is a new draft invoice. The six delete tools (customers and other parties, quotations, sales orders, tasks, comments and time records) are switched off at install.
Already installed? The new tools reach a connector you installed earlier through its catalog update: open the connector in AnythingMCP and, under Catalog update available, check the list of new tools and click Apply update. Your credentials and any tools you added yourself stay as they are, and the delete tools arrive switched off, as on a new install.
Finding records: the get tools take weclapp's internal id. To find a document by its number, the AI filters the list, for example orderNumber-eq=SO-1042 or invoiceNumber-eq=RE-1042. Unpaid invoices are paymentStatus-eq=OPEN, and credit notes are left out when adding up revenue. Asking only for the fields you need keeps large lists small and fast.
Limits: lists return up to 1,000 rows per page. weclapp has no fixed rate limit, but under heavy load it queues requests and answers 429 after 30 seconds in the queue.
Recurring invoices: this resource is not part of weclapp's published API description. If listing recurring invoices returns 404 on your tenant, it is not available there.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
weclapp Cloud ERPtools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
weclapp_list_customers | List parties (customers/suppliers/contacts) from weclapp ERP |
weclapp_get_customer | Get a specific party (customer/supplier/contact) by ID |
weclapp_list_sales_orders | List sales orders from weclapp ERP |
weclapp_list_invoices | List sales invoices from weclapp ERP |
weclapp_list_articles | List articles (products) from weclapp ERP |
weclapp_get_article | Get a specific article (product) by ID, including stock, pricing, and warehouse data |
weclapp_list_quotations | List sales quotations (Angebote) from weclapp ERP |
weclapp_get_quotation | Get a single sales quotation (Angebot) by ID, including positions, amounts and status |
weclapp_list_recurring_invoices | List recurring invoices (wiederkehrende Rechnungen / Abo-Rechnungen) from weclapp ERP: the templates that periodically generate sales… |
weclapp_get_recurring_invoice | Get a single recurring invoice (wiederkehrende Rechnung) by ID, including its interval, next execution date and template positions |
weclapp_list_opportunities | List sales opportunities (Verkaufschancen) from weclapp CRM |
weclapp_list_reference_data | Look up the records other weclapp records point to by id, to turn a name into the id a write tool needs: users (responsibleUserId, task… |
weclapp_list_comments | List the comments on one weclapp record (sales order, quotation, invoice, party, task, ticket...), newest first with sort='-createdDate' |
weclapp_add_party | Create a customer or supplier (a party) in weclapp |
weclapp_add_contact_person | Create a contact person (a party of type PERSON) in weclapp |
weclapp_add_lead | Create a lead in weclapp: a party with a lead status that is not a customer yet |
weclapp_edit_party | Change fields of a customer, supplier, contact person or lead; fields you do not send keep their values (weclapp partial update… |
weclapp_add_quotation | Create a sales quotation (Angebot) for a customer, with its positions in the same call. weclapp assigns the quotation number and fills… |
weclapp_edit_quotation | Change fields of a sales quotation; fields you do not send keep their values (weclapp partial update) |
weclapp_set_quotation_status | Set the status of a sales quotation through weclapp's own status action: OPEN, ENTRY_COMPLETED, INQUIRED, ACCEPTED, REJECTED or CANCELLED |
weclapp_add_sales_order | Create a sales order (Auftrag) for a customer, with its positions in the same call. weclapp assigns the order number and takes addresses… |
weclapp_edit_sales_order | Change fields of a sales order; fields you do not send keep their values (weclapp partial update), e.g. set the responsible user, the… |
weclapp_set_sales_order_status | Set the status of a sales order: ORDER_CONFIRMATION_PRINTED marks it as confirmed, ORDER_ENTRY_IN_PROGRESS reopens it for changes. weclapp… |
weclapp_cancel_sales_order | Cancel a sales order, or close it manually when parts of it were already shipped or invoiced (weclapp's cancelOrManuallyClose action) |
weclapp_invoice_sales_order | Create a sales invoice from a sales order (weclapp's createSalesInvoice action), optionally combining further orders of the same customer… |
weclapp_edit_sales_invoice | Change fields of a sales invoice; fields you do not send keep their values (weclapp partial update), e.g. set the responsible user or the… |
weclapp_add_task | Create a task (Aufgabe) in weclapp, optionally assigned to users and linked to a customer or a record such as a sales order |
weclapp_edit_task | Change fields of a task; fields you do not send keep their values (weclapp partial update), e.g. mark it done with {"taskStatus"… |
weclapp_add_comment | Add a comment to a weclapp record (sales order, quotation, sales invoice, party, task, ticket...) |
weclapp_add_time_record | Book working time (Zeiterfassung) for a user in weclapp, optionally on a customer, a sales order, a task or a ticket |
weclapp_add_article | Create an article (product or service) in weclapp, optionally with its sales prices |
weclapp_edit_article | Change fields of an article (product); fields you do not send keep their values (weclapp partial update), e.g. name, EAN, manufacturer part… |
weclapp_set_article_prices | Change the sales prices of an article. weclapp keeps them as one list (articlePrices) and replaces it as a whole, so read the article first… |
weclapp_book_stock_in | Book stock into a storage place (weclapp's bookIncomingMovement), e.g. goods received without a purchase order or an upward inventory… |
weclapp_book_stock_out | Book stock out of a storage place (weclapp's bookOutgoingMovement), e.g. breakage, own use or a downward inventory correction |
weclapp_add_purchase_order | Create a purchase order (Bestellung) to a supplier, with its positions in the same call. weclapp assigns the number and takes the… |
weclapp_delete_party | Delete a customer, supplier, contact person or lead. weclapp refuses when documents still refer to the party; block or deactivate it with… |
weclapp_delete_quotation | Delete a sales quotation |
weclapp_delete_sales_order | Delete a sales order. weclapp refuses once the order has shipments or invoices; use weclapp_cancel_sales_order then |
weclapp_delete_task | Delete a task |
weclapp_delete_comment | Delete a comment from a record |
weclapp_delete_time_record | Delete a time record. weclapp refuses once the time is invoiced |
weclapp_list_sales_open_items | List the open items (Offene Posten) of sales invoices and credit notes: amount, amountOpen, amountPaid, amountDiscount, cleared… |
weclapp_get_current_user | Return the weclapp user the API token belongs to: id, name, e-mail, username, status and roles |
weclapp_get_property_translations | Read the translated texts of one record, e.g. an article's name and descriptions in English or French as maintained in weclapp |
weclapp_list_warehouse_stock_movements | List warehouse stock movements (Lagerbewegungen): which article moved, how much, in or out, when, from or to which storage place, and the… |
weclapp_list_production_orders | List production orders (Fertigungsaufträge): number, article, target and actual quantity, target and actual start and end dates, status… |
weclapp_set_sales_invoice_responsible | Set the responsible user (e.g. the field sales rep) of a sales invoice and nothing else; every other field keeps its value (partial PUT… |
weclapp_set_sales_order_responsible | Set the responsible user (e.g. the field sales rep) of a sales order and nothing else; every other field keeps its value (partial PUT with… |
weclapp_set_party_responsible | Set the responsible user (e.g. the field sales rep) of a customer, supplier or lead and, optionally, its fixed-responsible flag… |
weclapp_add_supply_source | Create a supply source (Lieferquelle) for purchasing: which supplier sells the article, under which number, at which purchase price |
weclapp_add_manufacturer | Create a manufacturer (Hersteller) in the master data |
weclapp_add_article_item_group | Create an item group (Positionsgruppe): a named set of articles with quantities that is added to quotations and orders in one step |
weclapp_set_party_emails | Maintain a customer's or supplier's e-mail addresses for documents (master data, E-Mail-Adressen) and choose which entry weclapp uses for… |
weclapp_set_sales_open_item_payment_state | Mark one sales open item as paid (PAID, with the payment date) or back to unpaid (UNPAID), through weclapp's updatePaymentState action |
weclapp_get_reference_record | Read one record of a weclapp reference list by its id, for an id another record points to: e.g. resource=tax with the taxId of an order… |
weclapp_list_notifications | List the weclapp notifications the API token can see: title, description, priority (NORMAL or CRITICAL), read flag and the record they are… |
weclapp_list_external_connections | List the external connections set up in weclapp (shops, marketplaces, shipping, payment and other integrations such as Shopify, Shopware… |
weclapp_get_external_connection | Get one weclapp external connection (shop, marketplace or service integration) by id: name and connectionType |
weclapp_list_active_sales_channels | List the sales channels active in this weclapp tenant: key (GROSS1, NET1 and so on) and the name shown in weclapp |
Example prompts
- "List all unpaid invoices over €1,000 that are past their due date."
- "Create a quotation for Müller GmbH with 20 units of article A5101 at the list price, and show it to me before saving."
- "Book 3 hours for me today on sales order SO-1042, note: installation on site."
- "Add a task for Anna to call ACME about their open quotation by Friday."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?